首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料庫備份與還原命令大全:mysqldump 參數、壓縮、跨庫遷移、結構/資料分離

     編輯:MySQL 資料庫相關知識

核心備份命令

# 基礎備份 (單庫)
mysqldump -h host -u user -p dbname > backup.sql

# 帶 DROP TABLE (覆蓋式還原)
mysqldump --add-drop-table -u user -p dbname > backup.sql

# 壓縮備份 (管線)
mysqldump -h host -u user -p dbname | gzip > backup.sql.gz

# 指定表備份
mysqldump -h host -u user -p dbname tbl1 tbl2 > backup.sql

# 多庫同時備份
mysqldump --databases db1 db2 db3 > multi.sql

# 僅結構 (無資料)
mysqldump --no-data --databases db1 db2 > structure.sql

# 全例項備份
mysqldump --all-databases > all.sql

還原命令

# 基礎還原
mysql -h host -u user -p dbname < backup.sql

# 解壓還原
gunzip < backup.sql.gz | mysql -u user -p dbname

# bzip2 版本
mysqldump ... | bzip2 > backup.sql.bz2
bunzip2 < backup.sql.bz2 | mysql ...

跨伺服器直接遷移 (無中間檔案)

mysqldump -u user -p dbname | mysql --host=target_host -C dbname
  • -C 啟用壓縮傳輸,跨網段遷移極大加速。

進階參數速查表

參數用途
--single-transactionInnoDB 熱備份,不鎖表 (必加)
--master-data=2記錄 Binlog 位點 (註釋形式),搭建從庫必備
--routines --triggers --events包含存儲過程/觸發器/事件
--hex-blob二進制欄位十六進制導出,避免編碼問題
--quick大表流式讀取,避免記憶體暴漲
--skip-lock-tables不鎖表 (配合 single-transaction)
--where="id>100"條件導出分片備份
--default-character-set=utf8mb4強制連接編碼,防亂碼

生產級備份腳本範例 (Linux)

#!/bin/bash
BACKUP_DIR="/backup/mysql/$(date +%F)"
mkdir -p $BACKUP_DIR

mysqldump --single-transaction --master-data=2 \
  --routines --triggers --events \
  --hex-blob --quick \
  --default-character-set=utf8mb4 \
  -u backup_user -p'strong_pass' \
  --databases db1 db2 db3 \
  | gzip > $BACKUP_DIR/databases_$(date +%H%M).sql.gz

# 保留 7 天
find /backup/mysql -type f -mtime +7 -delete

還原驗證清單

  1. CHECKSUM TABLE 對比源/目標表檢驗和。
  2. SELECT COUNT(*) 核心表行數一致性。
  3. 關鍵業務欄位抽樣比對。
  4. 啟用應用驗證 (煙霧測試)。

結語

mysqldump 參數組合決定備份品質。**生產必加**:--single-transaction --master-data=2 --routines --triggers --events --hex-blob --quick。配合管線壓縮、跨機直傳、保留策略,構建「備份可用、還原可驗、RPO/RTO 可控」的資料保護體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved