本節概述一些建立備份的一般方法。
使用 MySQL Enterprise Backup 進行熱備份
MySQL 企業版的客戶可以使用 MySQL Enterprise Backup 產品來執行整個執行個體或選定的資料庫、資料表或兩者的 實體備份。此產品包含 增量和 壓縮備份的功能。備份實體資料庫檔案比使用 mysqldump
命令等邏輯技術還原速度快得多。InnoDB
資料表使用 熱備份機制複製。(理想情況下,InnoDB
資料表應佔資料的絕大部分。)來自其他儲存引擎的資料表使用 暖備份機制複製。有關 MySQL Enterprise Backup 產品的概述,請參閱 第 32.1 節,「MySQL Enterprise Backup 概觀」。
使用 mysqldump 進行備份
mysqldump 程式可以建立備份。它可以備份所有類型的資料表。(請參閱 第 9.4 節,「使用 mysqldump 進行備份」。)
對於 InnoDB
資料表,可以使用 --single-transaction
選項執行線上備份,該選項不會對資料表進行鎖定。mysqldump。請參閱 第 9.3.1 節,「建立備份原則」。
透過複製資料表檔案進行備份
可以透過複製資料表檔案 (*.MYD
、*.MYI
檔案,以及相關的 *.sdi
檔案) 來備份 MyISAM 資料表。若要取得一致的備份,請停止伺服器或鎖定並清除相關資料表
FLUSH TABLES tbl_list WITH READ LOCK;
您只需要讀取鎖定;這可讓其他用戶端在您複製資料庫目錄中的檔案時繼續查詢資料表。需要清除以確保在您開始備份之前,所有作用中的索引頁都寫入磁碟。請參閱 第 15.3.6 節,「LOCK TABLES 和 UNLOCK TABLES 陳述式」,以及 第 15.7.8.3 節,「FLUSH 陳述式」。
只要伺服器沒有更新任何內容,您也可以透過簡單地複製資料表檔案來建立二進位備份。(但請注意,如果您的資料庫包含 InnoDB
資料表,則資料表檔案複製方法無效。此外,即使伺服器未主動更新資料,InnoDB
可能仍然在記憶體中快取已修改的資料,並且未清除至磁碟。)
有關此備份方法的範例,請參閱 第 15.2.6 節,「IMPORT TABLE 陳述式」中的匯出和匯入範例。
建立分隔文字檔案備份
若要建立包含資料表資料的文字檔案,您可以使用 SELECT * INTO OUTFILE '
。該檔案是在 MySQL 伺服器主機上建立,而不是在用戶端主機上建立。對於此陳述式,輸出檔案不能已經存在,因為允許覆寫檔案會構成安全風險。請參閱 第 15.2.13 節,「SELECT 陳述式」。此方法適用於任何類型的資料檔案,但僅儲存資料表資料,而不儲存資料表結構。file_name
' FROM tbl_name
建立文字資料檔案 (以及包含備份資料表 CREATE TABLE
陳述式的檔案) 的另一種方式是使用 mysqldump 與 --tab
選項。請參閱 第 9.4.3 節,「使用 mysqldump 以分隔文字格式傾印資料」。
若要重新載入分隔文字資料檔案,請使用 LOAD DATA
或 mysqlimport。
透過啟用二進位日誌進行增量備份
MySQL 支援使用二進位日誌進行增量備份。二進位日誌檔案會提供您需要複寫在您執行備份的時間點之後對資料庫所做的變更的資訊。因此,若要允許將伺服器還原到時間點,必須在其上啟用二進位記錄,這是 MySQL 8.4 的預設設定;請參閱 第 7.4.4 節,「二進位日誌」。
在您想要建立增量備份 (包含自上次完整或增量備份以來發生的所有變更) 的那一刻,您應該使用 FLUSH LOGS
旋轉二進位日誌。完成此動作後,您需要將所有二進位日誌複製到備份位置,這些日誌的範圍從上次完整或增量備份的那一刻到倒數第二個。這些二進位日誌是增量備份;在還原時,您會如 第 9.5 節,「時間點 (增量) 還原」中所述套用這些日誌。您下次執行完整備份時,也應該使用 FLUSH LOGS
或 mysqldump --flush-logs 旋轉二進位日誌。請參閱 第 6.5.4 節,「mysqldump — 資料庫備份程式」。
使用複本進行備份
如果您在建立備份時伺服器發生效能問題,則一個可能有幫助的策略是設定複寫,並在複本上執行備份,而不是在來源上執行。請參閱 第 19.4.1 節,「使用複寫進行備份」。
如果您要備份副本,無論您選擇哪種備份方法,都應該在備份副本的資料庫時,同時備份其連線中繼資料儲存庫和應用程式中繼資料儲存庫(請參閱第 19.2.4 節「中繼日誌和複製中繼資料儲存庫」)。此資訊對於在還原副本資料後恢復複製始終是必要的。如果您的副本正在複製 LOAD DATA
陳述式,您也應該備份副本為此目的使用的目錄中存在的任何 SQL_LOAD-*
檔案。副本需要這些檔案才能恢復任何中斷的 LOAD DATA
操作的複製。此目錄的位置是系統變數 replica_load_tmpdir
的值。如果伺服器啟動時未設定該變數,則目錄位置是系統變數 tmpdir
的值。
復原損毀的資料表
如果您必須還原已損毀的 MyISAM
資料表,請先嘗試使用 REPAIR TABLE
或 myisamchk -r 來復原它們。這應該適用於 99.9% 的所有情況。如果 myisamchk 失敗,請參閱第 9.6 節「MyISAM 資料表維護和當機復原」。
使用檔案系統快照進行備份
如果您使用 Veritas 檔案系統,您可以像這樣進行備份
從用戶端程式執行
FLUSH TABLES WITH READ LOCK
。從另一個 Shell 執行
mount vxfs snapshot
。從第一個用戶端執行
UNLOCK TABLES
。從快照複製檔案。
卸載快照。
類似的快照功能可能在其他檔案系統中提供,例如 LVM 或 ZFS。