美文网首页Java 核心技术MySQL
MySQL 5.7增强半同步复制的原理以及基于GTID搭建增强半

MySQL 5.7增强半同步复制的原理以及基于GTID搭建增强半

作者: 平常xin | 来源:发表于2017-12-31 12:44 被阅读112次

转载请务必保留超链接:原文链接

本次实验环境介绍:

说明              IP                    MySQL版本        PORT

Master        192.168.1.23    MySQL 5.7.19      3306

Slave          192.168.1.24    MySQL 5.7.19      3306

一、增强半同步AFTER_SYNC的工作机制如图(这张图片来自“知数堂”):

从上图得知,增强半同步的工作机制如下:

1、客户端向master发送请求

2、MySQL服务器解析SQL

3、写入redo

4、写入Binary log

5、等待Slave ACK应答

6、Master 提交事务, 同时实现复制

7、返回结果给客户端

二、如何搭建增强半同步复制?

执行 show plugins;  查看增强半同步复制的(rpl_semi_sync_master 和  rpl_semi_sync_slave)插件是否已经安装,如果没有安装,请先安装插件。下面是我的安装步骤:

1、安装插件

Master:

mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

Slave:

mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';

mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

通过执行 show plugins; 如下图, 可以看到  rpl_semi_sync_master 和  rpl_semi_sync_slave 插件已经安装。

2、在Master和Slave 的 mysqld 配置文件 添加参数

或者修改通过 set 设置参数,如下所示:

set global rpl_semi_sync_master_enabled=1;

set global rpl_semi_sync_master_timeout=1000;

set global rpl_semi_sync_slave_enabled=1;

注:  在 mysqld 添加半同步复制参数后需要重启;

3、做同步

Master:

grant all privileges on *.* to 'semisync'@'192.168.1.%' identified by '123456abc';

flush privileges;

Slave:

change master to master_host='192.168.1.23',master_port=3306,master_user='semisync',master_password='123456abc',master_auto_position=1;

start slave;

show slave status\G;  //查看复制情况

4、 如何确认是同步还是半同步?

从Master和Slave上看:

show global variables like '%semi%';

5、监控

从Master上看:

show global status like '%semi%';

其中各个参数的备注如下:

Rpl_semi_sync_master_no_tx  | 21| 表示库未及时响应的事务数,如果这个值很大可能就会有问题。当然,也有其它的原因,如下图,在增强半同步复制的场景中新增6个事物,可以发现都是 Rpl_semi_sync_master_no_tx 的值都是21, 说明在这之前不是用增强半同步复制。

三、补充:

1、 Master接收到N个Slave应答后,才Commit事务,可以设置应答的Slave数量(默认是1, MySQL5.7半同步新增特性);在Master上操作:

mysql > set global rpl_semi_sync_trx_master_wait_for_slave_count=2;

2、增强半同步场景下,会不会存在主从延迟?

会,只是 sql_thread 延迟。

四、总结:

增强半同步复制可以确保无数据丢失从而保证主从数据的一致性。

相关文章

网友评论

    本文标题:MySQL 5.7增强半同步复制的原理以及基于GTID搭建增强半

    本文链接:https://www.haomeiwen.com/subject/ahscgxtx.html