默认情况下,mysql5.1/5.5的复制功能是异步的,异步复制可以提供最佳的性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证是否接受完毕,但这同时也带来了很高的风险,这就意味着当主服务器发送故障时,有可能从机没有接受到主机发过来的binlog日志,会造成主服务器/从服务器的数据不一致,甚至在恢复时会造成数据丢失。

为了解决这个问题,mysql5.5引入了一种半同步复制模式,该模式可以确保从服务器接受完主服务器发送的binlog日志并写入自己的中继日志relay log里,然后会给主服务器一个反馈,告诉对方已经接收完毕,这时主库线程才返回当前session告知操作完成。当出现超市情况时,源主服务器会暂时切换到异步复制模式,知道至少有一台设置为半同步模式的从服务器及时收到信息为止。

mysql半同步复制

半同步复制安装配置

插件路径:/usr/local/mysql/lib/plugin/semisync_master.so、semisync_slave.so

master:

1. 安装插件:mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  
2. 启动模块:mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;  
3. 设置超时时间:mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000; 

my.cnf
rpl_semi_sync_master_enabled = 1

slave:

1. 安装插件:msyql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
2. 启动模块:mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
3. 重启进程使其模块生效:mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

my.cnf
rpl_semi_sync_slave_enabled = 1

标签: mysql半同步复制

添加新评论