mysqldump [OPTIONS] database [tables]
未指定表 → 導出整庫。大庫必加 --quick 或 --opt,否則全量載入記憶體導致 OOM。
| 參數 | 作用 |
|---|---|
--add-locks | 每表導出前加 LOCK TABLES,導入更快 |
--add-drop-table | 建表前加 DROP TABLE |
-c, --complete-insert | 完整 INSERT 含欄位名 |
-C, --compress | 客戶端/服務端支援時壓縮傳輸 |
--delayed | 生成 INSERT DELAYED |
-e, --extended-insert | 多值 INSERT(更緊湊、更快) |
-F, --flush-logs | 導出前切換 Binlog |
-l, --lock-tables | 導出前鎖定所有表(一致性快照) |
-t, --no-create-info | 僅導數據,不含 CREATE TABLE |
-d, --no-data | 僅導結構,不含數據 |
--opt | 組合優化:--quick --add-drop-table --add-locks --extended-insert --lock-tables |
-q, --quick | 不緩衝結果集,直接流式輸出 stdout |
-T, --tab=dir | 每表產生 .sql(結構)+ .txt(數據),需同機器 |
-w, --where | 按條件導出子集 |
# 1. 全庫備份(推薦)
mysqldump --opt db_name > backup.sql
# 2. 單表備份
mysqldump -u user -p db_name tbl_name > tbl.sql
# 3. 僅結構(含 DROP TABLE)
mysqldump -u user -p -d --add-drop-table db_name > schema.sql
# 4. 遠程同步到另一實例
mysqldump --opt db_name | mysql --host=remote -C db_name
# 5. 導入
mysqladmin create target_db
mysql target_db < backup.sql
# 或進入 mysql 客戶端
SOURCE /path/backup.sql;
SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; 導入後再開啟並 COMMIT。source 命令時注意路徑分隔符(Windows 用正斜槓或雙反斜槓)。