若要設定來源以使用基於二進制日誌檔案位置的複製,您必須確保已啟用二進制日誌記錄,並建立唯一的伺服器 ID。
複製拓樸中的每個伺服器都必須使用唯一的伺服器 ID 進行設定,您可以使用 server_id
系統變數指定此 ID。此伺服器 ID 用於識別複製拓樸中的個別伺服器,且必須是介於 1 和 (232)−1 之間的正整數。預設的 server_id
值為 1;您可以在執行階段發出如下的陳述式來變更此值
SET GLOBAL server_id = 2;
伺服器 ID 的組織和選取是任意的,只要每個伺服器 ID 與複製拓樸中任何其他伺服器使用的每個伺服器 ID 不同即可。請注意,如果先前為伺服器 ID 設定了值 0,您必須重新啟動伺服器,才能使用新的非零伺服器 ID 初始化來源。否則,當您變更伺服器 ID 時,不需要重新啟動伺服器,除非您進行其他需要重新啟動的組態變更。
來源上必須啟用二進制日誌記錄,因為二進制日誌是將變更從來源複製到其副本的基礎。二進制日誌記錄預設為啟用 (系統變數 log_bin
設定為 ON)。--log-bin
選項會告知伺服器二進制日誌檔案要使用的基礎名稱。建議您指定此選項,為二進制日誌檔案提供非預設的基礎名稱,這樣如果主機名稱變更,您可以輕鬆地繼續使用相同的二進制日誌檔案名稱 (請參閱 第 B.3.7 節「MySQL 中的已知問題」)。如果先前使用 --skip-log-bin
選項在來源上停用了二進制日誌記錄,您必須重新啟動伺服器,並且不使用此選項才能啟用它。
下列選項也會對來源端造成影響
為了在使用
InnoDB
並搭配交易的複製設定中,獲得最大的耐用性和一致性,您應該在來源端的my.cnf
檔案中使用innodb_flush_log_at_trx_commit=1
和sync_binlog=1
。請確保來源端未啟用
skip_networking
系統變數。如果已停用網路功能,複本將無法與來源端通信,導致複製失敗。