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


MySQL 9.0 參考手冊  /  ...  /  分散式復原的連線

20.5.4.1 分散式復原的連線

當加入的成員在分散式復原期間連線至線上現有成員以進行狀態傳輸時,加入的成員在連線上會作為用戶端,而現有成員會作為伺服器。當透過此連線從捐贈者的二進位記錄檔進行狀態傳輸時(使用非同步複製通道 group_replication_recovery),加入的成員會作為副本,而現有成員會作為來源。當透過此連線進行遠端複製作業時,加入的成員會作為接收者,而現有成員會作為捐贈者。在群組複製內容之外套用至這些角色的組態設定,也可以套用至群組複製,除非它們被群組複製特定組態設定或行為覆寫。

現有成員為加入成員提供分散式復原的連線,與群組複製用於群組線上成員之間通訊的連線不同。

  • 群組複製的群組通訊引擎 (XCom,一種 Paxos 變體) 用於遠端 XCom 執行個體之間 TCP 通訊的連線,是由 group_replication_local_address 系統變數所指定。此連線用於線上成員之間的 TCP/IP 訊息。與本機執行個體的通訊是透過使用共用記憶體的輸入通道進行。

  • 針對分散式復原,依預設,群組成員會將其標準 SQL 用戶端連線提供給加入的成員,如同 MySQL 伺服器的 hostnameport 系統變數所指定。如果 report_port 系統變數指定了替代的連接埠號碼,則會改用該連接埠號碼。

  • 群組成員可以改為宣傳分散式復原端點的替代清單,作為加入成員的專屬用戶端連線,讓您能夠將分散式復原流量與成員的常規用戶端使用者連線分開控制。您可以使用 group_replication_advertise_recovery_endpoints 系統變數來指定此清單,並且當成員加入群組時,會將其分散式復原端點清單傳輸到群組。預設情況下,成員會繼續提供標準 SQL 用戶端連線,如同較早版本。

重要

如果加入的成員無法正確地使用 MySQL 伺服器的 hostname 系統變數定義的主機名稱來識別其他成員,則分散式復原可能會失敗。建議執行 MySQL 的作業系統具備妥善設定的唯一主機名稱,無論是使用 DNS 或本機設定。伺服器用於 SQL 用戶端連線的主機名稱,可以在效能綱要資料表 replication_group_membersMember_host 資料行中驗證。如果多個群組成員外部化作業系統設定的預設主機名稱,加入的成員有可能無法將其解析為正確的成員位址,並且無法連線以進行分散式復原。在此情況下,您可以使用 MySQL 伺服器的 report_host 系統變數來設定每個伺服器要外部化的唯一主機名稱。

加入的成員建立分散式復原連線的步驟如下

  1. 當成員加入群組時,它會先使用其 group_replication_group_seeds 系統變數清單中包含的其中一個種子成員連線,最初會使用該清單中指定的 group_replication_local_address 連線。種子成員可能是群組的子集。

  2. 在此連線中,種子成員會使用群組複寫的成員服務,以檢視的形式,向加入成員提供群組中所有上線成員的清單。成員資訊包含每個成員提供的分散式復原端點或標準 SQL 用戶端連線的詳細資料,以用於分散式復原。

  3. 加入成員會從此清單中選取合適的群組成員做為其分散式復原的捐贈者,並遵循第 20.5.4.4 節「分散式復原的容錯」中所述的行為。

  4. 然後,加入成員會嘗試使用捐贈者宣告的分散式復原端點連線至捐贈者,依清單中指定的順序依序嘗試每個端點。如果捐贈者未提供任何端點,加入成員會嘗試使用捐贈者的標準 SQL 用戶端連線。連線的 SSL 需求如第 20.5.4.1.4 節「分散式復原的 SSL 和驗證」中所述的 group_replication_recovery_ssl_* 選項所指定。

  5. 如果加入成員無法連線至選取的捐贈者,它會重試其他合適的捐贈者,並遵循第 20.5.4.4 節「分散式復原的容錯」中所述的行為。請注意,如果加入成員在未建立連線的情況下耗盡了宣告的端點清單,它不會回復到捐贈者的標準 SQL 用戶端連線,而是會切換到另一個捐贈者。

  6. 當加入成員與捐贈者建立分散式復原連線時,它會使用該連線進行狀態傳輸,如第 20.5.4 節「分散式復原」中所述。所使用連線的主機和連接埠會顯示在加入成員的記錄檔中。請注意,如果使用遠端複製作業,當加入成員在作業結束時重新啟動時,它會與新的捐贈者建立連線,以從二進位記錄進行狀態傳輸。這可能是與原始用於遠端複製作業的捐贈者不同的成員的連線,也可能是與原始捐贈者不同的連線。無論如何,分散式復原程序會以與使用原始捐贈者時相同的方式繼續進行。

20.5.4.1.1 選取分散式復原端點的位址

