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

 更新时间:2017年10月12日 11:50:51   作者:遥望青春  
这篇文章主要介绍了MySQL主库binlog与从库relay-log关系的相关内容,涉及部分代码,需要的朋友可以参考。

主库binlog:

# at 2420
#170809 17:16:20 server id 1882073306 end_log_pos 2451 CRC32 0x58f2db87  Xid = 32880
COMMIT/*!*/;
# at 2451
#170814 11:07:18 server id 1882073306 end_log_pos 2528 CRC32 0x40774a4b  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680038/*!*/;
BEGIN
/*!*/;
# at 2528
# at 2560
#170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b  Intvar
SET INSERT_ID=107/*!*/;
#170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680038/*!*/;
insert into t2 (name) values ('a100')
/*!*/;
# at 2669
# at 2701
#170814 11:07:27 server id 1882073306 end_log_pos 2701 CRC32 0xcf89b910  Intvar
SET INSERT_ID=108/*!*/;
#170814 11:07:27 server id 1882073306 end_log_pos 2810 CRC32 0x78466d7b  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680047/*!*/;
insert into t2 (name) values ('a200')
/*!*/;
# at 2810
# at 2842
#170814 11:07:30 server id 1882073306 end_log_pos 2842 CRC32 0x1e5a0847  Intvar
SET INSERT_ID=109/*!*/;
#170814 11:07:30 server id 1882073306 end_log_pos 2951 CRC32 0xebeb947c  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680050/*!*/;
insert into t2 (name) values ('a300')
/*!*/;
# at 2951
#170814 11:07:34 server id 1882073306 end_log_pos 2982 CRC32 0x6436ad60  Xid = 32934
COMMIT/*!*/;

从库relay-log:

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#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
# at 120
#700101 8:00:00 server id 1882073306 end_log_pos 0 CRC32 0x0b8a412f Rotate to test-mysql-bin.000116 pos: 2451
# at 172
#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
# at 288
#170814 11:07:18 server id 1882073306 end_log_pos 2528 CRC32 0x40774a4b  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=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/*!*/;
/*!\C utf8 *//*!*/;
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
/*!*/;
# at 365
# at 397
#170814 11:07:18 server id 1882073306 end_log_pos 2560 CRC32 0x7bdf274b  Intvar
SET INSERT_ID=107/*!*/;
#170814 11:07:18 server id 1882073306 end_log_pos 2669 CRC32 0x68e441c8  Query thread_id=92 exec_time=0 error_code=0
use `db1`/*!*/;
SET TIMESTAMP=1502680038/*!*/;
insert into t2 (name) values ('a100')
/*!*/;
# at 506
# at 538
#170814 11:07:27 server id 1882073306 end_log_pos 2701 CRC32 0xcf89b910  Intvar
SET INSERT_ID=108/*!*/;
#170814 11:07:27 server id 1882073306 end_log_pos 2810 CRC32 0x78466d7b  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680047/*!*/;
insert into t2 (name) values ('a200')
/*!*/;
# at 647
# at 679
#170814 11:07:30 server id 1882073306 end_log_pos 2842 CRC32 0x1e5a0847  Intvar
SET INSERT_ID=109/*!*/;
#170814 11:07:30 server id 1882073306 end_log_pos 2951 CRC32 0xebeb947c  Query thread_id=92 exec_time=0 error_code=0
SET TIMESTAMP=1502680050/*!*/;
insert into t2 (name) values ('a300')
/*!*/;
# at 788
#170814 11:07:34 server id 1882073306 end_log_pos 2982 CRC32 0x6436ad60  Xid = 32934
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如下:

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

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

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

另外注意show slave status\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变量MySQL prepare原理详解等,有什么问题可以随时留言,欢迎大家交流讨论。

相关文章

  • MySQL8.0 MGR的维护管理

    MySQL8.0 MGR的维护管理

    数据库已成为企业和管理员们最为关注的核心组件之一,本文主要介绍了MySQL8.0 MGR的维护管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 查看mysql当前连接数的方法详解

    查看mysql当前连接数的方法详解

    这篇文章主要介绍了查看mysql当前连接数的方法详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    很多朋友刚使用联合查询UNION的时候常常会理所当然的将联合查询理解为把没一个子查询的结果集组合成一个大的结果集
    2014-04-04
  • MySQL定义异常和异常处理详解

    MySQL定义异常和异常处理详解

    这篇文章主要为大家详细介绍了MySQL定义异常和异常处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • MySQL查询倒数第二条记录实现方法

    MySQL查询倒数第二条记录实现方法

    这篇文章主要介绍了MySQL查询倒数第二条记录实现方法,本文直接给出代码实例,重要部分已经加红提示,需要的朋友可以参考下
    2015-05-05
  • 教你3个步骤为Mysql添加只读账号

    教你3个步骤为Mysql添加只读账号

    只要公司有数据团队的那免不了让这帮家伙把全公司的数据库数据都摸一遍,但是要是直接把root用户给了他们有点危险,于是只能给设权限,这篇文章主要给大家介绍了关于如何通过3个步骤为Mysql添加只读账号的相关资料,需要的朋友可以参考下
    2023-12-12
  • 详细介绍基于MySQL的搜索引擎MySQL-Fullltext

    详细介绍基于MySQL的搜索引擎MySQL-Fullltext

    这篇文章主要详细介绍基于MySQL的搜索引擎MySQL-Fullltext,需要用到C和C#以及JavaScript的知识,属于MySQL的高阶应用,需要的朋友可以参考下
    2015-04-04
  • 网站前端和后台性能优化的34条宝贵经验和方法

    网站前端和后台性能优化的34条宝贵经验和方法

    网站前端和后台性能优化的34条宝贵经验和方法,相关网页技术人员,需要注意的地方。
    2011-05-05
  • MySQL Workbench基本用法超详细教程

    MySQL Workbench基本用法超详细教程

    本文详细讲解了MySQL Workbench基本用法,本文通过图文实例相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • MySQL中CURRENT_TIMESTAMP时间戳的使用详解

    MySQL中CURRENT_TIMESTAMP时间戳的使用详解

    这篇文章主要给大家介绍了关于MySQL中CURRENT_TIMESTAMP时间戳的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03

最新评论