基于gtid的半同步复制

  • Post author:
  • Post category:其他



半同步复制配置

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


主server12:


mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;

mysql> set global rpl_semi_sync_master_enabled=1;

mysql> show variables like ‘%semi_sync%’;



从server13:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;

mysql> set global rpl_semi_sync_slave_enabled=1;

mysql> stop slave io_thread;

mysql> start slave io_thread;

mysql> show global variables like ‘%semi%’;


插入检测:


在master中:

mysql>  use test;

mysql>  insert into userlist values (‘user3′,’123’);

mysql>  show status like ‘%semi_sync%’;



将slave的半同步关掉,进行插入测试:


在slave中

mysql> set global rpl_semi_sync_slave_enabled=OFF; ###将半同步设置为关闭 mysql> stop slave io_thread;

mysql> start slave io_thread;

mysql> show global variables like ‘%semi%’;



在master中:


当把从机的I/O线程关闭后,主数据库在进行对复制数据库的库进行更改时,在进行操作会等待10秒,增加了一次半同步传输的失败次数。

mysql> insert into userlist values (‘user4′,’666’);

mysql> show global status like ‘%semi%’;




版权声明:本文为j_1282937574原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。