本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL主从复制(2)使用半同步模式配置主从

MySQL主从复制(2)使用半同步模式配置主从

发布:TangLu2020-2-8 11:44分类: MySQL 标签: mysql

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

从MySQL 5.5开始,MySQL以插件的形式支持半同步复制,而传统的同步方式属于异步复制,下面是它们的区别:

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


2、半同步复制(Semisynchronous replication)
主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步来说半同步复制提高了数据的安全性,对于一主多从的MySQL架构建议使用半同步复制同时它也造成了一定程度的延迟,比如从库不可用时,主库的每次事务都需要等待达到半同步复制的超时时间才会提交。


二、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、启动主从节点的半同步复制功能

SET GLOBAL rpl_semi_sync_master_enabled=1; #主节点做该操作
SET GLOBAL rpl_semi_sync_slave_enabled=1; #选一个从节点做该操作

# 上面的操作是临时生效,还需要在my.cnf配置文件中永久有效
#主节点
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1

#选一个从节点配置
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1


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%';  #半同步复制相关的状态变量


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL主从复制(2)使用半同步模式配置主从
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-377.html  [生成短网址]

已有 0/1323 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~