MySQL主從複製之​半同步複製

lhrbest發表於2019-07-23


MySQL主從複製之半同步複製

原文: https://www.cnblogs.com/hmwh/p/9198705.html


   非同步複製方式不足之處在於,當主庫把event寫入二進位制日誌後,並不知道從庫是否已經接受並應用日誌了;如果主庫發生意外當機或者是奔潰,很有可能主庫提交的事物沒有傳到任何一臺從庫機器上。在高可用叢集架構下做主備切換,就會造成新的主庫丟失資料。

   mysql5.5版本之後引入了半同步複製功能,主從伺服器必須安裝半同步複製外掛,才能開啟該複製功能。該功能確保從庫接收完主庫傳遞過來的binlog內容已經寫入到自己的relay log裡面了,才會通知主庫上面的等待執行緒,該操作完畢。

    如果等待超時,超過rpl_semi_sync_master_timeout 引數設定時間,則關閉半同步複製,並自動轉換為非同步複製模式,直到至少有一臺從庫通知主庫已經接收到binlog資訊位置。

  半同步複製提升了主從之間資料的一致性,讓複製更加安全可靠,在mysql5.7版本中又增加了rpl_semi_sync_master_wait_point 引數,用來控制半同步模式下主庫在返回給session事物成功之前的事務提交方式。

該引數有兩個值:

 

AFTER_SYNC(預設值):主伺服器將每個事務寫入其二進位制日誌和從伺服器,並將二進位制日誌同步到磁碟。同步後,主裝置等待從裝置確認事務接收。在收到確認後,主伺服器將事務提交給儲存引擎,並將結果返回給客戶端,然後客戶端可以繼續。

AFTER_COMMIT:主伺服器將每個事務寫入其二進位制日誌和從伺服器,同步二進位制日誌,並將事務提交給儲存引擎。主提交後等待從伺服器確認事務接收。在收到確認後,主人將結果返回給客戶端,然後客戶端可以繼續。

 

 

 

2.1半同步方式安裝

主庫上先安裝複製外掛和開啟半同步複製功能:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

set global rpl_semi_sync_master_enabled=on;

 

 

show variables like '%rpl_semi_sync_master%';

 

 

主庫引數檔案新增:

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

 

show plugins;

 

 

SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS  WHERE PLUGIN_NAME LIKE '%semi%';

 

 

同理從庫也安裝外掛和開啟半同步複製功能:

從庫安裝複製外掛和開啟半同步複製功能:

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

set global rpl_semi_sync_slave_enabled=on;

 

 

備庫引數檔案新增:

rpl_semi_sync_slave_enabled=1

 

由於之前是非同步複製,需要重啟從庫IO執行緒,啟用半同步複製。

 

STOP SLAVE IO_THREAD;

START SLAVE IO_THREAD;

 

此時檢視主庫:

已經有一個從庫連線到主庫了。而且是半同步方式。

show variables like '%rpl_semi_sync_master%';

 

 

2.2半同步方式切換成非同步方式

1、主庫超時超過指定引數時間

rpl_semi_sync_master_timeout 時間為10s。生產上建議設定的儘可能大。

set global rpl_semi_sync_master_timeout=xxx;

 

 

2、手動切換

主庫

set rpl_semi_sync_master_enabled=off;

從庫:

set rpl_semi_sync_slave_enabled=off

關閉從庫I/O thread

stop salve io_thread;

start salve io_thread;

 






About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● 微 信群:可加我微 信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2019-07-01 06:00 ~ 2019-07-31 24:00 在西安完成

● 最新修改時間:2019-07-01 06:00 ~ 2019-07-31 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客戶端 掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2651412/,如需轉載,請註明出處,否則將追究法律責任。

相關文章