MySQL備份除標準mysqldump外,還存在一種「非官方但極簡有效」的檔案級備份法:直接複製data目錄下對應資料庫的子目錄。本文實測對比兩種方案優劣。
TestATestATestA。C:\mysql\data\TestA整個目錄到Host B的data目錄。TestA即出現,查詢修改皆正常**。MySQL資料庫以目錄+檔案形式儲存,**同版本、同平台、同配置**下,直接複製資料目錄即可完成備份/遷移,無需任何工具,速度極快。
mysqldump [OPTIONS] database [tables]
不指定tables則備份整庫。大型資料庫**必須**加--quick或--opt,否則會將全結果集載入記憶體導致OOM。
| 參數 | 功能 |
|---|---|
--opt | 等同--quick --add-drop-table --add-locks --extended-insert --lock-tables,**最推薦** |
--add-drop-table | 每CREATE前加DROP TABLE,利於重複匯入 |
--extended-insert | 多行INSERT,大幅縮減檔案體積與匯入時間 |
--quick | 不緩衝查詢,直接串流輸出,防記憶體溢位 |
--lock-tables | 備份前鎖定所有表,保證一致性 |
--no-create-info / -t | 僅備份資料,不含CREATE TABLE |
--no-data / -d | 僅備份結構,不含資料 |
--where | 條件式備份,如--where=\"user='jimf'\" |
# 完整備份(最快匯入格式) mysqldump --opt database > backup.sql # 跨主機直接遷移 mysqldump --opt database | mysql --host=remote -C database # 還原流程 mysqladmin create target_db mysql target_db < backup.sql
mysqldump --opt,兼容性與安全性有保障。兩種方案互補,視場景靈活選擇,並建立定期備份驗證機制,確保災難發生時能確實恢復。