数据库运维
记录DBA学习成长历程

MySQL半同步复制

半同步复制解决主从数据一致性问题(5.7比较完善,5.7.17以后无损MGR复制)
研究MGR工作原理:
paxos协议:分布式一致性协议(要么全成功要么全失败)
https://blog.csdn.net/cnh294141800/article/details/53768464

半同步复制工作原理的变化

1. 主库执行新的事务,commit时,更新 show master status\G ,触发一个信号给
2. binlog dump 接收到主库的 show master status\G信息,通知从库日志更新了
3. 从库IO线程请求新的二进制日志事件
4. 主库会通过dump线程传送新的日志事件,给从库IO线程
5. 从库IO线程接收到binlog日志,当日志写入到磁盘上的relaylog文件时,给主库ACK_receiver线程
6. ACK_receiver线程触发一个事件,告诉主库commit可以成功了
7. 如果主库10秒(默认值)还没有接到AVK确认,此次半同步复制会切换为原始的异步复制.


配置半同步复制

加载插件
主:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
从:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看是否加载成功:
show plugins;
启动:
主:
SET GLOBAL rpl_semi_sync_master_enabled = 1;
从:
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
重启从库上的IO线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
查看是否在运行
主:
show status like 'Rpl_semi_sync_master_status';
从:
show status like 'Rpl_semi_sync_slave_status';
赞(1)
MySQL学习笔记 » MySQL半同步复制