以下章節包含有關 mysqld 選項和伺服器變數的資訊,這些選項和變數用於複製和控制二進制日誌。用於來源和複本的選項和變數,以及與二進制日誌和全域交易識別碼 (GTID) 相關的選項和變數會分開說明。其中還包含一組快速參考表,提供關於這些選項和變數的基本資訊。
特別重要的是 server_id
系統變數。
此變數指定伺服器 ID。 server_id
預設設定為 1。伺服器可以使用此預設 ID 啟動,但當啟用二進制日誌時,如果您沒有明確設定 server_id
來指定伺服器 ID,則會發出資訊訊息。
對於在複寫拓撲中使用的伺服器,您必須為每個複寫伺服器指定一個唯一的伺服器 ID,範圍從 1 到 232 − 1。「“唯一”」表示每個 ID 必須與複寫拓撲中任何其他來源或複本所使用的其他 ID 不同。如需更多資訊,請參閱 第 19.1.6.2 節,〈複寫來源選項和變數〉,以及 第 19.1.6.3 節,〈複本伺服器選項和變數〉。
如果伺服器 ID 設定為 0,則會進行二進位記錄,但是伺服器 ID 為 0 的來源會拒絕來自複本的任何連線,而伺服器 ID 為 0 的複本會拒絕連線到來源。請注意,雖然您可以將伺服器 ID 動態變更為非零值,但這樣做不會立即啟用複寫開始。您必須變更伺服器 ID,然後重新啟動伺服器才能初始化複本。
如需更多資訊,請參閱 第 19.1.2.2 節,〈設定複本組態〉。
除了在 server_id
系統變數中設定的預設或使用者提供的伺服器 ID 之外,MySQL 伺服器還會產生一個真實的 UUID。此 UUID 可作為全域唯讀變數 server_uuid
使用。
如本節先前所述,server_uuid
系統變數的存在不會改變為每個 MySQL 伺服器設定唯一 server_id
值,作為準備和執行 MySQL 複寫的一部分的要求。
系統變數 | server_uuid |
---|---|
範圍 | 全域 |
動態 | 否 |
SET_VAR 提示語適用 |
否 |
類型 | 字串 |
啟動時,MySQL 伺服器會自動取得 UUID,如下所示
auto.cnf
檔案的格式類似於 my.cnf
或 my.ini
檔案。auto.cnf
只有一個包含單個 server_uuid
設定和值的 [auto]
區段;該檔案的內容看起來類似於此處所示
[auto]
server_uuid=8a94f357-aab4-11df-86ab-c80aa9429562
auto.cnf
檔案是自動產生的;請勿嘗試寫入或修改此檔案。
當使用 MySQL 複寫時,來源和複本會知道彼此的 UUID。複本的 UUID 值可以在 SHOW REPLICAS
的輸出中看到。一旦執行了 START REPLICA
,來源的 UUID 值就可以在複本上的 SHOW REPLICA STATUS
的輸出中取得。
發出 STOP REPLICA
或 RESET REPLICA
陳述式不會重設複本上使用的來源 UUID。
伺服器的 server_uuid
也用於源自該伺服器的交易的 GTID 中。如需更多資訊,請參閱 第 19.1.3 節,〈使用全域交易識別碼的複寫〉。
啟動時,如果複寫 I/O(接收器)執行緒的來源 UUID 與其自身的 UUID 相等,則會產生錯誤並中止,除非已設定 --replicate-same-server-id
選項。此外,如果符合下列任一條件,複寫接收器執行緒會產生警告
不存在具有預期
server_uuid
的來源。來源的
server_uuid
已變更,即使從未執行過CHANGE REPLICATION SOURCE TO
陳述式。