在线切换
在master上执行
mysql>install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
在slave上执行
mysql>install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
可以使用show plugins;查看安装成功没有
mysql>set global rpl_semi_sync_master_enabled=1;
mysql>set global rpl_semi_sync_master_timeout=1000;
mysql>set global rpl_semi_sync_slave_enabled=1;
stop slave io_thread;
start slave io_thread;
停机切换
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 #如果超过1秒钟Slave没响应,就会从半同步转向传统复制
rpl_semi_sync_slave_enabled=1
监控
show variables like '%semi%'; #是否开启半同步
show global status like '%semi%';
Rpl_semi_sync_master_no_tx #这个值是没有经过半同步复制的事物个数
Rpl_semi_sync_master_yes_tx #和上述值意义相反
半同步增加-等待多个Slave的应答
- Master接收到N个slave的应答后,才commit十五
mysql>set global rpl_semi_sync_master_wait_for_slave_count=N