AI智能
改变未来

使用mysqlbinlog查看二进制日志

(一)mysqlbinlog工具介绍

binlog类型是二进制的,也就意味着我们没法直接打开看,MySQL提供了mysqlbinlog来查看二进制日志,该工具类似于Oracle的logminer。mysqlbinlog用法为

[root@masterdb binlog]# mysqlbinlogUsage: mysqlbinlog [options] log-files

其中,常用的option选项如下:

option 作用
-d , –database=name 只列出指定数据库的操作
-o , –offset = n 忽略日志前n行
-r , –result-file=name 将输出的文本格式日志保存到文件
-v
-vv
-v  :从binlog中重建sql语句
-vv:显示的SQL语句增加了注释,可以理解为-v的增强
–start-datetime=datetime
–stop-datetime=datetime
指定日期间隔内的所有日志
–start-position=position
–stop-position=position
指定位置间隔内的所有日志

(二)mysqlbinlog使用例子

(1)提取指定的binlog日志

mysqlbinlog /home/mysql/data/ins3308/binlog.000018

(2)提取指定position位置的binlog日志

mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018

(3)提取指定position位置的binlog日志并输出到压缩文件

mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 |gzip >extra_01.sql.gz

(4)提取指定position位置的binlog日志导入数据库

mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 | mysql -uroot -p

(5)提取指定开始时间的binlog并输出到日志文件

mysqlbinlog --start-datetime=\"2017-08-14 10:00:00\" /home/mysql/data/ins3308/binlog.000018 --result-file=extra02.sql

(6)提取指定位置的多个binlog日志文件

mysqlbinlog --start-position=120 --stop-position=332 /home/mysql/data/ins3308/binlog.000018 /home/mysql/data/ins3308/binlog.000019|more

(7)提取指定数据库binlog并转换字符集到UTF8

mysqlbinlog --database=test --set-charset=utf8 /home/mysql/data/ins3308/binlog.000018 /home/mysql/data/ins3308/binlog.000019 >test.sql

(8)远程提取日志,指定结束时间

mysqlbinlog -uroot -p -h192.168.10.11 -P3308 --stop-datetime=\"2017-08-14 10:00:00\" --read-from-remote-server binlog.000018 |more

(9)远程提取使用row格式的binlog日志并输出到本地文件

mysqlbinlog -uroot -p -P3308 -h192.168.10.11 --read-from-remote-server -vv binlog.000018 >row.sql

(三)mysqlbinlog提取日志样例

例子1:使用–start-datetime和–stop-datetime显示2020年2月12日23:30到2020年2月12日23:50的日志

[root@masterdb binlog]# mysqlbinlog master-bin.000025 --start-datetime=\'2020-02-12 23:30:00\' --stop-datetime=\'2020-02-12:23:50:00\'/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;DELIMITER /*!*/;# at 4#200212 23:40:10 server id 1  end_log_pos 123 CRC32 0xfc4fd0fc     Start: binlog v 4, server v 5.7.24-log created 200212 23:40:10 at startup# Warning: this binlog is either in use or was not closed properly.ROLLBACK/*!*/;BINLOG \'WhxEXg8BAAAAdwAAAHsAAAABAAQANS43LjI0LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaHEReEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQAAfzQT/w=\'/*!*/;# at 123#200212 23:40:10 server id 1  end_log_pos 154 CRC32 0x3dc8c184     Previous-GTIDs# [empty]# at 154#200212 23:40:46 server id 1  end_log_pos 219 CRC32 0x12bba458     Anonymous_GTID    last_committed=0    sequence_number=1    rbr_only=noSET @@SESSION.GTID_NEXT= \'ANONYMOUS\'/*!*/;# at 219#200212 23:40:46 server id 1  end_log_pos 315 CRC32 0x5ed83729     Query    thread_id=3    exec_time=0    error_code=0use `db1`/*!*/;SET TIMESTAMP=1581522046/*!*/;SET @@session.pseudo_thread_id=3/*!*/;SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;SET @@session.sql_mode=1436549152/*!*/;SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;/*!\\C utf8 *//*!*/;SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;SET @@session.lc_time_names=0/*!*/;SET @@session.collation_database=DEFAULT/*!*/;create table t1(id int )/*!*/;SET @@SESSION.GTID_NEXT= \'AUTOMATIC\' /* added by mysqlbinlog */ /*!*/;DELIMITER ;# End of log file/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 使用mysqlbinlog查看二进制日志