本節概述使用單一複製通道啟動 NDB 叢集複製的程序。
發出以下命令來啟動 MySQL 複製來源伺服器,其中
id
是此伺服器的唯一 ID (請參閱第 25.7.2 節 「NDB 叢集複製的一般需求」)shellS> mysqld --ndbcluster --server-id=id \ --log-bin --ndb-log-bin &
這會使用適當的記錄格式啟用二進位記錄,來啟動伺服器的 mysqld 程序。此外,必須使用
--ndb-log-bin
選項,明確啟用對NDB
表格的更新記錄。注意您也可以使用
--binlog-format=MIXED
來啟動來源,在這種情況下,在叢集之間進行複製時,會自動使用基於列的複製。NDB 叢集複製不支援基於陳述式的二進位記錄 (請參閱第 25.7.2 節 「NDB 叢集複製的一般需求」)。如下所示啟動 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 叢集複製實作故障轉移」,以取得有關如何取得正確值,用於此類情況下的
SOURCE_LOG_FILE
和SOURCE_LOG_POS
的資訊。最後,指示複本從複本上的 mysql 用戶端發出以下命令,以開始套用複製
mysqlR> START REPLICA;
這也會啟動從來源到複本的資料和變更傳輸。
也可以使用兩個複製通道,方式與下一節中描述的程序類似;使用單一複製通道與使用兩個複製通道之間的差異,請見第 25.7.7 節 「使用兩個複製通道進行 NDB 叢集複製」。
也可以藉由啟用批次更新來改善叢集複製效能。這可以藉由在複本的 mysqld 程序上設定系統變數 replica_allow_batching
來完成。通常,更新會在收到後立即套用。但是,使用批次處理會導致更新以每個 32 KB 的批次套用;這可以提高輸送量,並減少 CPU 使用率,尤其是在個別更新相對較小的情況下。
批次處理以每個紀元為基礎運作;屬於多個交易的更新可以當作同一個批次的一部分傳送。
當達到紀元末尾時,即使更新總數少於 32 KB,也會套用所有未完成的更新。
批次處理可以在執行時開啟和關閉。若要在執行時啟用它,您可以使用以下兩個陳述式的其中一個
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%';