資料庫備份是資安最後防線。本文對比「檔案級直複製」與「官方 mysqldump 邏輯備份」兩大流派,解析適用場景、風險點與最佳實踐,助你建立可靠備份策略。
MySQL 資料目錄下每個資料庫對應一個子目錄,直接複製該目錄至目標主機同位置即可完成「備份/還原」。
C:\mysql\data\TestATestA 目錄至 HostB data 目錄| 優點 | 缺點/風險 |
|---|---|
| 極速、無工具依賴、適合離線冷備份 | 必須停庫或全域鎖表(FLUSH TABLES WITH READ LOCK),否則檔案不一致 |
| 保留完整索引、權限、觸發器等元資料 | 跨版本、跨架構、跨儲存引擎極易失效 |
| 適合同版本、同配置主機快速克隆 | InnoDB 共享表空間模式下無法單庫複製 |
mysqldump [OPTIONS] database [tables]
| 類別 | 參數 | 作用 |
|---|---|---|
| 效能優化 | --quick / -q | 不緩衝結果集,直接串流,大表必加 |
--opt | 綜合優化開關(預設開啟) | |
--extended-insert / -e | 多行 INSERT,縮小檔案、加快還原 | |
--compress / -C | 客戶端/伺服器傳輸壓縮 | |
| 結構控制 | --add-drop-table | CREATE 前加 DROP,覆蓋式還原 |
--no-create-info / -t | 僅導出資料,無建表語句 | |
--no-data / -d | 僅導出結構 | |
--add-locks | 鎖表加速插入 | |
| 過濾條件 | --where / -w | 條件式導出,如 -w "id>1000" |
--tables | 指定表清單 | |
--databases | 多庫模式 | |
--all-databases | 全例備份 | |
| 連線認證 | -h host | 遠程主機 |
-u user | 使用者 | |
-p[pass] | 密碼(生產建議互動式輸入) | |
-P port | TCP 連接埠 |
# 生產熱備份(InnoDB 推薦)
mysqldump --single-transaction --master-data=2 --quick --opt db > backup.sql
# 結構遷移
mysqldump --no-data --databases db1 db2 > struct.sql
# 跨主機直接同步
mysqldump -u user -p db | mysql -h target -C db
# 建立目標庫
mysqladmin -u root -p create target_db
# 還原
mysql -u root -p target_db < backup.sql
# 或
mysql -u root -p -e "SOURCE backup.sql;" target_db
SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER 權限。選對工具、驗證流程、落實分層,才是資料安全的真正保障。