概览
本文主要讲解 mysql 的日志配置,以及介绍 mysql5.7 对于慢查询配置项的更新
日志分类
我们将开启以下三种日志:
- 错误日志:包含 mysql 启动时 / 运行时 / 停止时发生的错误
- 普通日志:包含 mysql 客户端连接 / 断开连接 / 执行查询操作的信息
- 慢查询日志:包含造成慢查询的 SQL 语句
我们不会开启 Binary Log, 因为它对服务器的硬件有很高要求,很影响数据库的性能,而且只在某些特点情况下有用(如:建立复制集,建立主 - 从模式,执行一些特殊的数据恢复操作等)。
实施
通过更改配置文件启用日志
这种方式需要重启服务器使变更生效,日志参数一般在 [mysqld] 部分进行配置。
打开 mysql 配置文件 my.cnf (在不同的发行版下位置不同,一般在 /etc 或者 /etc/mysql)
错误日志
打开 /etc/mysql/conf.d/mysqld_safe_syslog.cnf, 编辑为:
1 | [mysqld_safe] |
这是我们推荐的设置,将会使错误日志进入 syslog。如果不想让错误日志进入 syslog,可以注释或删除掉这一行,然后在 my.cnf 文件中新增下列配置项:
1 | [mysqld_safe] |
普通日志
在 [mysqld] 在添加下面几行(或者把注释取消掉):
1 | general_log_file = /var/log/mysql/mysql.log |
慢查询日志
在 [mysqld] 下添加以下配置(或者把注释取消掉):
1 | slow_query_log = 1 |
重启服务器
在更新配置后需要重启服务器:
- upstart:
$ service mysql restart
- systemd:
$ systemctl restart mysql.service
在运行中启用日志
从 mysql5.1 开始,日志可以在运行中启用
登录 mysql clinet, 在 在运行中启用日志:
1 | SET GLOBAL general_log = 'ON'; |
在运行中禁用日志:
1 | SET GLOBAL general_log = 'OFF'; |
日志轮转
为了防止日志文件过大,我们还需要启用日志轮转
Ubuntu
打开 /etc/logrotate.d/mysql-server
, 加入以下配置:
1 | # - I put everything in one block and added sharedscripts, so that mysql gets |
CentOS
打开 /etc/logrotate.d/mysql
, 加入以下配置:
1 | # The log file name and location can be set in |
检查日志配置
用 show variables like '%log%';
检查日志配置项:
1 | mysql> show variables like '%log%'; |
慢查询变量的更新
某些文章中介绍的启用慢查询日志的配置项为 log-slow-queries
, 在 mysql 5.5 中,这个配置项已经被弃用