当前位置:Gxlcms > mysql > MySQL主库binlog(master-log)与从库relay-log关系代码详解

MySQL主库binlog(master-log)与从库relay-log关系代码详解

时间:2021-07-01 10:21:17 帮助过:52人阅读

主库binlog:

  1. # at 2420
  2. #170809 17:16:20 server id 1882073306 end_log_pos 2451 CRC32 0x58f2db87 Xid = 32880
  3. COMMIT/*!*/;
  4. # at 2451
  5. #170814 11:07:18 server id 1882073306 end_log_pos 2528 CRC32 0x40774a4b Query thread_id=92 exec_time=0 error_code=0
  6. SET TIMESTAMP=1502680038/*!*/;
  7. BEGIN
  8. /*!*/;
  9. # at 2528
  10. # at 2560
  11. #170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
  12. SET INSERT_ID=107/*!*/;
  13. #170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Query thread_id=92 exec_time=0 error_code=0
  14. SET TIMESTAMP=1502680038/*!*/;
  15. insert into t2 (name) values ('a100')
  16. /*!*/;
  17. # at 2669
  18. # at 2701
  19. #170814 11:07:27 server id 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
  20. SET INSERT_ID=108/*!*/;
  21. #170814 11:07:27 server id 1882073306 end_log_pos 2810 CRC32 0x78466d7b Query thread_id=92 exec_time=0 error_code=0
  22. SET TIMESTAMP=1502680047/*!*/;
  23. insert into t2 (name) values ('a200')
  24. /*!*/;
  25. # at 2810
  26. # at 2842
  27. #170814 11:07:30 server id 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
  28. SET INSERT_ID=109/*!*/;
  29. #170814 11:07:30 server id 1882073306 end_log_pos 2951 CRC32 0xebeb947c Query thread_id=92 exec_time=0 error_code=0
  30. SET TIMESTAMP=1502680050/*!*/;
  31. insert into t2 (name) values ('a300')
  32. /*!*/;
  33. # at 2951
  34. #170814 11:07:34 server id 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
  35. COMMIT/*!*/;

从库relay-log:

  1. /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  2. /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  3. /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  4. DELIMITER /*!*/;
  5. # at 4
  6. #170809 17:17:24 server id 1882083306 end_log_pos 120 CRC32 0x5df4221c Start: binlog v 4, server v 5.6.23-72.1-log created 170809 17:17:24
  7. # at 120
  8. #700101 8:00:00 server id 1882073306 end_log_pos 0 CRC32 0x0b8a412f Rotate to test-mysql-bin.000116 pos: 2451
  9. # at 172
  10. #170809 16:28:12 server id 1882073306 end_log_pos 0 CRC32 0xd0d3bf30 Start: binlog v 4, server v 5.6.23-72.1-log created 170809 16:28:12
  11. # at 288
  12. #170814 11:07:18 server id 1882073306 end_log_pos 2528 CRC32 0x40774a4b Query thread_id=92 exec_time=0 error_code=0
  13. SET TIMESTAMP=1502680038/*!*/;
  14. SET @@session.pseudo_thread_id=92/*!*/;
  15. SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
  16. SET @@session.sql_mode=1073741824/*!*/;
  17. SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
  18. /*!\C utf8 *//*!*/;
  19. SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
  20. SET @@session.lc_time_names=0/*!*/;
  21. SET @@session.collation_database=DEFAULT/*!*/;
  22. BEGIN
  23. /*!*/;
  24. # at 365
  25. # at 397
  26. #170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
  27. SET INSERT_ID=107/*!*/;
  28. #170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Query thread_id=92 exec_time=0 error_code=0
  29. use `db1`/*!*/;
  30. SET TIMESTAMP=1502680038/*!*/;
  31. insert into t2 (name) values ('a100')
  32. /*!*/;
  33. # at 506
  34. # at 538
  35. #170814 11:07:27 server id 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
  36. SET INSERT_ID=108/*!*/;
  37. #170814 11:07:27 server id 1882073306 end_log_pos 2810 CRC32 0x78466d7b Query thread_id=92 exec_time=0 error_code=0
  38. SET TIMESTAMP=1502680047/*!*/;
  39. insert into t2 (name) values ('a200')
  40. /*!*/;
  41. # at 647
  42. # at 679
  43. #170814 11:07:30 server id 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
  44. SET INSERT_ID=109/*!*/;
  45. #170814 11:07:30 server id 1882073306 end_log_pos 2951 CRC32 0xebeb947c Query thread_id=92 exec_time=0 error_code=0
  46. SET TIMESTAMP=1502680050/*!*/;
  47. insert into t2 (name) values ('a300')
  48. /*!*/;
  49. # at 788
  50. #170814 11:07:34 server id 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
  51. COMMIT/*!*/;

注意relay log的这一行:

#700101  8:00:00 server id 1882073306  end_log_pos 0 CRC32 0x0b8a412f  Rotate to test-mysql-bin.000116  pos: 2451

说明此relay log保存的是主库 test-mysql-bin.000116 的信息,从position 2451 开始。

看一个具体的对应关系:

主库的binlog如下:

  1. # at 2560
  2. #170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
  3. SET INSERT_ID=107/*!*/;
  4. #170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Query thread_id=92 exec_time=0 error_code=0
  5. SET TIMESTAMP=1502680038/*!*/;
  6. insert into t2 (name) values ('a100')
  7. /*!*/;
  8. # at 2669

对应从库relay-log如下几行:

  1. # at 397
  2. #170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
  3. SET INSERT_ID=107/*!*/;
  4. #170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8 Query thread_id=92 exec_time=0 error_code=0
  5. use `db1`/*!*/;
  6. SET TIMESTAMP=1502680038/*!*/;
  7. insert into t2 (name) values ('a100')
  8. /*!*/;
  9. # at 506

另外注意show slave status\G的以下几行的关系:

  1. Master_Log_File: test-mysql-bin.000117
  2. Read_Master_Log_Pos: 774

上面二行代表IO线程,相对于主库

  1. Relay_Log_File: relay-log.000038
  2. Relay_Log_Pos: 723

上面二行代表了sql线程,相对于从库

  1. Relay_Master_Log_File: test-mysql-bin.000117
  2. Exec_Master_Log_Pos: 555

上面二行代表了sql线程,相对主库

其中Relay_Log_Pos: 723 和 Exec_Master_Log_Pos: 555 对应的sql语句一致。

总结

以上就是本文关于MySQL主库binlog与从库relay-log关系代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:mysql中binlog_format模式与配置详细分析、几个比较重要的MySQL变量、MySQL prepare原理详解等,有什么问题可以随时留言,欢迎大家交流讨论。

您可能感兴趣的文章:

  • mysql binlog(二进制日志)查看方法
  • mysql如何利用binlog进行数据恢复详解
  • Mysql Binlog数据查看的方法详解
  • mysql中binlog_format模式与配置详细分析
  • Mysql误操作后利用binlog2sql快速回滚的方法详解
  • mysql 正确清理binlog日志的两种方法
  • mysql开启binlog步骤讲解

人气教程排行