mysqldump 是 MySQL 官方提供的邏輯備份工具,透過產生 SQL 腳本實現資料庫結構與資料的導出導入。掌握其核心參數與管道重導向操作,是 DBA 與開發者的基本功。
mysqldump -h hostname -P 3306 -u username -p password database_name > D:/backupfile.sql
| 參數 | 說明 | 範例 |
|---|---|---|
-h / --host | MySQL 伺服器主機位址 | -h 192.168.1.100 (本機可省略或用 localhost) |
-P / --port | 連接埠號 | -P 3306 (預設可省略) |
-u / --user | 資料庫使用者名稱 | -u root |
-p / --password | 密碼 (緊接參數後無空格,或留空提示輸入) | -pMyPass123 或 -p (較安全) |
database_name | 要備份的資料庫名稱 | my_db |
> | Shell 重導向,將標準輸出寫入檔案 | > backup.sql |
mysqldump -h hostname -P 3306 -u username -p password \
--single-transaction \ # InnoDB 熱備份核心,不鎖表,保證一致性視圖
--routines \ # 匯出存儲過程/函數
--triggers \ # 匯出觸發器
--events \ # 匯出事件調度器
--master-data=2 \ # 記錄 Binlog 位置 (CHANGE MASTER TO 註釋),利於主從搭建/時間點恢複
--set-gtid-purged=OFF \ # 避免 GTID 資訊干擾異構匯入
database_name > backup.sql
mysql -h hostname -P 3306 -u username -p password database_name < D:/backupfile.sql
注意: 還原目標資料庫需預先建立 (CREATE DATABASE IF NOT EXISTS db_name;),且使用者需具備該庫的完整權限。
mysqldump -u root -p db_name | gzip > backup_$(date +%F).sql.gz
gunzip < backup.sql.gz | mysql -u root -p db_name
mysqldump -u root -p --databases db1 db2 db3 > multi_db_backup.sql
mysqldump -u root -p --all-databases > full_backup.sql
最佳實踐建議: 生產環境務必採用 --single-transaction (InnoDB) 實現無鎖熱備份;建立定時任務 (cron) 每日全備 + 定期驗證還原演練;備份檔案異地儲存 (對象儲存/異地機房)。