mysql(三)半同步复制

本文介绍了MySQL的复制方式,包括异步、全同步和半同步复制。重点讨论了半同步复制,它在主库执行事务后等待至少一个从库确认,提高数据安全性但引入一定延迟。在MySQL 5.5版本开始引入此特性。文中还给出了半同步复制的实验配置步骤。
异步复制( Asynchronous replication )

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

全同步复制( Fully synchronous replication )

指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响

半同步复制( Semisynchronous replication )

介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

在2010年MySQL 5.5版本之前,一直采用的是这种异步复制的方式。主库的事务执行不会管备库的同步进度,如果备库落后,主库不幸crash,那么就会导致数据丢失。于是在MySQL在5.5中就顺其自然地引入了半同步复制,主库在应答客户端提交的事务前需要保证至少一个从库接收并写到relay log中

mysql的半同步复制

实验环境是基于主从复制!!
(1)在server1(master节点)上安装半同步复制的插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块
查看插件:
SELECT PLUGIN_NAME, PLUGIN_STATUS 设置
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
SET GLOBAL rpl_semi_sync_master_enabled = 1 激活插件

在这里插入图片描述
(2)在server2(slave节点)上安装半同步复制的插件

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';安装半同步模块
SET GLOBAL rpl_semi_sync_slave_enabled = 1 开启
STOP SLAVE IO_THREAD; 关闭
START SLAVE IO_THREAD; 开启
从库重启io进程,激活插件之后必须要重启io进程,否则不会生效

在这里插入图片描述

(3)server1:查看主库的变量的值

SHOW VARIABLES LIKE 'rpl_semi_sync%';查看变量的值
show status like '%rpl%';查看变量的状态

在这里插入图片描述
(4)server2:

SHOW VARIABLES LIKE 'rpl_semi_sync%';
STOP SLAVE IO_THREAD; 关闭从库进行测试

在这里插入图片描述
serve2先关闭io进程
在这里插入图片描述

(5)server1:

use westos
insert into usertb values ('user6','66666');
等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制

说明:如果再次添加数据,server1不在等待10s,因为此时已经切换到异步复制了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(6)查看

关闭server2的io线程:

在这里插入图片描述
在server1端查看:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值