MySQL日志更多内容请查看我另一篇文章://www.greatytc.com/p/971676d3edfb
前提
查看日志的前提自然是要保证数据库开启了日志,开始操作前我们需要检查 MySQL 的 log-bin 参数,ON 表示已开启日志,OFF 表示未开启(如果该参数为 OFF,那么可以放弃此次日志查看操作了,之前的操作并没有日志记录),操作如下(mysql命令行中执行):
show variables like 'log_bin';
操作
MySQL 的日志查看是通过官方提供的 mysqlbinlog 工具进行的,mysqlbinlog 可以将日志中的内容打印到控制台,配合操作系统的命令可以将其输出到指定文件,此文中以 CentOS 为例,具体操作分以下几步:
-
确定日志文件位置
通过 /etc/my.cnf (默认安装后 MySQL 配置文件位置,如果手动指定可通过 find / -name 'my.cnf'来查找)中配置的 log-bin 参数来确定二进制文件位置,日志路径下通常有多个日志文件,其中编号最大的一般为最新的文件,可通过以下命令行查看当前日志文件(mysql命令行中执行):
show master logs; show master status;
-
输出文件内容
通过 mysqlbinlog 将文件内容输出到指定文件,之后便可以使用普通编辑器打开了,当然也可以在当前控制台直接查看,不过格式可能较为混乱,交易输出文件后下载查看,文件中包含了所有的DDL和DML语句,但不包含select语句,因为其对数据并没有做任何修改,命令如下(系统控制台中执行):
# 直接查看
mysqlbinlog mysql-bin.*****(日志文件号)
# 输出到指定文件
mysqlbinlog mysql-bin.***** > mysqllog.log
# 指定时间段输出
mysqlbinlog --start-datetime '2019-01-08 00:00:00' --stop-datetime '2019-01-08 01:00:00' mysql-bin.***** > mysqllog.log
如果执行过程出现以下提示,可暂时添加 --no-defaults 参数跳过检查
mysqlbinlog:[ERROR] unknown variable 'default-character-set=utf8'