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


MySQL 8.4 參考手冊  /  ...  /  啟動 NDB 叢集複製 (單一複製通道)

25.7.6 啟動 NDB 叢集複製 (單一複製通道)

本節概述使用單一複製通道啟動 NDB 叢集複製的程序。

  1. 發出以下命令來啟動 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 叢集複製的一般需求」)。

  2. 如下所示啟動 MySQL 複本伺服器

    shellR> mysqld --ndbcluster --server-id=id &

    在剛剛顯示的命令中,id 是複本伺服器的唯一 ID。複本上不需要啟用記錄。

    注意

    除非您希望立即開始複製,否則請延遲啟動複製執行緒,直到發出適當的 START REPLICA 陳述式,如下面步驟 4 中所述。您可以使用 --skip-replica-start 來啟動複本,即可達成此目的。

  3. 必須將複本伺服器與來源伺服器的複製二進位日誌同步。如果先前來源上尚未執行二進位記錄,請在複本上執行以下陳述式

    mysqlR> CHANGE REPLICATION SOURCE TO
         -> SOURCE_LOG_FILE='',
         -> SOURCE_LOG_POS=4;

    這會指示複本從日誌的起點開始讀取來源伺服器的二進位日誌。否則 (也就是說,如果您使用備份從來源載入資料),請參閱第 25.7.8 節 「使用 NDB 叢集複製實作故障轉移」,以取得有關如何取得正確值,用於此類情況下的 SOURCE_LOG_FILESOURCE_LOG_POS 的資訊。

  4. 最後,指示複本從複本上的 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%';