MySQL 官方標準備份/還原流程,僅需 mysqldump 與 mysql 兩支指令,無需第三方工具。
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
# 或 Linux
cd /usr/bin # 通常已在 PATH
# 基本語法
mysqldump -u root -p dbname > backup_path.sql
# 範例:備份 htmerdb 到 D 槽
mysqldump -u root -p htmerdb > D:/htmerdb.sql
# 生產環境建議參數
mysqldump -u root -p \
--single-transaction \ # InnoDB 一致性快照,不鎖表
--routines \ # 包含函數/預存程序
--triggers \ # 包含觸發器
--events \ # 包含事件
--hex-blob \ # 二進位欄位十六進位
--default-character-set=utf8mb4 \
htmerdb > D:/htmerdb_$(date +%F).sql
# 前提:目標資料庫已存在
mysql -u root -p dbname < backup_path.sql
# 範例
mysql -u root -p htmerdb < D:/htmerdb.sql
# 若需先建庫 (sql 內無 CREATE DATABASE)
mysql -u root -p -e "CREATE DATABASE htmerdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p htmerdb < D:/htmerdb.sql
# 壓縮備份 (節省 70%+ 空間)
mysqldump -u root -p dbname | gzip > dbname_$(date +%F).sql.gz
# 遠程直接傳輸 (無中間檔)
mysqldump -h src_host -u root -p dbname | gzip | ssh user@dst_host "gunzip | mysql -u root -p dbname"
# 檢查檔案大小、行數、結尾
tail -20 backup.sql
# 應見 -- Dump completed on YYYY-MM-DD HH:MM:SS
# 試還原到測試庫
mysql -u root -p test_restore < backup.sql
# 無報錯即有效
# Linux crontab -e
0 2 * * * /usr/bin/mysqldump -u backup_user -p'pwd' --single-transaction dbname | gzip > /backup/dbname_$(date +\%F).sql.gz
# Windows 任務排程器 → 執行 .bat 腳本
**核心原則**:備份未測試還原 = 無備份。每季至少演練一次完整還原。