MySQL 官方提供三大命令列工具組成備份還原鐵三角:
REM 1. 進入 bin 目錄(或已加入 PATH 環境變數)
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
REM 2. 備份整個資料庫
mysqldump -u root -p mydb > mydb_backup.sql
REM 3. 備份單張表
mysqldump -u root -p mydb users > users_backup.sql
REM 4. 僅備份結構(不含資料)
mysqldump -u root -p -d mydb > mydb_structure.sql
REM 5. 壓縮備份(管道配合 gzip)
mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz
# 1. 進入資料目錄(視安裝路徑調整)
cd /var/lib/mysql
# 2. 備份並壓縮
mysqldump -u root -p mydb | gzip > mydb_backup_$(date +%F).sql.gz
# 3. 定時備份(crontab -e)
0 3 * * * /usr/bin/mysqldump -u root -p'password' mydb | gzip > /backup/mydb_$(date +\%F).sql.gz
mysql -u root -p
mysql> CREATE DATABASE mydb_restored;
mysql> USE mydb_restored;
mysql> SOURCE /path/to/mydb_backup.sql;
# Linux
mysql -u root -p mydb_restored < mydb_backup.sql
# Windows (PowerShell)
Get-Content mydb_backup.sql | mysql -u root -p mydb_restored
gunzip < mydb_backup.sql.gz | mysql -u root -p mydb_restored
| 策略 | 命令範例 | 適用場景 |
|---|---|---|
| 單庫備份 | mysqldump -u root -p db1 > db1.sql | 小型專案、開發環境 |
| 多庫備份 | mysqldump -u root -p --databases db1 db2 > multi.sql | 多業務庫同實例 |
| 全例備份 | mysqldump -u root -p --all-databases > full.sql | 遷移、災備演練 |
| 僅結構 | mysqldump -u root -p -d db1 > struct.sql | Schema 版控、審計 |
| 僅資料 | mysqldump -u root -p -t db1 > data.sql | 測試資料準備 |
| 單表備份 | mysqldump -u root -p db1 tbl1 > tbl1.sql | 大表分片、局部恢復 |
| 排除表 | mysqldump -u root -p db1 --ignore-table=db1.logs > no_logs.sql | 排除大日誌表 |
| 主從一致性備份 | mysqldump -u root -p --single-transaction --master-data=2 db1 > consistent.sql | InnoDB 線上熱備 |
SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, PROCESS 權限--single-transaction 避免阻塞寫入--default-character-set=utf8mb4SET @@SESSION.GTID_NEXT=... 或使用 --set-gtid-purged=OFF# 1. 檢查檔案大小非 0
ls -lh mydb_backup.sql.gz
# 2. 抽樣檢查 SQL 完整性
zcat mydb_backup.sql.gz | head -20
zcat mydb_backup.sql.gz | tail -10
# 3. 定期演練恢復(建議月度)
# 建立臨時庫驗證,確認資料筆數、檢查和一致