文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁面 (TGZ) - 258.5Kb
手冊頁面 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


第 19 章 複寫

複寫可讓一個 MySQL 資料庫伺服器(稱為來源)的資料複製到一個或多個 MySQL 資料庫伺服器(稱為複本)。複寫預設為非同步;複本不需要永久連線即可接收來源的更新。根據組態,您可以複寫所有資料庫、選取的資料庫,甚至是資料庫中選取的表格。

MySQL 中複寫的優點包括

  • 擴展解決方案 - 在多個複本之間分散負載以改善效能。在此環境中,所有寫入和更新都必須在來源伺服器上進行。但是,讀取可以在一個或多個複本上進行。此模型可以改善寫入的效能(因為來源專用於更新),同時顯著提高跨越多個複本的讀取速度。

  • 資料安全性 - 因為複本可以暫停複寫程序,所以可以在複本上執行備份服務,而不會損壞對應的來源資料。

  • 分析 - 可以再來源上建立即時資料,而資訊分析可以在複本上進行,而不會影響來源的效能。

  • 長距離資料散佈 - 您可以使用複寫來為遠端站點建立資料的本機副本以供使用,而無需永久存取來源。

關於在這些情境中使用複寫的資訊,請參閱第 19.4 節「複寫解決方案」

MySQL 8.4 支援不同的複寫方法。傳統方法是基於複寫來源二進制日誌中的事件,並且需要在來源和副本之間同步日誌檔案及其中的位置。較新的方法基於全域交易識別碼 (GTID),此方法具備交易性,因此不需要處理日誌檔案或這些檔案中的位置,這大大簡化了許多常見的複寫任務。使用 GTID 的複寫可保證來源和副本之間的一致性,前提是來源上提交的所有交易也都已應用於副本。有關 MySQL 中 GTID 和基於 GTID 的複寫的詳細資訊,請參閱第 19.1.3 節「使用全域交易識別碼進行複寫」。有關使用基於二進制日誌檔案位置的複寫的資訊,請參閱第 19.1 節「設定複寫」

MySQL 中的複寫支援不同類型的同步。原始類型的同步是單向非同步複寫,其中一個伺服器作為來源,而一個或多個其他伺服器作為副本。這與 NDB Cluster 的同步複寫形成對比(請參閱第 25 章《MySQL NDB Cluster 8.4》)。在 MySQL 8.4 中,除了內建的非同步複寫之外,還支援半同步複寫。使用半同步複寫時,在來源上執行的提交會在返回執行交易的工作階段之前被封鎖,直到至少一個副本確認已接收並記錄了交易的事件;請參閱第 19.4.10 節「半同步複寫」。MySQL 8.4 也支援延遲複寫,使副本故意落後於來源至少指定的時長;請參閱第 19.4.11 節「延遲複寫」。對於需要同步複寫的情境,請使用 NDB Cluster(請參閱第 25 章《MySQL NDB Cluster 8.4》)。

有多種解決方案可用於在伺服器之間設定複寫,而最佳使用方法取決於資料的存在以及您正在使用的引擎類型。有關可用選項的詳細資訊,請參閱第 19.1.2 節「設定基於二進制日誌檔案位置的複寫」

複寫格式有兩種核心類型:語句式複寫 (SBR),它複寫整個 SQL 語句;以及行式複寫 (RBR),它只複寫已變更的行。您也可以使用第三種變體,混合式複寫 (MBR)。有關不同複寫格式的詳細資訊,請參閱第 19.2.1 節「複寫格式」

複寫是透過許多不同的選項和變數來控制的。有關詳細資訊,請參閱第 19.1.6 節「複寫和二進制日誌選項和變數」。可以對複寫拓撲應用其他安全措施,如第 19.3 節「複寫安全性」中所述。

您可以使用複寫來解決許多不同的問題,包括效能、支援不同資料庫的備份,以及作為緩解系統故障的較大解決方案的一部分。有關如何解決這些問題的資訊,請參閱第 19.4 節「複寫解決方案」

有關複寫期間如何處理不同資料類型和語句的說明和提示,包括複寫功能的詳細資訊、版本相容性、升級以及潛在問題及其解決方案,請參閱第 19.5 節「複寫說明和提示」。對於那些剛接觸 MySQL 複寫的人經常問的一些問題的答案,請參閱第 A.14 節「MySQL 8.4 常見問題:複寫」

有關複寫實作、複寫工作原理、二進制日誌的程序和內容、背景執行緒以及用於決定如何記錄和複寫語句的規則的詳細資訊,請參閱第 19.2 節「複寫實作」