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 複製到非交易儲存引擎。