以下章節包含關於 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。這可以作為全域唯讀變數 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 節「使用全域交易識別符進行複製」。
啟動時,如果副本來源的 UUID 等於其自身的 UUID,複製 I/O(接收器)執行緒會產生錯誤並中止,除非已設定 --replicate-same-server-id
選項。此外,如果符合以下任一條件,複製接收器執行緒會產生警告
不存在具有預期
server_uuid
的來源。來源的
server_uuid
已變更,但從未執行過CHANGE REPLICATION SOURCE TO
陳述式。