使用mysqlbinlog查看二进制日志文件
# mysqlbinlog --help 帮助文档
常用选项:
-d, --database=name
指定数据库名称,只列出指定的数据库相关操作
-o, --offset=number
忽略掉日志中的前number行
-r, --result-file=name
将输出的文本格式日志输出到指定文件
-s, --short-form
显示简单格式,省略掉一些信息
--set-charset=char-name
在输出为文本格式时,在文件第一行加上set names char-name,这个选项在某些情况下装载数据时非常有用
--start-datetime=name --stop-datetime=name
指定日期间隔内的所有日志
--start-position=# --stop-position=#
指定位置间隔内的所有日志
[root@db02 data]# ls mysql_bin.0* mysql_bin.000001 mysql_bin.000002
使用cat查看都是乱码的,要使用mysqlbinlog
[root@db02 data]# cat mysql_bin.000001 \þbinŔ̚tx5.6.36-logŔ̚8 n¯±̚ @std!!!testBEGINC)¯±̚.턁teststunد±̚ 2 Fÿþþþǒ꯱̚?Y -* ²̚ @std!!!testBEGIN¯ ²̚.µFteststu ²̚(ہFÿþ䃮 ²̚ p²̚H @std!!!testBEGINH²̚.rFteststuսݴp²̚(Fÿp²̚¹c0¦ºxp²̚ @std!!!testBEGIN䈍̚./FteststuM¤ް²̚(WFÿþ鈪9p²̚veؚZH @std!!!testBEGINc ,²̚.ꂆteststun0®S²̚(Fÿþ²̚3k{\˗²̚H @std!!!testBEGIN§Z[²̚.©Fteststu²̚(τFÿþp6*²̚h
[root@db02 data]# mysqlbinlog mysql_bin.000001
[root@db02 data]# mysqlbinlog mysql_bin.000001 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #180411 12:53:25 server id 1 end_log_pos 120 CRC32 0x6ed142e0 Start: binlog v 4, server v 5.6.36-log created 180411 12:53:25 at startup ROLLBACK/*!*/; ....................
-d 只显示对test数据库的操作日志
[root@db02 data]# mysqlbinlog -d test mysql_bin.000001
-o选项 忽略前3个操作
[root@db02 data]# mysqlbinlog mysql_bin.000002 -o 3
截取指定日期之间的日志
显示两个时间点之间的日志2018/04/11 15:00:45 ~ 2018/04/11 15:01:35
[root@db02 data]# mysqlbinlog mysql_bin.000001 --start-datetime='2018/04/11 15:00:45' --stop-datetime='2018/04/11 15:01:35'
开始日期和结束日期可以只写一个;
如果只写开始日期,表示范围是开始日期到日志结束;
如果只写结束日期,表示范围是日志开始到指定的日期结束
截取指定位置之间的日志
--start-position=1903 --stop-position=2020
[root@db02 data]# mysqlbinlog mysql_bin.000001 --start-position=1903 --stop-position=2020
注:此博文仅供参考!
参考书籍:《深入浅出MySQL 数据库开发、优化与管理维护》(第二版)