本節說明不同類型備份的特性。
實體 (原始) 與邏輯備份
實體備份包含儲存資料庫內容的目錄和檔案的原始副本。此類備份適用於當問題發生時需要快速復原的大型、重要資料庫。
邏輯備份會儲存以邏輯資料庫結構 (CREATE DATABASE
、CREATE TABLE
陳述式) 和內容 (INSERT
陳述式或分隔文字檔案) 表示的資訊。此類備份適用於較少量的資料,您可能會編輯資料值或表格結構,或在不同的機器架構上重新建立資料。
實體備份方法具有以下特性
備份包含資料庫目錄和檔案的精確副本。通常這是 MySQL 資料目錄的全部或部分副本。
實體備份方法比邏輯方法快,因為它們只涉及檔案複製,而無需轉換。
輸出比邏輯備份更精簡。
由於備份速度和精簡性對於繁忙、重要的資料庫很重要,因此 MySQL Enterprise Backup 產品會執行實體備份。如需 MySQL Enterprise Backup 產品的概述,請參閱 第 32.1 節,「MySQL Enterprise Backup 概述」。
備份和還原粒度範圍從整個資料目錄的層級到單個檔案的層級。這可能會或可能不會提供表格層級的粒度,具體取決於儲存引擎。例如,
InnoDB
表格可以各自位於單獨的檔案中,或與其他InnoDB
表格共用檔案儲存;每個MyISAM
表格唯一對應於一組檔案。除了資料庫之外,備份還可以包含任何相關檔案,例如日誌或組態檔案。
以這種方式備份來自
MEMORY
表格的資料很棘手,因為它們的內容沒有儲存在磁碟上。(MySQL Enterprise Backup 產品具有一項功能,您可以在備份期間從MEMORY
表格中擷取資料。)備份只能攜帶到具有相同或類似硬體特性的其他機器。
可以在 MySQL 伺服器未執行時執行備份。如果伺服器正在執行,則必須執行適當的鎖定,以便伺服器在備份期間不會變更資料庫內容。MySQL Enterprise Backup 會自動為需要鎖定的表格執行此鎖定。
實體備份工具包括 MySQL Enterprise Backup 的 mysqlbackup (適用於
InnoDB
或任何其他表格),或檔案系統層級的命令 (例如 cp、scp、tar、rsync) (適用於MyISAM
表格)。對於還原
MySQL Enterprise Backup 會還原其備份的
InnoDB
和其他表格。ndb_restore 還原
NDB
表格。可以在檔案系統層級複製的檔案可以使用檔案系統命令複製回其原始位置。
邏輯備份方法具有以下特性
備份是透過查詢 MySQL 伺服器以取得資料庫結構和內容資訊來完成的。
備份速度比實體方法慢,因為伺服器必須存取資料庫資訊並將其轉換為邏輯格式。如果輸出寫入用戶端,伺服器還必須將其傳送到備份程式。
輸出比實體備份大,尤其是在以文字格式儲存時。
備份和還原粒度可在伺服器層級 (所有資料庫)、資料庫層級 (特定資料庫中的所有表格) 或表格層級取得。無論儲存引擎為何,都是如此。
備份不包括日誌或組態檔案,或其他不屬於資料庫的資料庫相關檔案。
以邏輯格式儲存的備份是機器獨立且高度可攜的。
邏輯備份是在 MySQL 伺服器執行時執行的。伺服器不會離線。
邏輯備份工具包括 mysqldump 程式和
SELECT ... INTO OUTFILE
陳述式。這些適用於任何儲存引擎,甚至包括MEMORY
。若要還原邏輯備份,可以使用 mysql 用戶端處理 SQL 格式的傾印檔案。若要載入分隔文字檔案,請使用
LOAD DATA
陳述式或 mysqlimport 用戶端。
線上與離線備份
線上備份會在 MySQL 伺服器執行時發生,以便可以從伺服器取得資料庫資訊。離線備份會在伺服器停止時發生。這種區別也可以描述為 「熱」 與 「冷」 備份;「暖」 備份是指伺服器保持執行但鎖定以防止在您從外部存取資料庫檔案時修改資料。
線上備份方法具有以下特性
備份對其他用戶端的干擾較少,這些用戶端可以在備份期間連線到 MySQL 伺服器,並且可能可以存取資料,具體取決於它們需要執行的作業。
必須小心施加適當的鎖定,以防止發生可能會損害備份完整性的資料修改。MySQL Enterprise Backup 產品會自動執行此類鎖定。
離線備份方法具有以下特性
用戶端可能會受到負面影響,因為伺服器在備份期間無法使用。因此,此類備份通常是從可以離線而不會損害可用性的複本中取得的。
備份程序更簡單,因為不會有來自用戶端活動的干擾。
線上和離線之間的類似區別適用於復原作業,並且適用類似的特性。然而,與線上備份相比,用戶端更容易受到線上復原的影響,因為復原需要更強的鎖定。在備份期間,用戶端可能可以讀取正在備份的資料。復原會修改資料,而不只是讀取資料,因此必須防止用戶端在還原資料時存取資料。
本機與遠端備份
本機備份是在執行 MySQL 伺服器的同一主機上執行,而遠端備份是在不同的主機上完成。對於某些類型的備份,即使輸出是本機寫入伺服器,也可以從遠端主機啟動備份。主機。
mysqldump 可以連線至本機或遠端伺服器。對於 SQL 輸出(
CREATE
和INSERT
陳述式),可以執行本機或遠端傾印,並在用戶端產生輸出。對於以分隔符號分隔的文字輸出(使用--tab
選項),資料檔案會在伺服器主機上建立。SELECT ... INTO OUTFILE
可以從本機或遠端用戶端主機起始,但輸出檔案會在伺服器主機上建立。實體備份方法通常在本機 MySQL 伺服器主機上起始,以便將伺服器離線,儘管複製檔案的目的地可能是遠端。
快照備份
某些檔案系統實作允許進行 「快照」。這些快照會在指定時間點提供檔案系統的邏輯複本,而無需實體複製整個檔案系統。(例如,實作可能會使用寫時複製技術,因此只需要複製快照時間之後修改的檔案系統部分。)MySQL 本身不提供擷取檔案系統快照的功能。此功能可透過 Veritas、LVM 或 ZFS 等協力廠商解決方案取得。
完整備份與增量備份
完整備份包括在指定時間點由 MySQL 伺服器管理的所有資料。增量備份包含在指定時間範圍內(從一個時間點到另一個時間點)對資料所做的變更。MySQL 有不同的方式執行完整備份,例如本節稍早所述的方法。透過啟用伺服器的二進位日誌,即可進行增量備份,伺服器會使用二進位日誌來記錄資料變更。
完整復原與時間點(增量)復原
完整復原會從完整備份還原所有資料。這會將伺服器執行個體還原為建立備份時的狀態。如果該狀態不夠新,則可以在完整復原後,復原自完整備份以來所做的增量備份,使伺服器達到較新的狀態。
增量復原是復原在指定時間範圍內所做的變更。這也稱為時間點復原,因為它可以將伺服器的狀態更新到指定時間。時間點復原基於二進位日誌,通常在從備份檔案進行完整復原之後執行,該復原會將伺服器還原到建立備份時的狀態。然後,會套用二進位日誌檔案中寫入的資料變更作為增量復原,以重做資料修改並將伺服器更新到所需的時間點。
表格維護
如果表格損毀,資料完整性可能會受損。對於 InnoDB
表格,這不是一個常見的問題。如需檢查 MyISAM
表格,並在發現問題時修復它們的程式,請參閱 第 9.6 節,「MyISAM 表格維護和當機復原」。
備份排程、壓縮和加密
備份排程對於自動化備份程序很有價值。壓縮備份輸出可減少空間需求,而加密輸出則可提供更好的安全性,防止未經授權存取備份資料。MySQL 本身不提供這些功能。MySQL Enterprise Backup 產品可以壓縮 InnoDB
備份,並且可以使用檔案系統公用程式來實現備份輸出的壓縮或加密。其他協力廠商解決方案可能也可用。