
我有一個任務將 Linux 伺服器從一台專用伺服器移動到另一台。
總的來說我的計劃如下:
- 晚上 - 關閉 httpd 和 mysql。透過 SSH 進行 RSYNC。
- 白天 - 開啟 http 和 mysql。
- 晚上關掉httpd和mysql。透過 SSH 進行 RSYNC。
- 晚上的時間。在兩台伺服器上開啟 httpd 和 mysql。更改 DNS 條目。
- 白天時間。監控伺服器狀態。
所以大多數情況下,為了同步 mysql 和 httpd,我會使用 rsync(沒有 mysqldump)。
聽起來不錯?有什麼注意事項嗎?
答案1
我建議兩種解決方案。就我個人而言,我更喜歡邏輯克隆方法,因為它可以在更少的停機時間內完成,並且資料庫複製是一種出於其他原因而獲得的通用功能。但是,精確克隆方法與您提出的方法類似,是一種用於遷移任何伺服器的通用強力方法。
精確複製
- 減少 DNS 項目的 TTL,讓您的生活更輕鬆。
- rsync 來源到目標。您甚至不必關閉來源上的服務;任何不一致的地方都將在步驟 (4) 和 (7) 中修復。
- 或者,您可以對新伺服器執行一些測試。找出需要在目標伺服器上進行哪些設定變更才能正常運作。您甚至可能需要重新啟動目標電腦以確保一切正常。
- 再次將來源同步到目標,撤銷對 (3) 中引入的新伺服器的任何“損壞”,找出更多差異,並了解運行增量 rsync 需要多長時間(這是預期停機時間的指標)。
- 關閉兩台機器上的所有服務。確保來源機器上的服務處於關閉狀態;您不希望出現新舊機器上資料不同的「裂腦」。
- 更改您的 DNS 項目。假設您不打算回滾,您可以對新條目使用正常的 TTL。
- 再次將來源同步到目標。
- 在目標電腦上套用您需要的任何設定更改,如步驟 (3) 中發現的那樣。
- 在目標機器上啟動服務。
邏輯克隆
查看設定MySQL複製。如果您尚未在 MySQL 伺服器上啟用二進位日誌記錄,則必須短暫還原資料庫才能啟用它。無論如何,我強烈建議啟用二進位日誌記錄,因為它對於執行未來操作(例如昇級 MySQL)非常方便,而且停機時間幾乎為零。
如果你設定了循環複製,如果 MySQL 是您應用程式的唯一資料存儲,您甚至可以同時執行新舊 Web 伺服器。