萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 資料庫備份與匯入標準流程:mysqldump 與 mysql 指令

MySQL 官方標準備份/還原流程,僅需 mysqldump 與 mysql 兩支指令,無需第三方工具。

前置:切換到 MySQL bin 目錄

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
# 或 Linux
cd /usr/bin  # 通常已在 PATH

1. 備份資料庫

# 基本語法
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

2. 匯入 .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 腳本

**核心原則**:備份未測試還原 = 無備份。每季至少演練一次完整還原。

copyright © 萬盛學電腦網 all rights reserved