这篇文章主要介绍了MySQL中从库binlog如何使用mysqlbinlog stop-datetime过滤,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、构造这样的binlog

#at4#1908250:01:37serverid953340end_log_pos123CRC320x9409b3c9Start:binlogv4,serverv5.7.22-22-debug-logcreated1908250:01:37#Warning:thisbinlogiseitherinuseorwasnotclosedproperly.BINLOG'YV9hXQ/8iw4AdwAAAHsAAAABAAQANS43LjIyLTIyLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQAAcmzCZQ='/*!*/;#at123#1908250:01:37serverid953340end_log_pos234CRC320x483a41acPrevious-GTIDs#010fde77-2075-11e9-ba07-5254009862c0:16-40,#cb7ea36e-670f-11e9-b483-5254008138e4:94-104#at234#19072414:07:36serverid413340end_log_pos299CRC320x9294741bGTIDlast_committed=0sequence_number=1rbr_only=yes/*!50718SETTRANSACTIONISOLATIONLEVELREADCOMMITTED*//*!*/;SET@@SESSION.GTID_NEXT='cb7ea36e-670f-11e9-b483-5254008138e4:105'/*!*/;#at299#19072414:07:36serverid413340end_log_pos362CRC320x23ecd791Querythread_id=5exec_time=2714050error_code=0SETTIMESTAMP=1563948456/*!*/;SET@@session.pseudo_thread_id=5/*!*/;SET@@session.foreign_key_checks=1,@@session.sql_auto_is_null=0,@@session.unique_checks=1,@@session.autocommit=1/*!*/;SET@@session.sql_mode=524288/*!*/;SET@@session.auto_increment_increment=1,@@session.auto_increment_offset=1/*!*/;/*!\Cutf8*//*!*/;SET@@session.character_set_client=83,@@session.collation_connection=83,@@session.collation_server=33/*!*/;SET@@session.lc_time_names=0/*!*/;SET@@session.collation_database=DEFAULT/*!*/;BEGIN/*!*/;#at362#19072414:07:36serverid413340end_log_pos414CRC320x65673dabTable_map:`testmts`.`testwq`mappedtonumber110#at414#19072414:07:36serverid413340end_log_pos454CRC320xa368ded1Write_rows:tableid110flags:STMT_END_FBINLOG'qPU3XROcTgYANAAAAJ4BAAAAAG4AAAAAAAEAB3Rlc3RtdHMABnRlc3R3cQABAwABqz1nZQ==qPU3XR6cTgYAKAAAAMYBAAAAAG4AAAAAAAEAAgAB//4KAAAA0d5oow=='/*!*/;#at454#19072414:07:36serverid413340end_log_pos485CRC320x40df9d14Xid=44COMMIT/*!*/;

这个binlog是从库的binlog,Event header timestamp如下:

FORMAT_DESCRIPTION_EVENT:190825 0:01:37

PREVIOUS_GTIDS_LOG_EVENT:190825 0:01:37

以上两个Event都是从库binlog自己生成当然就是本实例的时间。

GTID_LOG_EVENT:190724 14:07:36

QUERY_EVENT:190724 14:07:36

MAP_EVENT:190724 14:07:36

WRITE_EVET:190724 14:07:36

XID_EVENT:190724 14:07:36

他们都是主库语句命令发起的时间。

如果这个时候我们使用stop-datetime=‘2019-07-25 00:00:00’ 不会解析到这个事务。原因在于FORMAT_DESCRIPTION_EVENT的时间超过了这个时间直接退出了。

源码如下:

debug如下:

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL中从库binlog如何使用mysqlbinlog stop-datetime过滤”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!