NDB 叢集支援非同步複製,通常簡稱為「複製」。本節說明如何設定和管理一個組態,其中一組作為 NDB 叢集運作的電腦複製到第二個電腦或一組電腦。我們假設讀者對本手冊其他地方討論的標準 MySQL 複製有一定的熟悉度。(請參閱第 19 章,複製)。
NDB 叢集不支援使用 GTID 的複製;NDB
儲存引擎也不支援半同步複製和群組複製。
正常的(非叢集式)複製涉及來源伺服器和複本伺服器,來源伺服器之所以如此命名,是因為要複製的作業和資料源自於它,而複本是這些的接收者。在 NDB 叢集中,複製在概念上非常相似,但在實務上可能更複雜,因為它可以擴展到涵蓋許多不同的組態,包括在兩個完整的叢集之間進行複製。雖然 NDB 叢集本身依賴於NDB
儲存引擎來實現叢集功能,但沒有必要使用NDB
作為複本中複製表格的儲存引擎(請參閱從 NDB 複製到其他儲存引擎)。然而,為了實現最大可用性,可以(且較佳)從一個 NDB 叢集複製到另一個 NDB 叢集,而這也是我們討論的情形,如下圖所示
在這種情況下,複製過程是指將來源叢集的連續狀態記錄並儲存到複本叢集。此過程由一個稱為 NDB 二進位日誌注入器執行緒的特殊執行緒完成,該執行緒在每個 MySQL 伺服器上執行,並產生一個二進位日誌(binlog
)。此執行緒確保叢集中產生二進位日誌的所有變更,而不僅僅是透過 MySQL 伺服器進行的變更,都以正確的序列化順序插入到二進位日誌中。我們將 MySQL 來源和複本伺服器稱為複製伺服器或複製節點,並將它們之間的資料流或通訊線路稱為複製通道。
有關使用 NDB 叢集和 NDB 叢集複製執行時間點復原的資訊,請參閱第 25.7.9.2 節,「使用 NDB 叢集複製進行時間點復原」。
NDB API 複本狀態變數。 NDB API 計數器可以在複本叢集上提供增強的監控功能。這些計數器實作為 NDB 統計_replica
狀態變數,如SHOW STATUS
的輸出中所見,或者在針對效能架構session_status
或global_status
表格的查詢結果中,在連線到 MySQL 伺服器的 mysql用戶端工作階段中,該伺服器在 NDB 叢集複製中充當複本。透過比較影響已複製 NDB
表格的陳述式執行前後這些狀態變數的值,您可以觀察到複本在 NDB API 層級上採取的相應動作,這在監控或疑難排解 NDB 叢集複製時可能很有用。第 25.6.16 節,「NDB API 統計計數器和變數」提供了其他資訊。
從 NDB 複製到非 NDB 表格。 可以將NDB
表格從充當複製來源的 NDB 叢集複製到使用其他 MySQL 儲存引擎(例如 InnoDB
或 MyISAM
)的表格,在複本 mysqld上。這受限於許多條件;有關詳細資訊,請參閱從 NDB 複製到其他儲存引擎和從 NDB 複製到非交易儲存引擎。