您可以使用非同步連線故障轉移機制,在副本與其來源之間的現有連線失敗後,自動建立與新來源的非同步(來源到副本)複製連線。非同步連線故障轉移機制可用於保持副本與多個共用資料的 MySQL 伺服器或伺服器群組同步。潛在來源伺服器的清單會儲存在副本上,並且在發生連線失敗時,會根據您設定的加權優先順序從清單中選取新的來源。
非同步連線故障轉移機制也支援群組複製拓撲,透過自動監控群組成員資格的變更並區分主要和次要伺服器。當您將群組成員新增至來源清單並將其定義為受管理群組的一部分時,非同步連線故障轉移機制會更新來源清單以使其與成員資格變更保持一致,在群組成員加入或離開時自動新增和移除它們。只有多數的線上群組成員才會用於連線和取得狀態。受管理群組的最後剩餘成員即使離開群組也不會自動移除,以保持受管理群組的組態。但是,如果不再需要受管理群組,您可以手動刪除它。
非同步連線容錯移轉機制也允許屬於受管理複寫群組的複本,在目前接收者(群組的主要伺服器)發生故障時,自動重新連線到傳送者。此功能適用於以單一主要模式設定的群組複寫,其中群組的主要伺服器是使用此機制的複寫通道的複本。此功能旨在讓一組傳送者和一組接收者保持同步,即使某些成員暫時無法使用也是如此。它也能夠讓一組接收者與一個或多個不屬於受管理群組的傳送者同步。不屬於複寫群組的複本無法使用此功能。
使用非同步連線容錯移轉機制的必要條件如下:
來源和複本都必須使用 GTID(
gtid_mode=ON
),並且複本上必須啟用CHANGE REPLICATION SOURCE TO
陳述式的SOURCE_AUTO_POSITION
選項,以便使用 GTID 自動定位來連線到來源。用於通道的來源清單中所有來源伺服器上,都必須存在相同的複寫使用者帳戶和密碼。此帳戶用於連線到每個來源。您可以為不同的通道設定不同的帳戶。
複寫使用者帳戶必須具備 Performance Schema 資料表的
SELECT
權限,例如,發出GRANT SELECT ON performance_schema.* TO '
。repl_user
';啟動複寫的陳述式中不能指定複寫使用者帳戶和密碼,因為它們需要在自動重新啟動時可用於連線到備用來源。它們必須使用複本上的
CHANGE REPLICATION SOURCE TO
陳述式為通道設定,並記錄在複寫中繼資料儲存庫中。如果使用非同步連線容錯移轉機制的通道位於群組複寫單一主要模式群組的主要伺服器上,則預設也會啟用複本之間的非同步連線容錯移轉。在這種情況下,複寫通道以及通道的複寫使用者帳戶和密碼必須設定在複寫群組中的所有次要伺服器,以及任何新加入的成員上。如果新伺服器是使用 MySQL 的複製功能佈建的,則這一切都會自動發生。
重要事項如果您不希望在這種情況下發生複本之間的非同步連線容錯移轉,請透過使用
group_replication_disable_member_action
函數,停用群組的成員動作mysql_start_failover_channels_if_primary
來停用它。停用此功能後,您不需要在次要群組成員上設定複寫通道,但如果主要伺服器離線或進入錯誤狀態,則通道的複寫將會停止。
MySQL InnoDB ClusterSet 可用於為 InnoDB Cluster 部署提供災害容錯,方法是將主要 InnoDB Cluster 與位於其他位置(例如不同的資料中心)的一個或多個自身複本連結。考慮使用此解決方案來簡化新的多群組部署設定,以進行複寫、容錯移轉和災害復原。您可以將現有的群組複寫部署採用為 InnoDB Cluster。
InnoDB ClusterSet 和 InnoDB Cluster 旨在抽象化並簡化設定、管理、監控、恢復和修復複寫群組的程序。InnoDB ClusterSet 使用專用的 ClusterSet 複寫通道,自動管理從主要叢集到複本叢集的複寫。如果主要叢集無法正常運作,您可以使用管理員指令來觸發群組之間的受控切換或緊急容錯移轉。在初始設定完成後,當需求變更時,可以輕鬆地將伺服器和群組新增至 InnoDB ClusterSet 部署或從中移除。如需更多資訊,請參閱 MySQL InnoDB ClusterSet。