基於MariaDB-10 半同步複製數據的配置解析

我們先來看下MYSQL異步複製的概念:

       MySQL本身支持單向的、異步的複製。異步複製意味着在把數據從一臺機器拷貝到另一臺機器時有一個延時 – 最重要的是這意味着當應用系統的事務提交已經確認時數據並不能在同一時刻拷貝/應用到從機。通常這個延時是由網絡帶寬、資源可用性和系統負載決定的。然而,使用正確的組件並且調優,複製能做到接近瞬時完成。


      當主庫有更新的時候,主庫會把更新操作的SQL寫入二進制日誌(Bin log),並維護一個二進制日誌文件的索引,以便於日誌文件輪迴(Rotate)。在從庫啓動異步複製的時候,從庫會開啓兩個I/O線程,其中一個線程連接主庫,要求主庫把二進制日誌的變化部分傳給從庫,並把傳回的日誌寫入本地磁盤。另一個線程則負責讀取本地寫入的二進制日誌,並在本地執行,以反映出這種變化。較老的版本在複製的時候只啓用一個I/O線程,實現這兩部分的功能。


其次來看下MySQL同步複製的概念:

       同步複製可以定義爲數據在同一時刻被提交到一臺或多臺機器,通常這是通過衆所周知的“兩階段提交”做到的。雖然這確實給你在多系統中保持一致性,但也由於增加了額外的消息交換而造成性能下降。

   默認情況下MySQL的複製是異步的,Master上所有的更新操作寫入Binlog之後並不確保所有的更新都被複制到Slave之上。異步操作雖然效率高,但是在Master/Slave出現問題的時候,存在很高數據不同步的風險,甚至可能丟失數據。


       MySQL5.5引入半同步複製功能的,我這裏是MariaDB-10的,目的是爲了保證在master出問題的時候,至少有一臺Slave的數據是完整的。在超時的情況下也可以臨時轉入異步複製,保障業務的正常使用,直到一臺salve追趕上之後,繼續切換到半同步模式。




一、主節點配置:
1、停止服務:

wKiom1NVUbayJIW4AABfdsRuJv0869.jpg


2、修改配置文件:

wKioL1NVUYzgW9KvAADn5iiSjNE414.jpg


3、創建目錄、修改屬組:

wKiom1NVUbawhAhcAADB6pyM-Gk937.jpg


4、啓動服務、端口:

wKioL1NVUY3yzM_pAAClh9WdJrk886.jpg


5、查看是否存在master、slave的插件:

wKiom1NVUbaymvVxAADlX2IOTjU713.jpg


6、授權用戶

wKioL1NVUY3B8tg6AAEhVQGZD-Y607.jpg


7、安裝master的插件:

wKiom1NVUbfhDGcLAACXH_aPTWA975.jpg


8、查看master插件是否安裝成功:

wKiom1NVUbfyl1QaAAGHo6RWJHY371.jpg


9、啓動master節點:

wKioL1NVUY7TgisZAAB-83AB5mM650.jpg


10、將超時間設置爲兩秒即可:

wKiom1NVUbfAN1XWAACDhectJH0795.jpg


11、查看master是否啓動:
wKioL1NVUY6glfyfAAFzcpAvhs0462.jpg



二、從節點配置:

1、停止服務:

wKiom1NVUbjyr2r4AABhlxGcGjs099.jpg


2、修改配置文件:

wKioL1NVUY-C2AUyAADXGnkVdQQ075.jpg


3、創建目錄、修改屬組:

wKiom1NVUbjAhhr9AADFDfJwgU8281.jpg


4、啓動服務:

wKioL1NVUY_BoBrjAABdLCVY8iI379.jpg


5、連入mysql,查看事件狀態:

wKiom1NVUbmB5LYoAAH_rCFBrAs072.jpg


6、查看驗證(此時是沒有文件的):

wKioL1NVUY_Q76tQAABut4_TBi8966.jpg


7、設置連接主服務器:

wKiom1NVUbnxmIKSAAC0Z0TWiBI307.jpg


8、查看當前用戶:

wKioL1NVUZDSk3E1AACjG4Hm_oQ312.jpg


9、安裝slave插件:

wKiom1NVUbnwY55cAACK5FTybMA368.jpg


10、查看slave是否安裝成功:

wKioL1NVUZDQY6m-AAEv7yJ5HKE083.jpg


11、啓動slave節點:

wKiom1NVUbqCL0_hAABxR4JXoD8539.jpg


12、查看slave是否啓動成功:

wKiom1NVUeWioX4BAAEmSYSYInM196.jpg




三、master插入數據,slave測試是否同步:

1、master插入數據:

wKioL1NVUZOzrWs_AADWOBS421k675.jpg


2、先停止IO線程,在啓動IO線程:

wKiom1NVUb3gpChsAADIZMv-d4g439.jpg


3、查看當前是異步還是半同步:

wKioL1NVUZSTIcaAAAMjWhaPv6U262.jpg


4、查看slave是否以同步數據:

wKioL1NVUZShKOS2AADNPrHnNn4778.jpg


5、一般來說,不建議把半同步的設定寫在配置文件中,我們還不如手動修改合適呢。一旦某次等待超時,會自動降級爲異步;




Welcome to the xiaomazi blog!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章