mysqldump 是 MySQL 邏輯備份/遷移的標準工具。本文系統整理常用參數組合:全庫/單表、結構/資料、壓縮輸出、遠程導出、導入策略、source 指令與自動化腳本範例。
| 場景 | 命令 |
|---|---|
| 全庫(結構+資料) | mysqldump -u root -p dbname > dbname.sql |
| 單表(結構+資料) | mysqldump -u root -p dbname tbl1 tbl2 > tables.sql |
| 全庫僅結構 | mysqldump -u root -p -d dbname > schema.sql |
| 單表僅結構 | mysqldump -u root -p -d dbname tbl1 > tbl1_schema.sql |
| 壓縮輸出(管道 gzip) | mysqldump -u root -p dbname | gzip > dbname.sql.gz |
| 遠程主機導出 | mysqldump -h 10.0.0.1 -u root -p dbname > dbname.sql |
| 含存儲程序/觸發器/事件 | mysqldump -u root -p -R -E --triggers dbname > full.sql |
| 單交易一致性備份(InnoDB) | mysqldump -u root -p --single-transaction dbname > consistent.sql |
mysql -u root -p dbname < dbname.sql
mysql -u root -p
USE dbname;
SOURCE /path/to/dbname.sql;
gunzip < dbname.sql.gz | mysql -u root -p dbname
-u/--user、-p/--password、-h/--host、-P/--port-d/--no-data:僅結構-t/--no-create-info:僅資料-R/--routines:存儲程序/函數-E/--events:事件調度器--triggers:觸發器(預設開啟)--single-transaction:InnoDB 熱備份一致性--master-data=2:附加 CHANGE MASTER TO 位點(從庫搭建)--hex-blob:二進位欄位十六進位導出--set-gtid-purged=OFF:GTID 環境避免污染#!/bin/bash
# daily_backup.sh
DATE=$(date +%F)
DB="prod_db"
OUT="/backup/mysql/${DB}_${DATE}.sql.gz"
mysqldump -u backup_user -p'${BK_PASS}' \
--single-transaction -R -E --triggers \
--master-data=2 ${DB} | gzip > ${OUT}
# 保留 7 天
find /backup/mysql -name "${DB}_*.sql.gz" -mtime +7 -delete
-d),目標庫建表驗證。-t),大表分批或用 --where 分片。ANALYZE TABLE 更新統計資訊。
熟練 mysqldump 參數組合,備份遷移不再手忙腳亂。