概览
本文主要讲解 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 中,这个配置项已经被弃用