如何读取mysql的binlog?
可以使用mysql默认的mysqlbinlog
重要的是需要加v
命令
mysqlbinlog -v mysql-bin.000006
你会看到具体的sql了,我这里的sql是
#210311 14:51:10 server id 1 end_log_pos 1606 CRC32 0x783f56ab Query thread_id=64 exec_time=0 error_code=0
SET TIMESTAMP=1615445470/*!*/;
BEGIN
/*!*/;
# at 1606
#210311 14:51:10 server id 1 end_log_pos 1672 CRC32 0x52632df5 Table_map: `user_db`.`tb_user` mapped to number 119
# at 1672
#210311 14:51:10 server id 1 end_log_pos 1783 CRC32 0xf565f574 Update_rows: table id 119 flags: STMT_END_F
BINLOG '
3r1JYBMBAAAAQgAAAIgGAAAAAHcAAAAAAAEAB3VzZXJfZGIAB3RiX3VzZXIABgMPDw8BDwgUAEAA
FAAyADj1LWNS
3r1JYB8BAAAAbwAAAPcGAAAAAHcAAAAAAAEAAgAG///AYAAAAAI5NgYxMjM0NTYFOTk5OTcSD3po
YW5nc2FuQGJ1Zy5jbsBgAAAAATUGMTIzNDU2BTk5OTk3Eg96aGFuZ3NhbkBidWcuY2509WX1
'/*!*/;
### UPDATE `user_db`.`tb_user`
### WHERE
### @1=96
### @2='96'
### @3='123456'
### @4='99997'
### @5=18
### @6='zhangsan@bug.cn'
### SET
### @1=96
### @2='5'
### @3='123456'
### @4='99997'
### @5=18
### @6='zhangsan@bug.cn'
# at 1783
#210311 14:51:10 server id 1 end_log_pos 1814 CRC32 0xa90279ec Xid = 1794
COMMIT/*!*/;
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*/;
协议流程
COM_BINLOG_DUMP -> com_binlog_dump
相关阅读
https://www.cnblogs.com/netsa/p/7350629.html https://dev.mysql.com/doc/internals/en/replication-protocol.html