Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

AI人工智能学习大礼包

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

《MySQL大智小技》1 PDF 下载


分享到:
时间:2024-03-14 10:22来源:http://www.java1234.com 作者:转载  侵权举报
《MySQL大智小技》1
失效链接处理
《MySQL大智小技》1 PDF 下载
 
 
相关截图:
 


主要内容:

【缺陷分析】半同步下多从库复制异常
本文分析的缺陷是 MySQL bug#89370,其主要的现象是:配置半同步(复制)到多个从库,部分从库在一段
时间内无法复制数据,但所有复制状态均正常。
1 缺陷的复现
MySQL 版本:5.7.16,5.7.17,5.7.21
1. 配置半同步一个 master 两个 slave,设置 master 的
rpl_semi_sync_master_wait_for_slave_count=2,保持一定数据压力
2. 检查 master 的
rpl_semi_sync_master_status 状态为 ON,确保半同步没有退化为异步
3. 设置 master 的
rpl_semi_sync_master_wait_for_slave_count=1
4. 重启一个 slave “stop slave; start slave”
可以观察到步骤 4 中重启的那个 slave 长达数分钟不会有 master 的复制数据流入,但查看复制状态均正
常。
2 缺陷的原理图解
下图中按序解析了 MySQL 半同步插件在 binlog group commit 中扮演的角色:
binlog group commit 分为三个阶段:
1. Flush Phase(图中序号 2): 将一组事务写入 binlog 缓存区,向半同步插件注册事务(图中序号
2.1),更新 binlog 文件位置信息(图中序号 2.2)
2. Sync Phase(图中序号 4): 对 binlog 做 fsync 操作,将一组事务一起刷入磁盘
3. Commit Phase(图中序号 5): 等待半同步完成,在引擎层提交事务



 

 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