mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 crazyant \
--skip-lock-tables > crazyant.sql
--skip-lock-tables 解決無 LOCK 權限報錯 (配合 --single-transaction 更佳)。
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 crazyant \
--skip-lock-tables \
--ignore-table=crazyant.table1 \
--ignore-table=crazyant.table2 \
--ignore-table=crazyant.table3 \
--ignore-table=crazyant.table4 \
> crazyant.sql
# 單表
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 \
--skip-lock-tables crazyant table_a > dump_table_a.sql
# 多表
mysqldump -h 127.0.0.1 -P 3306 -u root -p123456 \
--skip-lock-tables crazyant table_a table_b > dump_two_tables.sql
mysqldump --opt -d -h 127.0.0.1 -P 3306 -u root -p123456 \
crazyant --skip-lock-tables > struct.sql
-d = --no-data,--opt 開啟一組優化選項 (默認開啟)。
> mysql -h 127.0.1.1 -P 3306 -u root -p123456
mysql> USE crazyant;
mysql> SOURCE /home/crazyant.net/mysqldump_crazyant.sql;
全量導入前建議:
-- 清空目標表 (若同步覆蓋)
TRUNCATE TABLE table_a;
TRUNCATE TABLE table_b;
-- 或導入前 DROP DATABASE/CREATE DATABASE
| 參數 | 含義 | 常用場景 |
|---|---|---|
| -h/--host | 主機 | 遠程備份 |
| -P/--port | 端口 | 非 3306 |
| -u/--user | 用戶 | |
| -p/--password | 密碼 | 緊跟無空格或交互輸入 |
| -d/--no-data | 無數據 | 結構遷移 |
| --add-drop-table | 加 DROP TABLE | 重複導入安全 |
| --ignore-table | 排除表 | 排除日志/大表 |
| --skip-lock-tables | 不鎖表 | 無 LOCK 權限/配合單事務 |
| --single-transaction | 一致性快照 | InnoDB 熱備必加 |
| --quick | 流式輸出 | 大表防 OOM |
| --master-data=2 | 記錄 binlog 位點 | 主從搭建/增量恢復 |
#!/bin/bash
# daily_backup.sh
DATE=$(date +%F)
DB="crazyant"
OUT="/backup/mysql/${DB}_${DATE}.sql.gz"
mysqldump -h 127.0.0.1 -u backup_user -p'password' \
--single-transaction --quick --master-data=2 \
--routines --triggers --events \
${DB} | gzip > ${OUT}
# 保留 30 天
find /backup/mysql -name "${DB}_*.sql.gz" -mtime +30 -delete
掌握 mysqldump 核心參數組合,配合 SOURCE 或管道導入,覆蓋 95% 導入導出場景。大數據量生產環境請升級 Percona XtraBackup 物理熱備方案。