01. mysqlbinlog 日志管理
由于服务器生成的二进制日志文件以二进制格式保存,所以如果想检查这些文件的文本格式,就会用到 mysqlbinlog 日志管理工具。更多的选项使用 mysqlbinlog --help 查看。
-d, --database=name 指定数据库名称,只列出指定的数据库相关操作
-o, --offset=n 忽略日志中的前n行命令
-r, --result-file=name 将输出的文本格式日志输出到指定文件
-s, --short-form 显示简单格式,省略掉一些信息
--set-charset=char-name 输出为文本格式时,在文件第一行加上 set names char-name,这个选项在某些情况下装载数据时非常有用
--start-datetime=name 指定日期间隔开始位置,开始输出日志
--stop-datetime=name 指定日期间隔停止位置,停止输出日志
--start-position=N1 指定位置间隔开始位置,开始输出日志
--stop-position=N2 指定位置间隔停止位置,停止输出日志
显示日志全部内容
[root@ufo128 mysql]# mysqlbinlog ib_logfile0
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ERROR: File is not a binary log file.
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ERROR: File is not a binary log file.
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
加-d,显示某个数据库的操作日志
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -d test
结合过滤,查看对某张表的操作
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -d test | grep AAA | more
加-o,忽略掉前n个操作
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -o 3
加-r,将结果输出到文件
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -o 3 -r output.log
加-s,精简显示
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -d test -s
显示时间间隔内的日志
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -d test --start-datetime='2021/02/17 00:00:00' --stop-datetime='2021/02/18 00:00:00'
显示位置间隔内的日志
[root@ufo128 mysql]# mysqlbinlog -vv ib_logfile0 -d test --start-position=4 --stop-position=196