文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國 Letter) - 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 參考手冊  /  ...  /  複本的非同步連線容錯移轉

19.4.9.2 複本的非同步連線容錯移轉

當您在通道的 CHANGE REPLICATION SOURCE TO 陳述式中設定 SOURCE_CONNECTION_AUTO_FAILOVER=1 時,會針對群組複寫主要節點上的複寫通道自動啟動複本的非同步連線容錯移轉。此功能旨在讓一組傳送者和一組接收者即使在某些成員暫時無法使用時仍保持同步。當此功能處於啟用狀態且正確設定時,如果正在複寫的主要節點離線或進入錯誤狀態,新的主要節點會在選出後在同一通道上開始複寫。新的主要節點會使用通道的來源清單來選擇具有最高優先順序(權重)設定的來源,這可能與原始來源不同。

若要設定此功能,必須在複寫群組中的所有成員伺服器以及任何新加入的成員上設定複寫通道以及通道的複寫使用者帳戶和密碼。請確保 SOURCE_RETRY_COUNTSOURCE_CONNECT_RETRY 設定為僅允許少量重試嘗試的最小值,例如 3 和 10。您可以使用 CHANGE REPLICATION SOURCE TO 設定複寫通道,如果新伺服器是使用 MySQL 的複製功能佈建的,則所有這些都會自動發生。當主要節點加入時,通道的 SOURCE_CONNECTION_AUTO_FAILOVER 設定會從主要節點廣播到群組成員。如果您稍後在主要節點上停用通道的 SOURCE_CONNECTION_AUTO_FAILOVER,這也會廣播到次要伺服器,並且它們會變更通道的狀態以符合。

複本的非同步連線容錯移轉會使用群組複寫成員動作 mysql_start_failover_channels_if_primary 啟用和停用,該動作預設為啟用。您可以使用 group_replication_disable_member_action 函數,在主要節點上停用該成員動作,來為整個群組停用它,如以下範例所示

mysql> SELECT group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "AFTER_PRIMARY_ELECTION");

此功能只能在主要成員上變更,且必須為整個群組啟用或停用,因此您不能讓某些成員提供容錯移轉,而其他成員不提供。當 mysql_start_failover_channels_if_primary 成員動作停用時,次要成員不需要設定通道,但如果主要成員離線或進入錯誤狀態,通道的複寫會停止。請注意,如果有超過一個通道設定為 SOURCE_CONNECTION_AUTO_FAILOVER=1,則成員動作會涵蓋所有通道,因此無法透過該方法個別啟用和停用。在主要成員上設定 SOURCE_CONNECTION_AUTO_FAILOVER=0 可以停用個別通道。

當通道設定為 SOURCE_CONNECTION_AUTO_FAILOVER=1 時,其來源清單會在所有群組成員加入時廣播,並且在變更時也會廣播。無論來源是自動更新成員資格的受管理群組,或是使用 asynchronous_connection_failover_add_source()asynchronous_connection_failover_delete_source()asynchronous_connection_failover_add_managed()asynchronous_connection_failover_delete_managed() 手動新增或變更時,皆是如此。所有群組成員都會收到記錄在 mysql.replication_asynchronous_connection_failovermysql.replication_asynchronous_connection_failover_managed 表格中的目前來源清單。因為來源不一定要在受管理的群組中,因此您可以設定此功能,以將一組接收者與一個或多個替代的獨立傳送者,甚至是單一傳送者同步。不屬於複寫群組的獨立複本無法使用此功能。