Mysql增强半同步模式_MySQL主从复制(3)基于binlog部署半同步与增强半同步主从复制...

一、异步复制、半同步复制与增强半同步复制的区别

从MySQL 5.5开始以插件的形式支持半同步复制,而传统的同步方式属于异步复制。虽然在5.7已经做了不少优化,但仍存在不能保证数据一致的问题。所以比较鸡肋,只作为了解即可。如果要保证数据的完全一致,推荐用PXC和MGR。

1、异步复制(Asynchronous replication)

MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整。

2、半同步复制(after-commit)

相对于异步来说半同步复制提高了数据的安全性,对于一主多从的MySQL架构建议使用半同步复制。当一个客户端提交事务时,主库执行完事务并不会立即响应该客户端,而是等待至少一个从库接收并将事务写到relay log中才返回给客户端。如果在等待过程中主库宕机,该事务执行结果即便没有返回给客户端,对于其他事务依然是可见的。同时它也造成了一定程度的延迟,比如从库不可用时,主库的每次事务都需要等待达到半同步复制的超时时间才会切换为异步复制进行提交。

3、增强半同步复制(after-sync)

无损同步,半同步有一个缺陷就是主库在等待从库响应时,只是阻塞了发起事务的客户端。这个时候如果有其他客户端来查询数据,得到的将会是更新后的数据,这样就会造成幻读的情况,而增强半同步复制通过调整事务在存储引擎里的处理逻辑解决了这个问题。

二、MySQL半同步复制配置

1、在主从节点分别安装半同步复制插件

mysql > INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #主库执行

mysql > INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; #选一个从库执行

2、检查插件安装是否成功,正常情况应该是ACTIVE状态

mysql > SHOW PLUGINS;

3、编辑my.cnf配置文件以启动主从节点的半同步复制功能

plugin_dir=/usr/local/mysql/lib/plugin

plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

rpl_semi_sync_master_enabled=1

rpl_semi_sync_slave_enabled=1

rpl_semi_sync_master_wait_no_slave=ON #增强半同步复制的配置

rpl_semi_sync_master_wait_for_slave_count=1 #需要至少多少个从库完成确认

rpl_semi_sync_master_wait_point=AFTER_SYNC #AFTER_SYNC为增强半同步,AFTER_COMMIT为半同步

rpl_semi_sync_master_timeout=5000 #半同步超时时间,超时后转为异步复制,单位为毫秒

4、重启从节点生效配置,重启后Slave会在Master上注册为半同步复制的Slave角色。

START SLAVE;

5、当半同步复制发生超时时(由rpl_semi_sync_master_timeout参数控制,单位是毫秒,默认为10000,即10秒),会暂时关闭半同步复制转而使用异步。当master dump线程发送完一个事务的所有事件之后,如果在rpl_semi_sync_master_timeout内,收到了从库的响应,则主从又重新恢复为半同步复制。示例:如果从节点Down掉,那么在主节点插入一条语句,这个时候会等待10秒才会插入成功,与rpl_semi_sync_master_timeout参数的时间相吻合。等从节点恢复后,主节点再次插入数据,又会恢复正常。

6、查看半同步复制插件所生成的环境变量与状态变量,状态变量一般用于统计数据。

show global variables like '%semi%'; #半同步复制相关的环境变量

show status like '%semi%'; #半同步复制相关的状态变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值