本節概述使用單一複製通道啟動 NDB Cluster 複製的程序。
發出此命令以啟動 MySQL 複製來源伺服器,其中
id
是此伺服器的唯一 ID(請參閱第 25.7.2 節「NDB Cluster 複製的一般需求」)shellS> mysqld --ndbcluster --server-id=id \ --log-bin --ndb-log-bin &
這會使用正確的記錄格式,並啟用二進位記錄來啟動伺服器的 mysqld 處理序。也必須使用
--ndb-log-bin
選項,明確啟用對NDB
資料表更新的記錄。注意您也可以使用
--binlog-format=MIXED
啟動來源,在此情況下,在叢集之間進行複製時會自動使用以列為基礎的複製。NDB Cluster 複製不支援以陳述式為基礎的二進位記錄(請參閱第 25.7.2 節「NDB Cluster 複製的一般需求」)。如下所示啟動 MySQL 複本伺服器
shellR> mysqld --ndbcluster --server-id=id &
在剛才顯示的命令中,
id
是複本伺服器的唯一 ID。不需要在複本上啟用記錄。注意除非您想要立即開始複製,否則請延遲啟動複製執行緒,直到發出適當的
START REPLICA
陳述式(如下面步驟 4 所說明)。您可以使用--skip-replica-start
啟動複本,來執行此操作。必須將複本伺服器與來源伺服器的複製二進位日誌同步。如果二進位記錄先前未在來源上執行,請在複本上執行下列陳述式
mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_LOG_FILE='', -> SOURCE_LOG_POS=4;
這會指示複本從日誌的起點開始讀取來源伺服器的二進位日誌。否則,也就是說,如果您正在使用備份從來源載入資料,請參閱第 25.7.8 節「使用 NDB Cluster 複製實作容錯移轉」,以取得關於如何在這些情況下取得正確的值以用於
SOURCE_LOG_FILE
和SOURCE_LOG_POS
的資訊。最後,從複本上的 mysql 用戶端發出此命令,指示複本開始套用複製
mysqlR> START REPLICA;
這也會啟動從來源到複本的資料和變更傳輸。
也可以使用兩個複製通道,方式與下一節中所述的程序類似;本程序與使用單一複製通道之間的差異在第 25.7.7 節「使用兩個複製通道進行 NDB Cluster 複製」中說明。
也可以藉由啟用批次更新來改善叢集複製效能。這可以藉由在複本的 mysqld 處理序上設定系統變數 replica_allow_batching
來達成。通常,會在收到更新後立即套用。但是,使用批次處理會導致更新以每次 32 KB 的批次套用;這可能會產生更高的輸送量和更少的 CPU 使用率,尤其是在個別更新相對較小的情況下。
批次處理是以每個 epoch 為基礎運作;屬於多個交易的更新可以做為相同批次的一部分傳送。
即使更新總計少於 32 KB,也會在達到 epoch 結尾時套用所有未完成的更新。
批次處理可以在執行階段開啟和關閉。若要在執行階段啟動它,您可以使用這兩個陳述式中的任何一個
SET GLOBAL replica_allow_batching = 1;
SET GLOBAL replica_allow_batching = ON;
如果特定批次造成問題(例如效果似乎未正確複製的陳述式),可以使用下列任一陳述式停用批次處理
SET GLOBAL replica_allow_batching = 0;
SET GLOBAL replica_allow_batching = OFF;
您可以使用適當的 SHOW VARIABLES
陳述式來檢查目前是否正在使用批次處理,如下所示
mysql> SHOW VARIABLES LIKE 'replica%';