MySQL日志主要分4类:
我们可以在/var/log/mysql
查看MySQL的日志文件。
在MySQL命令行中flush logs
可以刷新日志。
注意:启动日志可能影响服务器性能,比如在一个查询频繁的数据库服务器上使用查询日志,日志需要大量存储空间,同时也会耗费时间。
二进制日志主要记录MySQL数据库的变化(更新数据库的语句),以及执行的时间信息,但不包含没有修改任何数据的语句。二进制日志主要用于数据库恢复,因为二进制日志包含备份后进行的所有更新。
图中是/etc/mysql/mysql.conf.d/mysqld.cnf
配置文件,我们把server-id
和log-bin
前的注释去掉,就打开二进制日志了。
server-id
这个值用于区分主数据库和备份数据库,不指定的话,MySQL启动会报错log-bin
打开这个选项就打开了二进制日志expire_logs_days
MySQL自动清除过期日志的时间max_binlog_size
单个日志文件的大小限制,如果超过该限制,就会生成一个新的日志文件,该值不能超过1GB或小于4096B注意:修改完配置文件后,应该重启MySQL服务
MySQL终端中运行该命名,可以查看当前有哪些日志文件:
show binary logs;
如图,现在我们有两个二进制日志文件。
我们可以使用mysqlbinlog工具查看二进制日志,例如:
mysqlbinlog /var/log/mysql/mysql-bin.000002
里面记录了SQL语句操作等内容。
MySQL终端中执行该语句,会删除所有二进制日志,并从编号000001重新开始记录日志。
reset master;
mysqlbinlog --no-defaults <binlog-file> | mysql -uroot -p
具体使用二进制日志恢复时,是有很多选项的,使用前请参看man
手册,上面命令只是举一个例子。
错误日志默认是开启的,不建议关闭。
错误日志位于/var/log/mysql/error.log
启动查询日志会严重影响数据库服务器性能,在配置文件中会有注释提示我们,它是performance killer
。但某些情况下,我们还是需要打开查询日志。
打开查询日志后,重启MySQL服务,我们试着插入进行一些数据操作,然后查看查询日志:
和之前一样,去掉配置文件中慢查询日志的注释即可打开慢查询日志功能。
long_query_time
慢查询的时间设置,单位是秒慢查询日志在/var/log/mysql/mysql-slow.log
。
注意:MySQL5.6以上版本如果按上面设置会报错,导致MySQL无法启动。新版本把log-slow-queries
改成slow-query-log-file
,还要加上slow_query_log = on
,否则用不了。我不知道这种改动有什么意义,更让人惊讶的是我在Ubuntu16.04安装的MySQL5.7自带的配置文件还是旧版本的,百度查了一下才解决了这个问题。