启动半同步之前需配好异步主从.异步主从配好后再通过安装插件,设置参数,重启IO线程启动半同步复制.
1.主库和从库都需要安装插件
主库:mysql> INSTALL PLUGIN
rpl_semi_sync_master SONAME 'semisync_master.so';
从库:mysql> INSTALL PLUGIN
rpl_semi_sync_slave SONAME 'semisync_slave.so';
主库从库分别查看插件是否加载成功: mysql> show
plugins;
在安装完插件后,半同步复制默认是关闭的,这时需设置参数来开启半同步.
2.启动半同步复制
设置参数启动:
主库: mysql> SET
GLOBAL rpl_semi_sync_master_enabled = 1;
从库: mysql> SET
GLOBAL rpl_semi_sync_slave_enabled = 1;
以上的启动方式是在命令行操作,也可写在配置文件中。
在有的高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制
[mysqld]
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load =
"rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_master_wait_for_slave_count=1
重启从库的IO线程:
STOP
SLAVE IO_THREAD;
START
SLAVE IO_THREAD;
如果没有重启,则默认还是异步复制,重启后,slave会在master上注册为半同步复制的slave角色。这时候,主的error.log中会打印如下信息:
2017-04-19
11:09:26 28300 [Note] Semi-sync replication switched ON with slave
(server_id: 28703307) at (mysql-bin.000002, 510)
2017-04-19
11:09:26 28300 [Note] Start semi-sync binlog_dump to slave
(server_id: 28703307), pos(mysql-bin.000002, 510)
2017-04-19
11:09:26 28300 [Note] Stop asynchronous binlog_dump to slave
(server_id: 28703307)
3.查看半同步复制
查看半同步是否在运行:
主库执行:
mysql> show
status like 'Rpl_semi_sync_master_status';
从库执行:
mysql> show
status like 'Rpl_semi_sync_slave_status';
这两个变量常用来监控主从是否运行在半同步复制模式下。
主库执行:mysql> show status like
'%semi%';
Rpl_semi_sync_master_status:指示主服务器使用的是异步复制模式,还是半同步复制模式。
Rpl_semi_sync_master_clients:显示有多少个从服务器配置成了半同步复制模式。
Rpl_semi_sync_master_yes_tx:显示从服务器确认的成功提交数量。
Rpl_semi_sync_master_no_tx:显示从服务器确认的不成功提交数量。