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

MySQL 5.6 備份還原實戰:mysqldump 全參數詳解與自動化腳本

     編輯:MySQL 資料庫相關知識

核心工具:mysqldump

邏輯備份、跨版本遷移、異構同步首選。物理備份(xtrabackup)另文說明。

常用參數速查

參數作用
-h主機地址
-u使用者名
-p密碼(建議配置檔 [client] password=xxx 避免歷史記錄洩露)
--single-transactionInnoDB 熱備份,不鎖表(需啟用 binlog)
--master-data=2輸出 CHANGE MASTER TO 註解,便於從庫搭建
--routines --triggers --events備份存儲過程/觸發器/事件
--hex-blob二進制欄位十六進制輸出,避免編碼問題
--quick大表分批讀取,減少記憶體佔用
--compress網路傳輸壓縮

實戰場景範例

1. 單庫完整備份(生產標準)

mysqldump -h127.0.0.1 -uroot -p --single-transaction \
  --master-data=2 --routines --triggers --events \
  --hex-blob --quick szldb > backup_$(date +%F).sql

2. 壓縮備份(節省空間/傳輸)

mysqldump -h127.0.0.1 -uroot -p szldb | gzip > backup_$(date +%F).sql.gz

3. 僅備份結構(無資料)

mysqldump -h127.0.0.1 -uroot -p --no-data szldb > structure.sql

4. 指定表備份

mysqldump -h127.0.0.1 -uroot -p szldb table1 table2 > tables.sql

5. 多庫備份

mysqldump -h127.0.0.1 -uroot -p --databases szldb test > multi.sql

6. 全例備份(含 mysql 系統庫)

mysqldump -h127.0.0.1 -uroot -p --all-databases > full.sql

還原操作

# 一般還原
mysql -h127.0.0.1 -uroot -p szldb < backup.sql

# 壓縮檔管道還原
gunzip < backup.sql.gz | mysql -h127.0.0.1 -uroot -p szldb

# 跨伺服器遷移(管道直連,無落地檔)
mysqldump -h127.0.0.1 -uroot -p szldb | mysql -h10.0.0.2 -uroot -p -C serweb

自動化備份腳本範例(cron 每日 02:00)

#!/bin/bash
# /usr/local/bin/mysql_backup.sh
set -euo pipefail
BACKUP_DIR=/backup/mysql
DB=szldb
USER=backup_user
PASS=$(cat /etc/mysql/backup.pass)
DATE=$(date +%F_%H-%M)
mysqldump -h127.0.0.1 -u$USER -p$PASS --single-transaction \
  --master-data=2 --routines --triggers --events --hex-blob --quick $DB \
  | gzip > ${BACKUP_DIR}/${DB}_${DATE}.sql.gz
# 保留 30 天
find $BACKUP_DIR -name "${DB}_*.sql.gz" -mtime +30 -delete

驗證備份可用性

  1. 定期在測試環境 mysql < backup.sql 驗證還原成功
  2. 檢查 CHECKSUM TABLE 一致性
  3. 監控備份檔大小突變(可能遺漏表或資料異常)

建立「備份→驗證→留存→演練」閉環,才是真正的資料安全。

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