文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  群組複寫  /  群組複寫背景

20.1 群組複寫背景

本節提供有關 MySQL 群組複寫的背景資訊。

建立容錯系統最常見的方式是透過冗餘化元件,換句話說,元件可以移除,而系統應繼續如預期般運作。這會產生一系列挑戰,將此類系統的複雜性提升到完全不同的層次。特別是,複寫資料庫必須處理它們需要維護和管理多個伺服器而不是一個的事實。此外,由於伺服器正在協同工作以建立群組,因此必須處理其他幾個經典的分散式系統問題,例如網路分割或腦裂情境。

因此,最終的挑戰是將資料庫的邏輯和資料複寫與以一致且簡單的方式協調多個伺服器的邏輯結合。換句話說,讓多個伺服器就系統的狀態以及系統經歷的每個變更上的資料達成一致。這可以總結為讓伺服器就每個資料庫狀態轉換達成一致,以便它們都像單一資料庫一樣進展,或者它們最終收斂到相同的狀態。這表示它們需要作為(分散式)狀態機器運作。

MySQL 群組複寫提供分散式狀態機器複寫,伺服器之間具有強大的協調性。當伺服器屬於同一群組時,它們會自動協調。群組可以在具有自動主節點選舉的單主模式中運作,其中一次只有一個伺服器接受更新。或者,對於更進階的使用者,群組可以部署在多主模式中,其中所有伺服器都可以接受更新,即使這些更新是同時發出的。這種能力會讓應用程式必須處理此類部署所加諸的限制。

有一個內建的群組成員資格服務,可讓群組的檢視在任何給定時間保持一致且可用於所有伺服器。伺服器可以離開和加入群組,並且檢視會相應更新。有時,伺服器可能會意外離開群組,在這種情況下,失敗偵測機制會偵測到此情況並通知群組檢視已變更。這一切都是自動的。

為了讓交易提交,群組的大多數成員必須就全域交易序列中給定交易的順序達成一致。決定提交或中止交易是由每個伺服器單獨完成的,但所有伺服器都會做出相同的決定。如果發生網路分割,導致成員無法達成一致的分裂,則系統不會繼續執行,直到此問題解決。因此,還有一個內建的自動腦裂保護機制。

這一切都由提供的群組通訊系統 (GCS) 通訊協定提供支援。這些通訊協定提供失敗偵測機制、群組成員資格服務以及安全且完全排序的訊息傳遞。所有這些特性都是建立系統的關鍵,該系統可確保資料在伺服器群組中一致地複寫。此技術的核心是 Paxos 演算法的實作。它充當群組通訊引擎。