MySQL主库binlog(master-log)与从库relay-log关系代码详解
主库binlog:
#at2420 #17080917:16:20serverid1882073306end_log_pos2451CRC320x58f2db87Xid=32880 COMMIT/*!*/; #at2451 #17081411:07:18serverid1882073306end_log_pos2528CRC320x40774a4bQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680038/*!*/; BEGIN /*!*/; #at2528 #at2560 #17081411:07:18serverid1882073306end_log_pos2560CRC320x7bdf274bIntvar SETINSERT_ID=107/*!*/; #17081411:07:18serverid1882073306end_log_pos2669CRC320x68e441c8Querythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680038/*!*/; insertintot2(name)values('a100') /*!*/; #at2669 #at2701 #17081411:07:27serverid1882073306end_log_pos2701CRC320xcf89b910Intvar SETINSERT_ID=108/*!*/; #17081411:07:27serverid1882073306end_log_pos2810CRC320x78466d7bQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680047/*!*/; insertintot2(name)values('a200') /*!*/; #at2810 #at2842 #17081411:07:30serverid1882073306end_log_pos2842CRC320x1e5a0847Intvar SETINSERT_ID=109/*!*/; #17081411:07:30serverid1882073306end_log_pos2951CRC320xebeb947cQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680050/*!*/; insertintot2(name)values('a300') /*!*/; #at2951 #17081411:07:34serverid1882073306end_log_pos2982CRC320x6436ad60Xid=32934 COMMIT/*!*/;
从库relay-log:
/*!50530SET@@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019SET@@session.max_insert_delayed_threads=0*/; /*!50003SET@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER/*!*/; #at4 #17080917:17:24serverid1882083306end_log_pos120CRC320x5df4221cStart:binlogv4,serverv5.6.23-72.1-logcreated17080917:17:24 #at120 #7001018:00:00serverid1882073306end_log_pos0CRC320x0b8a412fRotatetotest-mysql-bin.000116pos:2451 #at172 #17080916:28:12serverid1882073306end_log_pos0CRC320xd0d3bf30Start:binlogv4,serverv5.6.23-72.1-logcreated17080916:28:12 #at288 #17081411:07:18serverid1882073306end_log_pos2528CRC320x40774a4bQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680038/*!*/; SET@@session.pseudo_thread_id=92/*!*/; SET@@session.foreign_key_checks=1,@@session.sql_auto_is_null=0,@@session.unique_checks=1,@@session.autocommit=1/*!*/; SET@@session.sql_mode=1073741824/*!*/; SET@@session.auto_increment_increment=1,@@session.auto_increment_offset=1/*!*/; /*!\Cutf8*//*!*/; 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/*!*/; BEGIN /*!*/; #at365 #at397 #17081411:07:18serverid1882073306end_log_pos2560CRC320x7bdf274bIntvar SETINSERT_ID=107/*!*/; #17081411:07:18serverid1882073306end_log_pos2669CRC320x68e441c8Querythread_id=92exec_time=0error_code=0 use`db1`/*!*/; SETTIMESTAMP=1502680038/*!*/; insertintot2(name)values('a100') /*!*/; #at506 #at538 #17081411:07:27serverid1882073306end_log_pos2701CRC320xcf89b910Intvar SETINSERT_ID=108/*!*/; #17081411:07:27serverid1882073306end_log_pos2810CRC320x78466d7bQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680047/*!*/; insertintot2(name)values('a200') /*!*/; #at647 #at679 #17081411:07:30serverid1882073306end_log_pos2842CRC320x1e5a0847Intvar SETINSERT_ID=109/*!*/; #17081411:07:30serverid1882073306end_log_pos2951CRC320xebeb947cQuerythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680050/*!*/; insertintot2(name)values('a300') /*!*/; #at788 #17081411:07:34serverid1882073306end_log_pos2982CRC320x6436ad60Xid=32934 COMMIT/*!*/;
注意relaylog的这一行:
#700101 8:00:00serverid1882073306 end_log_pos0CRC320x0b8a412f Rotatetotest-mysql-bin.000116 pos:2451
说明此relaylog保存的是主库test-mysql-bin.000116的信息,从position2451开始。
看一个具体的对应关系:
主库的binlog如下:
#at2560 #17081411:07:18serverid1882073306end_log_pos2560CRC320x7bdf274bIntvar SETINSERT_ID=107/*!*/; #17081411:07:18serverid1882073306end_log_pos2669CRC320x68e441c8Querythread_id=92exec_time=0error_code=0 SETTIMESTAMP=1502680038/*!*/; insertintot2(name)values('a100') /*!*/; #at2669
对应从库relay-log如下几行:
#at397 #17081411:07:18serverid1882073306end_log_pos2560CRC320x7bdf274bIntvar SETINSERT_ID=107/*!*/; #17081411:07:18serverid1882073306end_log_pos2669CRC320x68e441c8Querythread_id=92exec_time=0error_code=0 use`db1`/*!*/; SETTIMESTAMP=1502680038/*!*/; insertintot2(name)values('a100') /*!*/; #at506
另外注意showslavestatus\G的以下几行的关系:
Master_Log_File:test-mysql-bin.000117 Read_Master_Log_Pos:774
上面二行代表IO线程,相对于主库
Relay_Log_File:relay-log.000038 Relay_Log_Pos:723
上面二行代表了sql线程,相对于从库
Relay_Master_Log_File:test-mysql-bin.000117 Exec_Master_Log_Pos:555
上面二行代表了sql线程,相对主库
其中Relay_Log_Pos:723和Exec_Master_Log_Pos:555对应的sql语句一致。
总结
以上就是本文关于MySQL主库binlog与从库relay-log关系代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:mysql中binlog_format模式与配置详细分析、几个比较重要的MySQL变量、MySQLprepare原理详解等,有什么问题可以随时留言,欢迎大家交流讨论。