為了確保複製檔案的完整性,應在關閉 MySQL 副本伺服器時備份 MySQL 副本上的原始資料檔案。如果 MySQL 伺服器仍在執行,背景工作可能仍在更新資料庫檔案,特別是涉及具有背景處理程序的儲存引擎,例如 InnoDB
。使用 InnoDB
,這些問題應在當機復原期間解決,但由於副本伺服器可以在備份過程中關閉,而不會影響來源的執行,因此利用此功能是有道理的。
若要關閉伺服器並備份檔案
關閉副本 MySQL 伺服器
$> mysqladmin shutdown
複製資料檔案。您可以使用任何合適的複製或封存公用程式,包括 cp、tar 或 WinZip。例如,假設資料目錄位於目前目錄下,您可以依照下列方式封存整個目錄
$> tar cf /tmp/dbbackup.tar ./data
再次啟動 MySQL 伺服器。在 Unix 下
$> mysqld_safe &
在 Windows 下
C:\> "C:\Program Files\MySQL\MySQL Server 9.0\bin\mysqld"
一般來說,您應該備份複本 MySQL 伺服器的整個資料目錄。如果您希望能夠還原資料並以複本身分運作(例如,在複本發生故障時),除了資料之外,您還需要擁有複本的連線中繼資料儲存庫和應用程式中繼資料儲存庫,以及中繼日誌檔。這些項目是為了在您還原複本的資料後恢復複寫所必需的。假設表格已用於複本的連線中繼資料儲存庫和應用程式中繼資料儲存庫(請參閱第 19.2.4 節:「中繼日誌和複寫中繼資料儲存庫」),這是 MySQL 9.0 中的預設設定,這些表格會與資料目錄一起備份。如果檔案已用於儲存庫(此方法已棄用),您必須單獨備份這些檔案。如果中繼日誌檔已放置在與資料目錄不同的位置,則必須單獨備份這些檔案。
如果您遺失了中繼日誌,但仍然有 relay-log.info
檔案,您可以檢查它以確定複寫 SQL 執行緒在來源的二進位日誌中執行到哪個位置。然後,您可以使用 CHANGE REPLICATION SOURCE TO
,並搭配 SOURCE_LOG_FILE
和 SOURCE_LOG_POS
選項,以告知複本從該點重新讀取二進位日誌。這需要二進位日誌仍然存在於來源伺服器上。
如果您的複本正在複寫 LOAD DATA
陳述式,您也應該備份任何位於複本用於此目的之目錄中的 SQL_LOAD-*
檔案。複本需要這些檔案才能恢復任何中斷的 LOAD DATA
作業的複寫。此目錄的位置是系統變數 replica_load_tmpdir
的值。如果伺服器啟動時未設定該變數,則目錄位置是系統變數 tmpdir
的值。