Mysql

MySQL / InnoDB 複製:如何執行崩潰恢復?

  • September 9, 2011

如何在 MySQL/InnoDB 主從非同步複製設置中執行崩潰恢復?

具體來說:

  1. 如果slave崩潰了,我如何讓它在我恢復後與master同步?
  2. 如果 master 崩潰,slave 將成為 master。如何使新的主伺服器與其他從伺服器同步?而當原來的主控恢復後,我如何將它與新的主控同步?

因為複制是非同步的,所以已經送出給主伺服器的事務可能無法在崩潰發生之前離開主伺服器。所以原來的主人和奴隸之間可能存在不一致,其中一個將成為新的主人。

同樣,被提升為新主人的奴隸可能沒有所有奴隸中最新的交易。所以新的主人可能在它的一個奴隸“後面”。

如何解決所有這些潛在的不一致?

有什麼工具可以幫助完成這些任務?

謝謝。

我試一試:

  1. 如果從伺服器崩潰並且您將其重新聯機,它應該自動與主伺服器同步。您可以使用 mysql 命令“SHOW SLAVE STATUS \G”進行檢查。尤其看這幾行:
Slave_IO_Running:是
Slave_SQL_Running:是
Last_Errno: 0
最後_錯誤:
Seconds_Behind_Master:0

如果它看起來像這樣,一切都很好。如果 Seconds_Behind_Master > 0,則副本正在追趕。如果 Slave_IO_Running 沒有執行,你有一個不常見的問題,檢查錯誤日誌。如果 Slave_SQL_Running 沒有執行,請嘗試使用“START SLAVE;”啟動它。如果失敗,請檢查“Last_Error”行中是否提到了錯誤。

  1. 從屬變為主:如果您沒有鏈設置(這可能不是一個好主意),則需要更改新主和從的複製配置。

要重新同步舊的主伺服器,只需將其添加為從伺服器並讓複製完成。然後您可以使系統離線並切換回舊主機。

交易是個問題。特別是如果您使用像 MyISAM 這樣的事務不可知後端。使用 InnoDB 應該可以。AFAIK 僅將完成的事務寫入二進制日誌,從而寫入副本。這僅在數據庫知道您的事務時才適用。

使用前面給出的命令,您可以檢查所有從屬的狀態並將最新的(提示:Log_Pos)從屬提升為主。也許只是暫時的,直到所有的奴隸都再次新鮮,然後再提升指定的伺服器。

就我個人而言,我認為您需要一個特殊的設置(例如混合 WAN 和 LAN 從站,大量事務查詢),以便在主站崩潰後擁有具有不同中繼狀態的從站。

引用自:https://serverfault.com/questions/290880