
文/段晗
MySQL二进制日志简介
log_bin=/mysqldata/mysql_3306/log/mysql_bin
[root@host157 log]# lltotal 510184mysql_bin.000001mysql_bin.000002mysql_bin_index.indexmysqld.logmysqld.slow.logmysql_relay-group_replication_applier.000001mysql_relay-group_replication_applier.000002mysql_relay-group_replication_recovery.000001mysql_relay_index-group_replication_applier.indexmysql_relay_index-group_replication_recovery.index
Show master status;
MySQL二进制日志记录格式
全局参数修改:mysql>SET GLOBAL binlog_format=’STATEMENT’;单独会话参数修改:mysql>SET SESSION binlog_format=’ ROW’;
MySQL二进制日志解读
mysqlbinlog [options] mysql-bin.000032
--defaults-file=file_name #指定配置文件,读取其中的选项作为命令选项-R #从远程mysql服务器读取binlog-h=host_name #指定远程mysql服务器hostname-d=db_name #仅输出与指定的db相关的内容-o=N #跳过日志的前n行-u=username #指定数据库用户名-p=password #指定数据库密码-P=port_num #指定数据库端口-S=path #指定socket文件--server-id=id #指定一个服务器id,仅输出由该服务器发出的请求引起的事件--start-datetime=datetime #指定一个时间戳,仅输出晚于该时间发生的事件;该时间戳的格式应符合DATETIME数据类型的规范--stop-datetime=datetime #指定一个时间戳,仅输出早于该时间发生的事件;该时间戳的格式应符合DATETIME数据类型的规范--start-position=N #指定日志偏移量,仅输出该偏移量之后的事件--stop-position=N #指定日志偏移量,仅输出该偏移量之前的事件-v #适用于行记录格式的binlog,将行数据的变化转换为sql语句形式表现,便于解读
create database dhtest;use dhtest;create table test(t1 int,primary key(t1));insert into test values(1),(2);select * from test;
# at 479#200725 20:56:47 server id 1 end_log_pos 612 CRC32 0x8c2cb084 Query thread_id=557 exec_time=0 error_code=0 Xid = 12971use `dhtest`/*!*/;SET TIMESTAMP=1595681807/*!*/;/*!80013 SET @@session.sql_require_primary_key=0*//*!*/;create table test(t1 int,primary key(t1))/*!*/;......
# at 691#200725 20:56:47 server id 1 end_log_pos 768 CRC32 0xccc6b304 Query thread_id=557 exec_time=0 error_code=0SET TIMESTAMP=1595681807/*!*/;BEGIN/*!*/;# at 768# at 822#200725 20:56:47 server id 1 end_log_pos 874 CRC32 0x5e73b013 Table_map: `dhtest`.`test` mapped to number 196# at 874#200725 20:56:47 server id 1 end_log_pos 919 CRC32 0x50ac4e2e Write_rows: table id 196 flags: STMT_END_FBINLOG 'DywcXxMBAAAANAAAAGoDAAAAAMQAAAAAAAEABmRodGVzdAAEdGVzdAABAwAAAQEAE7BzXg==DywcXx4BAAAALQAAAJcDAAAAAMQAAAAAAAEAAgAB/wABAAAAAAIAAAAuTqxQ'/*!*/;# at 919#200725 20:56:47 server id 1 end_log_pos 950 CRC32 0xae736965 Xid = 12972COMMIT/*!*/;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*/;
BINLOG 'DywcXxMBAAAANAAAAGoDAAAAAMQAAAAAAAEABmRodGVzdAAEdGVzdAABAwAAAQEAE7BzXg==DywcXx4BAAAALQAAAJcDAAAAAMQAAAAAAAEAAgAB/wABAAAAAAIAAAAuTqxQ
mysqlbinlog -v mysql-bin.000032
BINLOG 'DywcXxMBAAAANAAAAGoDAAAAAMQAAAAAAAEABmRodGVzdAAEdGVzdAABAwAAAQEAE7BzXg==DywcXx4BAAAALQAAAJcDAAAAAMQAAAAAAAEAAgAB/wABAAAAAAIAAAAuTqxQ'/*!*/;### INSERT INTO `dhtest`.`test`### SET### @1=1### INSERT INTO `dhtest`.`test`### SET### @1=2
MySQL二进制日志用于数据恢复
mysqlbinlog mysql-bin.000032 | mysql -uroot -pDDB@w0rd
mysqlbinlog mysql-bin.000032 mysql-bin.000033 | mysql -uroot -pDDB@w0rd
mysqlbinlog --start-position=155 --stop-position=355 mysql-bin.000032 | mysql -uroot -pDDB@w0rd
mysqlbinlog -v --start-datetime=”2020-03-31 20:05:00” --stop-datetime=”2020-03-31 21:05:00” mysql-bin.000032
附录A 3.2节示例的binlog全部内容
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;DELIMITER /*!*/;# at 4#200725 20:42:33 server id 1 end_log_pos 124 CRC32 0xb69fcc3b Start: binlog v 4, server v 8.0.18 created 200725 20:42:33 at startup# Warning: this binlog is either in use or was not closed properly.ROLLBACK/*!*/;BINLOG 'uSgcXw8BAAAAeAAAAHwAAAABAAQAOC4wLjE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5KBxfEwANAAgAAAAABAAEAAAAYAAEGggAAAAICAgCAAAACgoKKioAEjQACgE7zJ+2'/*!*/;# at 124#200725 20:42:33 server id 1 end_log_pos 211 CRC32 0x974b5256 Previous-GTIDs# 8bcae1cb-9f34-11ea-9ae1-18022da9150d:22-5555257:6555254-6555511# at 211#200725 20:56:47 server id 1 end_log_pos 288 CRC32 0x4472cfbd Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=no original_committed_timestamp=1595681807301788 immediate_commit_timestamp=1595681807301788 transaction_length=191# original_commit_timestamp=1595681807301788 (2020-07-25 20:56:47.301788 CST)# immediate_commit_timestamp=1595681807301788 (2020-07-25 20:56:47.301788 CST)/*!80001 SET @@session.original_commit_timestamp=1595681807301788*//*!*/;/*!80014 SET @@session.original_server_version=80018*//*!*/;/*!80014 SET @@session.immediate_server_version=80018*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 288#200725 20:56:47 server id 1 end_log_pos 402 CRC32 0x2fb095be Query thread_id=557 exec_time=0 error_code=0 Xid = 12966SET TIMESTAMP=1595681807/*!*/;SET @@session.pseudo_thread_id=557/*!*/;SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;SET @@session.sql_mode=1168113696/*!*/;SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;/*!\C utf8mb4 *//*!*/;SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;SET @@session.lc_time_names=0/*!*/;SET @@session.collation_database=DEFAULT/*!*/;/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;/*!80016 SET @@session.default_table_encryption=0*//*!*/;create database dhtest/*!*/;# at 402#200725 20:56:47 server id 1 end_log_pos 479 CRC32 0xbd8a988d Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no original_committed_timestamp=1595681807498631 immediate_commit_timestamp=1595681807498631 transaction_length=210# original_commit_timestamp=1595681807498631 (2020-07-25 20:56:47.498631 CST)# immediate_commit_timestamp=1595681807498631 (2020-07-25 20:56:47.498631 CST)/*!80001 SET @@session.original_commit_timestamp=1595681807498631*//*!*/;/*!80014 SET @@session.original_server_version=80018*//*!*/;/*!80014 SET @@session.immediate_server_version=80018*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 479#200725 20:56:47 server id 1 end_log_pos 612 CRC32 0x8c2cb084 Query thread_id=557 exec_time=0 error_code=0 Xid = 12971use `dhtest`/*!*/;SET TIMESTAMP=1595681807/*!*/;/*!80013 SET @@session.sql_require_primary_key=0*//*!*/;create table test(t1 int,primary key(t1))/*!*/;# at 612#200725 20:56:47 server id 1 end_log_pos 691 CRC32 0x6dedb485 Anonymous_GTID last_committed=2 sequence_number=3 rbr_only=yes original_committed_timestamp=1595681807510585 immediate_commit_timestamp=1595681807510585 transaction_length=338/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;# original_commit_timestamp=1595681807510585 (2020-07-25 20:56:47.510585 CST)# immediate_commit_timestamp=1595681807510585 (2020-07-25 20:56:47.510585 CST)/*!80001 SET @@session.original_commit_timestamp=1595681807510585*//*!*/;/*!80014 SET @@session.original_server_version=80018*//*!*/;/*!80014 SET @@session.immediate_server_version=80018*//*!*/;SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;# at 691#200725 20:56:47 server id 1 end_log_pos 768 CRC32 0xccc6b304 Query thread_id=557 exec_time=0 error_code=0SET TIMESTAMP=1595681807/*!*/;BEGIN/*!*/;# at 768# at 822#200725 20:56:47 server id 1 end_log_pos 874 CRC32 0x5e73b013 Table_map: `dhtest`.`test` mapped to number 196# at 874#200725 20:56:47 server id 1 end_log_pos 919 CRC32 0x50ac4e2e Write_rows: table id 196 flags: STMT_END_FBINLOG 'DywcXxMBAAAANAAAAGoDAAAAAMQAAAAAAAEABmRodGVzdAAEdGVzdAABAwAAAQEAE7BzXg==DywcXx4BAAAALQAAAJcDAAAAAMQAAAAAAAEAAgAB/wABAAAAAAIAAAAuTqxQ'/*!*/;# at 919#200725 20:56:47 server id 1 end_log_pos 950 CRC32 0xae736965 Xid = 12972COMMIT/*!*/;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*/;
附录B 混合记录格式下服务器使用行记录格式记录binlog的条件


顾问:许国平 李湘宜
罗学平 刘德清 张刚
总编:孙鹏晖
美编:白羽
编辑:韩翠娟


长按二维码,关注我们吧!

-本文为“数风云”第21期文章;
-转载本公众号文章请联系我们;
-欢迎来稿:请按“题目-作者”格式命名发送到sunpenghui@abchina.com。

文章转载自数风云,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




