半同步复制,是有一个从节点或者一部分从节点与主节点之间是同步复制的,其余的从节点还是异步复制mysql
半同步复制是谷歌公司贡献给MySQL的一个插件,默认在MySQL中没有此插件,因此要实现主从的版同步复制须要安装此插件sql
rpm -ql mariadb-server| grep semi #找到须要安装的插件,以so结尾
SHOW PLUGINS; #查看当前支持的插件,此处也能看到myisam和innodb也是插件类型
下面开始介绍如何配置主从版同步复制:数据库
一、建立传统的主从复制功能的mysql,请参考‘MySQL数据库主从复制’一文(http://panpangao.blog.51cto.com/10624093/1981418 )bash
二、在主节点安装半同步复制插件session
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master'; //格式都是固定的不可随意修改 SHOW GLOBAL VARIABLES LIKE 'rpl_semi%'; //查看主节点的半同步复制功能,此时还没有开启 SET GLOBAL rpl_semi_sync_master_enabled=ON; //开启 SHOW GLOBAL STATUS LIKE '%rpl%'; //查看状态,关键是查看 Rpl_semi_sync_master_clients数量,此时还没有配置从节点因此是0 +--------------------------------------------+-------------+ | Variable_name | Value | +--------------------------------------------+-------------+ | Rpl_semi_sync_master_clients | 0 | | Rpl_semi_sync_master_net_avg_wait_time | 0 | | Rpl_semi_sync_master_net_wait_time | 0 | | Rpl_semi_sync_master_net_waits | 0 | | Rpl_semi_sync_master_no_times | 0 | | Rpl_semi_sync_master_no_tx | 0 | | Rpl_semi_sync_master_status | ON | | Rpl_semi_sync_master_timefunc_failures | 0 | | Rpl_semi_sync_master_tx_avg_wait_time | 0 | | Rpl_semi_sync_master_tx_wait_time | 0 | | Rpl_semi_sync_master_tx_waits | 0 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 0 | | Rpl_status | AUTH_MASTER | +--------------------------------------------+-------------+ 15 rows in set (0.00 sec)
三、在从节点安装半同步复制插件异步
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave'; SET GLOBAL rpl_semi_sync_slave_enabled=ON; SHOW GLOBAL VARIABLES LIKE 'rpl_semisync%'; SHOW GLOBAL VARIABLES LIKE '%rpl%'; //这时从的功能是开启的 SHOW GLOBAL STATUS LIKE '%rpl%'; //但状态是OFF,由于从节点此时的IO线程未重启 STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; //重启从的IO线程
四、测试ide
此时在主节点查看clients的数量就会变成1了,由于已经加入了一个从节点;测试
在主节点建立数据库、表,都会同步到从节点上插件
SHOW GLOBAL STATUS LIKE '%rpl%'; //此时显示的信息就会有变化,主节点等待时长、平均等待时长、等待次数等信息,具体均可以从字面意思看出
本实验到此结束线程