天天看点

mysql主从复制中的半同步复制

实验mysql借助google提供的插件,完成半同步复制模型;

物理机依然是win7系统,虚拟机为centos7;

主节点:192.168.255.2

从节点:192.168.255.3

先配置为主从复制模型:

在主节点:

]# vim /etc/my.cnf

<a href="http://s5.51cto.com/wyfs02/M02/82/8B/wKiom1dYXaCh22GXAABMCtVpzw0430.png" target="_blank"></a>

从节点:

<a href="http://s1.51cto.com/wyfs02/M02/82/89/wKioL1dYXurC-WVYAABEkkoeAts254.png" target="_blank"></a>

启动两节点的myslq服务:

]# systemctl start mariadb.service

配置有复制权限的账号:

&gt; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.255.%' IDENTIFIED BY 'replpass';

&gt; FLUSH PRIVILEGES;

注意:如果从服务器也打算创建这个有复制权限的账号,要先启用主从设置后,再执行此命令:

查看二进制日志事务的位置:

<a href="http://s4.51cto.com/wyfs02/M00/82/89/wKioL1dYZtGAHkpoAAAgzfd8Jx4057.png" target="_blank"></a>

在从节点:

设置同步位置:

&gt; CHANGE MASTER TO MASTER_HOST='192.168.255.2',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=499;

主从复制配置完成;

分别在主从节点上安装相应的插件:

&gt; INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

<a href="http://s3.51cto.com/wyfs02/M01/82/8B/wKiom1dYZqqQdBK7AAEUE7v-DPA000.png" target="_blank"></a>

启用为半同步的主节点:

&gt; SET GLOBAL rpl_semi_sync_master_enabled=1;

安装从节点插件:

&gt; INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

<a href="http://s5.51cto.com/wyfs02/M02/82/89/wKioL1dYaLWymN4LAAESCvrUUTo303.png" target="_blank"></a>

启用为半同步从节点

&gt; SET GLOBAL rpl_semi_sync_slave_enabled=on;

启动从节点同步:

&gt; START SLAVE;

确保从节点的线程正常启动:

<a href="http://s1.51cto.com/wyfs02/M00/82/8B/wKiom1dYaUrByKGJAACcKqXI840626.png" target="_blank"></a>

此时,mysql主从复制的半同步配置完成;可演示验证;

创建新库后并查看相关参数值:

<a href="http://s4.51cto.com/wyfs02/M01/82/8B/wKiom1dYcIzh-mrYAACKhB0IFqE078.png" target="_blank"></a>

其中Rpl_semi_sync_master_clients:对于当前主节点,有多少个半同步节点;值为1表示有一个半同步节点;

从节点查看:

<a href="http://s3.51cto.com/wyfs02/M02/82/89/wKioL1dYdFeQ-ABiAABt0Oac6ek822.png" target="_blank"></a>

以上演示的就是半同步复制的配置过程。

本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1787601,如需转载请自行联系原作者

继续阅读