mysqldump -u root -p testdb > testdb.sql
# 輸入密碼後生成 testdb.sql
testdb.sql 包含:
/*!40101 SET ... */ 版本條件註釋)DROP TABLE IF EXISTS + CREATE TABLE(含引擎、字符集、主鍵)LOCK TABLES WRITE + INSERT 批次資料 + UNLOCK TABLESALTER TABLE DISABLE/ENABLE KEYS 加速導入| 參數 | 作用 |
|---|---|
--single-transaction | InnoDB 熱備份,不鎖表,保證一致性快照 |
--routines --triggers --events | 包含存儲過程、觸發器、定時事件 |
--master-data=2 | 輸出 CHANGE MASTER TO 註釋,備份位點資訊(主從同步必備) |
--hex-blob | 二進制欄位(BLOB/BINARY)以十六進制導出,避免編碼問題 |
--compress | 客戶端/伺服器傳輸壓縮 |
--quick | 大表逐行讀取不緩存,減少記憶體佔用 |
--lock-tables=false | 不鎖表(配合 --single-transaction) |
mysqldump -u backup_user -p \
--single-transaction \
--routines --triggers --events \
--master-data=2 \
--hex-blob \
--quick \
--databases db1 db2 > /backup/mysql_$(date +%F).sql
# 方式一:管道導入
mysql -u root -p testdb < testdb.sql
# 方式二:客戶端內部執行
mysql> SOURCE /path/to/testdb.sql;
# 方式三:壓縮檔直接導入
gunzip < testdb.sql.gz | mysql -u root -p testdb
# 單表
mysqldump -u root -p testdb user > user.sql
# WHERE 條件導出(如僅導出近 30 天資料)
mysqldump -u root -p testdb user --where="created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)" > user_recent.sql
SOURCE 還原,核對表結構、行數、抽樣資料。sha256sum backup.sql 記錄,防範檔案損壞/竄改。mysqldump 是最通用、可攜帶、可審計的備份工具。掌握 --single-transaction、--master-data、--where 等核心參數,即可應對從開發測試到生產主從同步的全場景備份需求。