雖然 phpMyAdmin 的匯出/匯入功能直觀易用,但當資料庫體積超過 PHP 執行時間限制(預設 30 秒)或上傳檔案大小限制時,Web 介面往往會因「逾時」或「記憶體不足」而失效。掌握 mysqldump 與 mysql 命令列工具,才是 DBA 與開發者的必備技能。
mysqldump -u <用戶名> -p <資料庫名> > <備份檔.sql>
-u:指定 MySQL 連線用戶名-p:提示輸入密碼(也可直接寫 -p密碼,但不建議在歷史紀錄留存明文密碼)>:Shell 重導向,將標準輸出寫入檔案# 1. 備份單一資料庫並壓縮(推薦生產環境使用) mysqldump -u root -p mydb | gzip > mydb_$(date +%F).sql.gz # 2. 備份多個指定資料庫 mysqldump -u root -p --databases db1 db2 > multi_db.sql # 3. 備份所有資料庫(含系統庫) mysqldump -u root -p --all-databases > all_dbs.sql # 4. 僅備份結構(不含資料) mysqldump -u root -p -d mydb > schema_only.sql # 5. 排除特定資料表 mysqldump -u root -p mydb --ignore-table=mydb.log_table > no_log.sql
# 未壓縮檔案 mysql -u root -p mydb < backup.sql # 壓縮檔案(gz) gunzip < backup.sql.gz | mysql -u root -p mydb # 或使用 source 指令(需先進入 mysql client) mysql -u root -p mysql> CREATE DATABASE mydb; mysql> USE mydb; mysql> SOURCE /path/backup.sql;
bin 目錄:cd "C:\Program Files\MySQL\MySQL Server 5.x\bin"mysqldump -u root -p dbname > backup.sqlmysql> 提示符CREATE DATABASE dbname;USE dbname;SOURCE backup.sql;mysql> 且無錯誤訊息即代表成功--single-transaction(InnoDB 專用): 取得一致性快照而不鎖表,適合線上熱備份。max_allowed_packet: 防止大欄位(BLOB/TEXT)導致封包過大錯誤。--where 條件分批導出,降低單次交易體積。最佳實務建議: 建立自動化備份腳本(Shell/Python),搭配
cron定時執行,並將備份檔同步至異地儲存(如 S3、NAS、異地機房),定期演練還原流程,確保備份可用性。