本節描述不同類型備份的特性。
實體(原始)與邏輯備份
實體備份包含儲存資料庫內容的目錄和檔案的原始副本。這種備份類型適合需要快速復原的大型、重要資料庫。
邏輯備份儲存以邏輯資料庫結構(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
備份,並且可以使用檔案系統公用程式實現備份輸出的壓縮或加密。其他第三方解決方案也可能可用。