mysql 半主从复制

半同步复制原理

为了提升数据安全,MySQL让Master在某一个时间点等待Slave节点的 ACK(Acknowledge character)消息,接收到ACK消息后才进行事务提交,这也是半同步复制的基础,MySQL从5.5版本开始引入了半同步复制机制来降低数据丢失的概率。

介绍半同步复制之前先快速过一下 MySQL 事务写入碰到主从复制时的完整过程,主库事务写入分为 4个步骤:

  • InnoDB Redo File Write (Prepare Write)
  • Binlog File Flush & Sync to Binlog File
  • InnoDB Redo File Commit(Commit Write)
  • Send Binlog to Slave

当Master不需要关注Slave是否接受到Binlog Event时,即为传统的主从复制
当Master需要在第三步等待Slave返回ACK时,即为 after-commit,半同步复制(MySQL 5.5引入)。
当Master需要在第二步等待 Slave 返回 ACK 时,即为 after-sync,增强半同步(MySQL 5.7引入)。

下图是 MySQL 官方对于半同步复制的时序图,主库等待从库写入 relay log 并返回 ACK 后才进行 Engine Commit。
在这里插入图片描述

master库操作

使用命令select @@have_dynamic_loading;查看数据库是否支持动态插件安装功能
在这里插入图片描述
使用命令show plugins;查看插件
在这里插入图片描述
使用命令 install plugin rpl_semi_sync_master soname ‘semisync_master.so’;安装插件

使用命令show variables like '%semi%'查看相关参数
在这里插入图片描述
开启插件并设置超时
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_wait_for_slave_count=1000;
在这里插入图片描述
相关参数也可以在my.cnf中进行配置

# 自动开启半同步复制 
rpl_semi_sync_master_enabled=ON 
rpl_semi_sync_master_timeout=1000

slave库操作

使用命令install plugin rpl_semi_sync_slave soname ‘semisync_slave.so’;安装从库插件,并查看相关得参数以及设置开启semi参数。
在这里插入图片描述
停止并重启stop slave;start slave;
查看/var/log/mysqld.log中得日志能发现Semi-sync得信息。
在这里插入图片描述
相关参数也可以在my.cnf中进行配置

# 自动开启半同步复制 
rpl_semi_sync_slave_enabled=ON 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值