文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  複製與來源或副本關閉

19.5.1.28 複製與來源或副本關閉

關閉複製來源伺服器並稍後重新啟動是安全的。當副本失去與來源的連線時,副本會嘗試立即重新連線,如果失敗,則會定期重試。預設為每 60 秒重試一次。可以使用 CHANGE REPLICATION SOURCE TO 陳述式變更此設定。副本也能夠處理網路連線中斷的問題。但是,副本只有在 replica_net_timeout 秒內沒有收到來自來源的資料後,才會注意到網路中斷。如果您的中斷時間很短,您可能想要降低 replica_net_timeout 的值。請參閱 第 19.4.2 節,「處理副本的意外停止」

來源端的不正常關機(例如當機),可能會導致來源端的二進制日誌的最終位置小於副本讀取的最新位置,這是因為來源端的二進制日誌檔案未被刷新。這可能會導致來源端重新啟動時,副本無法進行複製。在來源伺服器的 my.cnf 檔案中設定 sync_binlog=1 有助於將這個問題最小化,因為這會導致來源端更頻繁地刷新其二進制日誌。為了在使用 InnoDB 進行交易的複製設定中獲得最大的耐用性和一致性,您也應該設定 innodb_flush_log_at_trx_commit=1。透過此設定,InnoDB 重做日誌緩衝區的內容會在每次交易提交時寫入日誌檔案,並且該日誌檔案會刷新到磁碟。請注意,即使有此設定,交易的耐用性仍然無法保證,因為作業系統或磁碟硬體可能會告知 mysqld 刷新到磁碟的操作已發生,即使它實際上尚未發生。

正常關閉副本是安全的,因為它會追蹤它停止的位置。但是,請小心副本沒有開啟臨時表;請參閱第 19.5.1.31 節, 「複製與臨時表」。不正常的關機可能會產生問題,特別是在問題發生之前磁碟快取未刷新到磁碟的情況下。

  • 對於交易,副本會先提交,然後更新 relay-log.info。如果在這兩個操作之間發生意外退出,中繼日誌處理將會比資訊檔案指示的更進一步,並且副本在重新啟動後,會重新執行中繼日誌中最後一筆交易的事件。

  • 如果副本更新了 relay-log.info,但伺服器主機在寫入刷新到磁碟之前當機,也可能會發生類似的問題。為了盡可能減少此情況發生的機會,請在副本的 my.cnf 檔案中設定 sync_relay_log_info=1。將 sync_relay_log_info 設定為 0 會導致沒有寫入被強制刷新到磁碟,並且伺服器會依賴作業系統不時刷新檔案。

如果您有良好的不斷電供應系統,您系統對於這些類型問題的容錯能力將會大大提高。