MySQL主從復制主要有三種模式:異步復制、半同步復制和全同步復制。每種模式在數據復制時的工作原理和適用場景有所不同。
異步復制是MySQL默認的復制模式。主庫在執行完客戶端提交的事務后會立即返回給客戶端,并不關心從庫是否已經接收并處理。這種模式的主要優點是返回客戶端無延遲,但缺點是主從數據可能不一致,如果主庫崩潰,從庫可能沒有同步到最新的數據。
半同步復制介于異步復制和全同步復制之間。主庫在執行完客戶端提交的事務后不是立刻返回給客戶端,而是等待至少一個從庫接收到并寫入到中繼日志(relay log)中才返回成功信息給客戶端。這種模式提高了數據的安全性,但同時也帶來了一定的延遲。
全同步復制是指當主庫執行完一個事務,然后所有的從庫都復制了該事務并成功執行完才返回成功信息給客戶端。這種模式確保了數據的一致性,但會嚴重影響性能。
組復制(MySQL Group Replication,簡稱MGR)是MySQL官方在5.7.17版本正式推出的。它由若干個節點共同組成一個復制組,一個事務的提交,必須經過組內大多數節點決議并通過。組復制的主要目的在于解決傳統的異步復制或半同步復制所帶來的數據不一致問題。
通過了解這些復制模式,可以根據具體的應用場景和需求選擇合適的復制模式,以確保數據的一致性和系統的可用性。