Web 介面匯出易遭逾時,命令列 mysqldump 是大型資料庫備份還原的標準工具。本文彙整核心指令、壓縮管線、選擇性備份與跨伺服器遷移技巧。
mysqldump -u mysqluser -p test_db > test_db.sql
mysqldump -u mysqluser -p test_db | gzip > test_db.sql.gz
cat test_db.sql | mysql -u mysqluser -p test_db
gunzip < test_db.sql.gz | mysql -u mysqluser -p test_db
| 需求 | 指令範例 |
|---|---|
帶 DROP TABLE 覆蓋式備份 | mysqldump --add-drop-table -u user -p db > backup.sql |
| 備份指定資料表 | mysqldump -u user -p db table1 table2 > backup.sql |
| 同時備份多個資料庫 | mysqldump --databases db1 db2 db3 > multi.sql |
| 僅備份結構(無資料) | mysqldump --no-data --databases db1 db2 > struct.sql |
| 備份伺服器上所有資料庫 | mysqldump --all-databases > all.sql |
| 指定主機/連接埠 | mysqldump -h host -P 3306 -u user -p db > backup.sql |
mysqldump -u user -p db | mysql --host=目標IP -C db
-C 啟用壓縮傳輸,適合跨機房遷移。
# 一般還原
mysql -h host -u user -p db < backup.sql
# 還原壓縮檔
gunzip < backup.sql.gz | mysql -u user -p db
max_allowed_packet 足夠大(建議 1G+)避免大欄位截斷--single-transaction --master-data=2 獲取一致性快照與 Binlog 位置