Mysql 半同步

Mysql 半同步

1,当Slave主机连接到Master时,能够查看其是否处于半同步复制的机制。 
2,当Master上开启半同步复制的功能时,至少应该有一个Slave开启其功能。此时,一个线程在Master上提交事务将受到阻塞,直到得知一个已开启半同步复制功能的Slave已收到此事务的所有事件,或等待超时。 
3,当一个事务的事件都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已收到。在 Master 实例上,有一个专门的线程(ack_receiver)接收备库的响应消息,并以通知机制告知主库备库已经接收的日志,可以继续执行。 
4,如果等待超时,也就是Master没被告知已收到,此时Master会自动转换为异步复制的机制。当至少一个半同步的Slave赶上了,Master与其Slave自动转换为半同步复制的机制。 
5,半同步复制的功能要在Master,Slave都开启,半同步复制才会起作用;否则,只开启一边,它依然为异步复制。 6,半同步特性的出现,就是为了保证在任何时刻主备数据一致的问题。相对于异步复制,半同步复制要求执行的每一个事务,都要求至少有一个备库成功接收后,才返回给用户。

半同步的布署:

实现半同步复制的功能很简单,只需在mysql的主服务器和从服务器上安装个google提供的插件即可实现,
	 主服务上使用semisync_master.,从服务器上使用sosemisync_slave.so插件即可实现,插件在mysql通用二进制的mysql/lib/plugin目录内。
其配置步骤如下
1、分别在主从节点上安装相关的插件
master:
安装插件:mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';  
启动模块:mysql> set global rpl_semi_sync_master_enabled = 1;  
设置超时时间:mysql> set global rpl_semi_sync_master_timeout = 1000;  


slave:
安装插件:msyql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
启动模块:mysql> set global rpl_semi_sync_slave_enabled = 1;
重启进程使其模块生效:mysql> stop slave io_thread; start slave io_thread;


上面的设置时在mysql进程内动态设定了,会立即生效但是重启服务以后就会失效,为了保证永久有效,需要把相关配置写到主、从服务器的配置文件my.cnf内:

在Master和Slave的my.cnf中编辑:  
On Master  
[mysqld]  
rpl_semi_sync_master_enabled=1  
rpl_semi_sync_master_timeout=1000   #此单位是毫秒  

On Slave  
[mysqld]  
rpl_semi_sync_slave_enabled=1  

确认半同步功能已经启用,通过下面的操作进行查看
master:  
mysql> create database asyncdb;  
master> show status like 'rpl_semi_sync_master_yes_tx';  
slave> show databases;  



其测试过程如下  

1.	在主数据库上创建数据库,你会发现很快就创建了
2.	我们测试关闭从数据库,此时再主数据库上创建数据库时,会处理等待状态
,当超时才会被创建,一旦超时,主会从半同步切换为异步同步,
3.	当从开启半同步,又会恢复半同步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值