group_replication_advertise_recovery_endpoints系統變數做為分散式復原端點提供的 IP 位址,不一定要為 MySQL 伺服器設定(也就是說,它們不一定要由admin_address系統變數或在bind_address系統變數的清單中指定)。它們必須指派給伺服器。任何使用的主機名稱都必須解析為本機 IP 位址。可以使用 IPv4 和 IPv6 位址。

為分散式復原端點提供的連接埠必須為 MySQL 伺服器設定,因此必須由portreport_portadmin_port系統變數指定。伺服器必須監聽這些連接埠上的 TCP/IP 連線。如果您指定admin_port,用於分散式復原的複寫使用者需要SERVICE_CONNECTION_ADMIN權限才能連線。選取admin_port可讓分散式復原連線與一般 MySQL 用戶端連線分開。

加入成員會依端點在清單中指定的順序,依序嘗試每個端點。如果group_replication_advertise_recovery_endpoints設定為 DEFAULT 而不是端點清單,則會提供標準 SQL 用戶端連線。請注意,標準 SQL 用戶端連線不會自動包含在分散式復原端點的清單中,如果捐贈者的端點清單在未連線的情況下耗盡,也不會做為備援提供。如果您想要提供標準 SQL 用戶端連線做為多個分散式復原端點之一,您必須明確將其包含在group_replication_advertise_recovery_endpoints指定的清單中。您可以將其放在最後一個位置,使其做為連線的最後手段。

群組成員的分散式復原端點(或未提供端點時的標準 SQL 用戶端連線)不需要新增至group_replication_ip_allowlist系統變數指定的群組複寫允許清單中。允許清單僅適用於每個成員的group_replication_local_address所指定的位址。加入成員必須由允許清單允許其與群組的初始連線,才能擷取分散式復原的位址。

當設定系統變數和發出START GROUP_REPLICATION陳述式時,會驗證您列出的分散式復原端點。如果無法正確剖析清單,或者由於伺服器未在主機上監聽任何端點而無法存取這些端點,則群組複寫會記錄錯誤且不會啟動。

20.5.4.1.2 分散式復原的壓縮

您可以選擇性地設定透過捐贈者的二進位記錄進行狀態傳輸的方法來進行分散式復原壓縮。如果網路頻寬受限,且捐贈者必須將許多交易傳輸給加入成員,則壓縮可讓分散式復原受益。group_replication_recovery_compression_algorithmsgroup_replication_recovery_zstd_compression_level系統變數會設定允許的壓縮演算法,以及在從捐贈者的二進位記錄執行狀態傳輸時使用的 zstd 壓縮層級。如需詳細資訊,請參閱第 6.2.8 節「連線壓縮控制」

請注意,這些壓縮設定不適用於遠端複製作業。當使用遠端複製作業進行分散式復原時,會套用複製外掛程式的clone_enable_compression設定。

20.5.4.1.3 分散式復原的複寫使用者

分散式復原需要具有正確權限的複寫使用者,以便群組複寫可以建立直接的成員對成員複寫通道。複寫使用者也必須具有正確的權限,才能在捐贈者上擔任遠端複製作業的複製使用者。每個群組成員的分散式復原都必須使用相同的複寫使用者。如需設定此複寫使用者的指示,請參閱第 20.2.1.3 節「分散式復原的使用者認證」。如需保護複寫使用者認證的指示,請參閱第 20.6.3.1 節「保護分散式復原的使用者認證」

20.5.4.1.4 分散式復原的 SSL 和驗證

分散式復原的 SSL 設定與正常群組通訊的 SSL 設定分開,後者由伺服器的 SSL 設定和group_replication_ssl_mode系統變數決定。對於分散式復原連線,可以使用專用的群組複寫分散式復原 SSL 系統變數,專門設定用於分散式復原的憑證和加密方式。

依預設,SSL 不會用於分散式復原連線。若要啟用它,請設定group_replication_recovery_use_ssl=ON,並設定群組複寫分散式復原 SSL 系統變數,如第 20.6.3 節「保護分散式復原連線」中所述。您需要設定為使用 SSL 的複寫使用者。

當分散式復原設定為使用 SSL 時,群組複寫會將此設定套用於遠端複製作業,以及從捐贈者的二進位記錄進行狀態傳輸。群組複寫會自動設定複製 SSL 選項(clone_ssl_caclone_ssl_certclone_ssl_key)的設定,以符合您對應的群組複寫分散式復原選項(group_replication_recovery_ssl_cagroup_replication_recovery_ssl_certgroup_replication_recovery_ssl_key)的設定。

如果您未使用 SSL 進行分散式復原(因此group_replication_recovery_use_ssl設定為 OFF),且群組複寫的複寫使用者帳戶使用 caching_sha2_password 外掛程式(預設)或 sha256_password 外掛程式進行驗證,則會使用 RSA 金鑰配對進行密碼交換。在這種情況下,請使用 group_replication_recovery_public_key_path 系統變數來指定 RSA 公開金鑰檔案,或使用 group_replication_recovery_get_public_key 系統變數來從來源要求公開金鑰,如第 20.6.3.1.1 節「使用快取 SHA-2 驗證外掛程式的複寫使用者」中所述。