MySQL主从复制——半同步复制方式

如需转载请注明出处https://my.oschina.net/feistel/blog/2995878

 

目的:对于异步方式当主库提交完事务时发生宕机,没有将数据发送给从库,导致数据不匹配的问题。
半同步方式流程:从库接收到binlog后写入自己的relay log中再通知主库,此时主库才提交事务并返回给客户端。

 

我丑 话说在前头:

192.168.1.116 主masterA Windows MySQL8.0
192.168.1.200 备库B,VMUbuntu18 MySQL8.0

shell代表Ubuntu终端
cmd代表Windows终端

----------------------------------------------------------------------------------------------------------------

1

先无压力操作:MySQL主从复制——异步方式

----------------------------------------------------------------------------------------------------------------

2

安装插件:

动态链接库的区别:
windows插件后缀名用dll;
Ubuntu的用so

A mysql>
install plugin rpl_semi_sync_master soname 'semisync_master.dll';
set global rpl_semi_sync_master_enabled=on;
#可以写入配置文件my.ini(windows)
#rpl_semi_sync_master_enabled=on

show variables like '%semi%';
show plugins;

B mysql>
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled=on;
#可以写入配置文件mysqld.cnf(Ubuntu)
#rpl_semi_sync_master_enabled=on

show variables like '%semi%';
show plugins;

----------------------------------------------------------------------------------------------------------------

3

重启从库B的IO线程

B mysql>
stop slave io_thread;
start slave io_thread;

A mysql>
show global status like '%semi%';
看到
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |1个连接
| Rpl_semi_sync_master_status                | ON    |开启半同步状态
| Rpl_semi_sync_master_yes_tx                | 1     |表示接收到事务回复的次数
+--------------------------------------------+-------+
表示成功

----------------------------------------------------------------------------------------------------------------

4

半同步 转 异步:
B mysql>stop slave io_thread;
关闭从库后,主库超时rpl_semi_sync_master_timeout,自动转为异步方式。

A mysql>show variables like 'rpl_semi_sync_master_timeout';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| rpl_semi_sync_master_timeout | 10000 |
+------------------------------+-------+
默认为10s。

需要保证主从一致,可以把该参数设置得很大:
A mysql>set global rpl_semi_sync_master_timeout=100000;
设置为100s。也可以写入配置文件持久修改。

异步 转 半同步:
B mysql>
start slave io_thread;

----------------------------------------------------------------------------------------------------------------

至此,共勉,如需转载请注明出处https://my.oschina.net/feistel/blog/2995878

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值