介紹:
mysql傳統的主從複制是異步的複制模式,主伺服器把binlog日至發送到從伺服器,就認為同步完成。
mysql半同步複制模式可以確定從伺服器接收完主伺服器發送的binlog日志檔案并寫入自己的中繼日志relay log裡,然後會給主伺服器一個回報,告訴對方已經接收完畢。這時主庫線程才會傳回給目前session告知操作完成。當出現逾時情況時,源主伺服器會暫時切換到異步複制模式,直到至少有一台設定為半同步複制模式的從伺服器及時收到資訊為止。
配置:
1:首先配置好主從同步。
2:分别在主從庫上安裝插件,開啟semi_sync。
master:
sql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
sql>set global rpl_semi_sync_master_enabled = ON;
slave:
sql>install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
sql>set global rpl_semi_sync_slave_enabled = ON;
重新開機主從複制;
sql>stop slave;
sql>start slave;
也可以在配置檔案中添加如下配置,使配置生效:
#vi my.cnf
rpl_semi_sync_master_enabled = 1
or
rpl_semi_sync_slave_enabled = 1
檢查半同步複制狀态:
主庫:
<a href="http://s3.51cto.com/wyfs02/M02/6F/A2/wKiom1WjcWfRbh5VAAKJaUjR1ws450.jpg" target="_blank"></a>
rpl_semi_sync_master_enabled 為ON,說明semi_sync已經開啟。
<a href="http://s3.51cto.com/wyfs02/M02/6F/A2/wKiom1WjcXeQPm-ZAAOoLoeD4dc340.jpg" target="_blank"></a>
Rpl_semi_sync_master_status為ON說明主庫上的半同步機制正常,正在運作。
Rpl_semi_sync_master_clients 表示目前以半同步方式連接配接主庫的從庫數量。
從庫:
<a href="http://s3.51cto.com/wyfs02/M00/6F/9F/wKioL1Wjc2DzZVdOAAIE_eaw-MU729.jpg" target="_blank"></a>
rpl_semi_sync_slave_enabled為ON說明從庫的semi_sync功能已經開啟。
<a href="http://s3.51cto.com/wyfs02/M00/6F/A2/wKiom1WjcZmCtOymAADvOnh-Hvc393.jpg" target="_blank"></a>
Rpl_semi_sync_slave_status為ON說明從庫上的半同步機制正常,正在運作。
檢視從庫日志,也可以看到semi_sync相關的資訊:
Slave I/O thread: Start semi-sync replication to master '[email protected]:3306' in log 'mysql-bin.000011' at position 107.
本文轉自 icenycmh 51CTO部落格,原文連結:http://blog.51cto.com/icenycmh/1673819,如需轉載請自行聯系原作者