天天看点

mysql半同步复制

介绍:

  mysql传统的主从复制是异步的复制模式,主服务器把binlog日至发送到从服务器,就认为同步完成。

mysql半同步复制模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志relay log里,然后会给主服务器一个反馈,告诉对方已经接收完毕。这时主库线程才会返回给当前session告知操作完成。当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

配置:

    1:首先配置好主从同步。

    2:分别在主从库上安装插件,开启semi_sync。

master:

       sql>install plugin rpl_semi_sync_master soname 'semisync_master.so';

       sql>set global rpl_semi_sync_master_enabled = ON;

slave:

       sql>install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

       sql>set global rpl_semi_sync_slave_enabled = ON;

       重启主从复制;

       sql>stop slave;

       sql>start slave;

  也可以在配置文件中添加如下配置,使配置生效:

   #vi my.cnf

    rpl_semi_sync_master_enabled = 1

      or

       rpl_semi_sync_slave_enabled = 1

检查半同步复制状态:

主库:

<a href="http://s3.51cto.com/wyfs02/M02/6F/A2/wKiom1WjcWfRbh5VAAKJaUjR1ws450.jpg" target="_blank"></a>

rpl_semi_sync_master_enabled 为ON,说明semi_sync已经开启。

<a href="http://s3.51cto.com/wyfs02/M02/6F/A2/wKiom1WjcXeQPm-ZAAOoLoeD4dc340.jpg" target="_blank"></a>

Rpl_semi_sync_master_status为ON说明主库上的半同步机制正常,正在运行。

Rpl_semi_sync_master_clients 表示当前以半同步方式连接主库的从库数量。

从库:

<a href="http://s3.51cto.com/wyfs02/M00/6F/9F/wKioL1Wjc2DzZVdOAAIE_eaw-MU729.jpg" target="_blank"></a>

rpl_semi_sync_slave_enabled为ON说明从库的semi_sync功能已经开启。

<a href="http://s3.51cto.com/wyfs02/M00/6F/A2/wKiom1WjcZmCtOymAADvOnh-Hvc393.jpg" target="_blank"></a>

  Rpl_semi_sync_slave_status为ON说明从库上的半同步机制正常,正在运行。

查看从库日志,也可以看到semi_sync相关的信息:

Slave I/O thread: Start semi-sync replication to master '[email protected]:3306' in log 'mysql-bin.000011' at position 107.

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