本節說明複製操作不同階段的失敗處理。
會檢查先決條件(請參閱遠端複製先決條件)。
如果先決條件檢查期間發生失敗,則
CLONE INSTANCE
操作會報告錯誤。
只有在
clone_block_ddl
變數設定為ON
時(預設設定為OFF
),才會封鎖捐贈者上的並行 DDL。請參閱第 7.6.7.4 節:「複製和並行 DDL」。如果複製操作無法在
clone_ddl_timeout
變數指定的時間限制內取得 DDL 鎖定,則會報告錯誤。在將資料複製到接收者資料目錄之前,會移除接收者上使用者建立的資料(結構描述、表格、表格空間)和二進位日誌。
當遠端複製操作期間從接收者資料目錄移除使用者建立的資料和二進位日誌時,資料不會儲存,如果發生失敗可能會遺失。如果資料很重要,則應在啟動遠端複製操作之前進行備份。
為了提供資訊,伺服器錯誤日誌會列印警告,以指定何時開始和完成資料移除
[Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning: Started... [Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning: Finished
如果移除資料時發生失敗,接收者可能會保留在複製操作之前存在的部份結構描述、表格和表格空間。在執行複製操作期間或發生失敗之後的任何時間,伺服器都始終處於一致的狀態。
資料會從捐贈者複製。使用者建立的資料、字典中繼資料和其他系統資料都會複製。
如果複製資料時發生失敗,則複製操作會回復,並移除所有複製的資料。在此階段,接收者上先前存在的使用者建立的資料和二進位日誌也已移除。
如果發生這種情況,您可以修正失敗的原因,然後重新執行複製操作,或者放棄複製操作,然後從複製操作之前進行的備份還原接收者資料。
伺服器會自動重新啟動(適用於未複製到指定目錄的遠端複製操作)。啟動期間,會執行典型的伺服器啟動工作。
如果自動伺服器重新啟動失敗,您可以手動重新啟動伺服器,以完成複製操作。
如果在複製操作期間發生網路錯誤,若錯誤在捐贈者實例上定義的 clone_donor_timeout_after_network_failure
變數指定的時間內解決,則操作將會恢復。clone_donor_timeout_after_network_failure
的預設設定為 5 分鐘,但支援 0 到 30 分鐘的範圍。如果操作未在分配的時間內恢復,它會中止並返回錯誤,且捐贈者會丟棄快照。設定為零會導致捐贈者在發生網路錯誤時立即丟棄快照。設定較長的逾時時間可以提供更多時間來解決網路問題,但也會增加捐贈者實例上的增量大小,這會增加複製復原時間,以及在複製旨在作為複本或複製群組成員的情況下的複製延遲。
複製閒置逾時設定為預設的 wait_timeout
設定,即 28800 秒(8 小時)。