若要啟用複製通道的非同步連線容錯移轉,請在此通道的 CHANGE REPLICATION SOURCE TO
陳述式中設定 SOURCE_CONNECTION_AUTO_FAILOVER=1
。該通道必須正在使用 GTID 自動定位 (SOURCE_AUTO_POSITION = 1
)。
當現有來源連線失敗時,副本會先使用 CHANGE REPLICATION SOURCE TO
的 SOURCE_RETRY_COUNT
選項指定的次數重試相同連線。嘗試之間的間隔由 SOURCE_CONNECT_RETRY
選項設定。當這些嘗試耗盡時,非同步連線容錯移轉機制會接管。請注意,這些選項的預設值是針對連線到單一來源而設計的,因此副本會重試相同的連線 60 天。若要確保可以立即啟用非同步連線容錯移轉機制,請將 SOURCE_RETRY_COUNT
和 SOURCE_CONNECT_RETRY
設定為最小數字,以便只允許對相同來源進行幾次重試嘗試,以防連線失敗是由於暫時性網路中斷所導致。適當的值為 SOURCE_RETRY_COUNT=3
和 SOURCE_CONNECT_RETRY=10
,這會讓副本以 10 秒的間隔重試連線 3 次。
您還需要設定複製通道的來源清單,以指定可用於容錯移轉的來源。您可以使用 asynchronous_connection_failover_add_source
和 asynchronous_connection_failover_delete_source
函式來新增和移除單一複製來源伺服器,以設定和管理來源清單。若要新增和移除受管理伺服器群組,請改用 asynchronous_connection_failover_add_managed
和 asynchronous_connection_failover_delete_managed
函式。
這些函式會命名相關的複製通道,並指定要新增至通道來源清單或從中刪除的 MySQL 執行個體的主機名稱、連接埠號碼、網路命名空間和加權優先順序 (1-100,其中 100 為最高優先順序)。對於受管理群組,您還需指定受管理服務類型 (目前僅提供群組複製) 和受管理群組的識別碼 (對於群組複製,這是 group_replication_group_name
系統變數的值)。當您新增受管理群組時,只需要新增一個群組成員,副本就會自動從目前的群組成員資格中新增其餘成員。當您刪除受管理群組時,會一併刪除整個群組。
非同步連線容錯移轉機制也會在來源清單中另一個可用伺服器具有較高優先順序(權重)設定時,將連線容錯移轉。此功能確保複本始終連接到最合適的來源伺服器,並且適用於受管理群組和單一(非受管理)伺服器。對於受管理群組,來源的權重取決於它是主要伺服器還是次要伺服器。因此,假設您設定受管理群組時,給予主要伺服器較高的權重,而給予次要伺服器較低的權重,當主要伺服器變更時,較高的權重會被分配給新的主要伺服器,因此複本會將連線切換到新的主要伺服器。如果目前連線的受管理來源伺服器離開受管理群組,或不再是受管理群組中的多數成員,非同步連線容錯移轉機制也會變更連線。
在容錯移轉連線時,會從通道的來源清單中列出的替代來源中,選擇具有最高優先順序(權重)設定的來源進行第一次連線嘗試。複本會先檢查它是否可以連線到來源伺服器,或者在受管理群組的情況下,檢查來源伺服器在群組中是否具有 ONLINE
狀態(而非 RECOVERING
或不可用)。如果權重最高的來源不可用,則複本會依權重降序嘗試所有列出的來源,然後從權重最高的來源重新開始。如果多個來源具有相同的權重,則複本會隨機排序它們。如果複本需要再次開始處理清單,它會包含並重試最初發生連線失敗的來源。
來源清單儲存在 mysql.replication_asynchronous_connection_failover
和 mysql.replication_asynchronous_connection_failover_managed
表格中,並且可以在 Performance Schema 的 replication_asynchronous_connection_failover
和 replication_asynchronous_connection_failover_managed
表格中檢視。複本使用一個監控執行緒來追蹤受管理群組的成員資格並更新來源清單 (thread/sql/replica_monitor
)。SOURCE_CONNECTION_AUTO_FAILOVER
選項的設定,位於 CHANGE REPLICATION SOURCE TO
陳述式中,以及來源清單,會在遠端複製作業期間傳輸到複本的複製品。