【總結】mysql半同步

cell_liu發表於2017-03-10
半同步複製解決的問題:
如果做讀寫分離,master insert進資料,由於其他問題,導致slave複製延遲。
非同步模式,master insert進入資料,就返回給業務正常。
半同步模式 , master insert進入資料,slave更新後,返回給master,master才返回給業務正常。
show plugins; 是否有semisync字母
show variables like `plugin_dir` 檢視plugins的路徑 
進入到mysql的plugin目錄,進入mysql提示符
master:
install plugin rpl_semi_sync_master soname `semisync_master.so`
set global rpl_semi_sync_master_enabled=on;
slave:
install plugin rpl_semi_sync_slave soname `semisync_slave.so`
set global rpl_semi_rsync_slave_enabled=on;
在my.cnf加入 :
master:
rpl_semi_sync_master_enabled=1
slave:
rpl_semi_sync_slave_enabled=1
master上有4個引數:
rpl_semi_sync_master_enabled=on  開啟半同步複製
rpl_semi_sync_master_timeout=10000 該引數預設10000毫秒,10秒。表示如果主庫某次事務中的等待時間超過10秒,則降為非同步複製模式,不再等待slave從庫。
rpl_semi_sync_master_wait_no_slave 表示是否允許master每個事務提交後都要等待slave接受訊號,預設為on
rpl_semi_sync_master_trace_level=32 除錯級別
slave上有2個引數:
rpl_semi_sync_slave_enabled=on
rpl_semi_sync_slave_trace_level=32 
驗證半同步資料:
master:
show variable like `%semi%`;
關注一下幾個引數:
rpl_semi_sync_master_status 伺服器使用半同步模式還是非同步模式
rpl_semi_sync_master_clients 多少個從伺服器使用了半同步模式
rpl_semi_sync_master_yes_tx 從伺服器確認的成功的提交數量
rpl_semi_sync_master_no_tx  從伺服器確認的失敗提交數量
slave:
show variables like `%semi%`
rpl_semi_sync_slave_status = on 從伺服器是否是半同步複製模式
半同步複製與非同步複製的切換
1. stop slave
stop slave io_thread;
該操作會將io執行緒關閉,等待10秒後,如果master未收到slave的接收確認訊號,則轉換為非同步同步
start slave
會轉換成半同步模式
!半同步模式和io_thread有關係,和sql_thread沒有關係。也就是說,slave接收完二進位制日誌後會給master一個確認,但不會管relay-log是否執行完成。


相關文章