博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 行复制
阅读量:5980 次
发布时间:2019-06-20

本文共 743 字,大约阅读时间需要 2 分钟。

  MySQL基于行的复制可以最大化保证主从复制的一致性,对于RBR(基于行复制) 和SBR(基于语句复制),相信大家已经很熟知,下面记录的是行复制在二进制日志总记录的情况。

      基于行的复制是与位置相关的,binlog里面只记录相关表发生改变的列的数据。其中引入了四个新的事件: Table_map, Write_rows,Delete_rows,Update_rows.

      一条语句执行后,在binlog里面,Table_map事件中包含表ID,和列的类型(没有列名,slave 可以利用这些信息对比和master上的表结构是否一致),后面跟着其他三个事件,结束标志为STMT_END_F.

      事件在slave 端执行过程:

      1、SQL线程从中继日中读取各个事件。

      2、对与Table_map事件,SQL线程将提取出表信息,保存表的定义

      3、锁定要改变的表,并检查master和slave上表结构是否一致。

      4、如果表schema不一致,则停止复制,否则继续执行行事件,直至遇到结束标志符:STMT_END_F.

       对于Update_rows和Delete_rows事件,SQL线程要先定位到具体的行,查找操作的步骤:

       1、主键或者

        优先选择slave上的主键。这是最好的办法。当找到匹配的主键值的时候,就认为已经找到匹配的行,行的其他列的内容则不去匹配。

       2、非空唯一索引扫描

        这个也只比较键值

       3、其他索引或者全表扫描

        此时会比较整个行的数据在master和slave上是否一致(确实能保证主从复制的一致性,但也是最慢的)

        具体测试数据请参考 

本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/973041,如需转载请自行联系原作者

你可能感兴趣的文章
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
SASS初学者入门(转)
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
钱趣多风控新举措:源头选择与物理隔离
查看>>
烂泥:kickstart无人值守安装CentOS6.5
查看>>
Windows Phone 8 开发资源汇总
查看>>
互联网趋势关键词:交流,为价值付费,资源整合
查看>>
阿里钉钉,马云旗下的又一个千亿美金产品?
查看>>
熟练掌握Word2003中的突出显示功能
查看>>
Git:配置
查看>>
神经系统知识普及
查看>>
Spring可扩展Schema标签
查看>>
c++ STL unique , unique_copy函数
查看>>