本文是一个朋友问我问题。从库使用mysqlbinlog --stop-datetime 的时候没有想要的记录。
本文简单记录这个问题:如果从库log_slave_updates开启,那么从库需要记录从库应用的Event,有如下特点:
从库binlog记录的应用主库的Event,其Event header timestamp是主库的时间。
从库binlog记录本地实例的Event,其Event header timestamp则是本地实例的时间。
从库binlog的format event和p gtid event则是本地实际的时间。
一、构造这样的binlog
# at 4
#190825 0:01:37 server id 953340 end_log_pos 123 CRC32 0x9409b3c9 Start: binlog v 4, server v 5.7.22-22-debug-log created 190825 0:01:37
# Warning: this binlog is either in use or was not closed properly.
BINLOG '
YV9hXQ/8iw4AdwAAAHsAAAABAAQANS43LjIyLTIyLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AcmzCZQ=
'/*!*/;
# at 123
#190825 0:01:37 server id 953340 end_log_pos 234 CRC32 0x483a41ac Previous-GTIDs
#