MySQL的异步复制和半同步复制(2)

与传统的异步复制相比,半同步复制在多个Slave节点中会选取一个节点进行半同步复制。也就是说,当Master提交一个事务的时候,在这个半同步复制的Slave端返回一个同步完成的Ack包之后,服务器才会向用户返回事务提交成功,而其他的节点则是采用传统的异步复制方式进行同步。

半同步是复制是基于异步复制之上进行的,也就是说配置半同步复制之前需要先配置到异步复制。

半同步复制可以保证在主节点发生故障的时候,总有一个节点的数据与主节点一样。这样在进行切换的时候,可以更加快速地把这个Slave节点设置成主节点来使用。 Master节点:Node1 由于上面已经进行了异步复制的配置,下面仅进行半同步复制的操作。
(1)Master安装插件并修改变量: mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; 插件的文件名字和路径一般在rpm -ql mariadb-server那里查看。
这个插件的库文件是安装好之后就直接有的,只是没有默认安装。
(2)启用选项 mysql> SET GLOBAL VARIABLES rpl_semi_sync_master_enabled=1;

Slave节点:Node2

(1)slave安装插件并修改变量:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; mysql> SET GLOBAL VARIABLES rpl_semi_sync_slave_enabled=1;

这里需要注意的是,node1作为主节点使用的是master模块。node2,node3作为从节点使用slave模块

(2)查看半同步复制的全局变量

mysql> SHOW GLOBAL VARIABLES LIKE '%semi%'; +------------------------------------+-------+ | Variable_name | Value | +------------------------------------+-------+ | rpl_semi_sync_master_enabled | ON | | rpl_semi_sync_master_timeout | 10000 | | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_no_slave | ON | +------------------------------------+-------+

设置rpl_semi_sync_master_enabled=1的效果
第一行是ON则表示半同步复制已经开启。

(3)查看半同步复制的全局变量

mysql> SHOW GLOBAL STATUS LIKE '%semi%'; +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 1 | | Rpl_semi_sync_master_net_avg_wait_time | 645 | | Rpl_semi_sync_master_net_wait_time | 645 | | Rpl_semi_sync_master_net_waits | 1 | | Rpl_semi_sync_master_no_times | 1 | | Rpl_semi_sync_master_no_tx | 5 | | Rpl_semi_sync_master_status | ON | | Rpl_semi_sync_master_timefunc_failures | 0 | | Rpl_semi_sync_master_tx_avg_wait_time | 783 | | Rpl_semi_sync_master_tx_wait_time | 783 | | Rpl_semi_sync_master_tx_waits | 1 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 1 | +--------------------------------------------+-------+

第一行Rpl_semi_sync_master_clients显示1,表示有一台主机是半同步复制的状态。

最后需要说明的是,semi复制的MySQL5.7中性能有明显的改善。
假如真的需要使用半同步复制,建议使用5.7的版本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7ed30b2ef5fd63abd8579dc44a809907.html