mysqldump 是 MySQL 官方邏輯備份工具,無需停機、跨版本兼容、文本可讀。本文系統講解核心參數、常見場景、恢復驗證、生產級策略。
SELECT 導出數據為 INSERT 語句--lock-tables)保證一致性,MyISAM 必須鎖表,InnoDB 可用 --single-transaction 熱備不鎖表CREATE TABLE、INSERT、註釋、會話變量設置| 參數 | 作用 | 推薦值 |
|---|---|---|
-u/-p | 用戶/密碼 | 專用備份賬號,僅需 SELECT、LOCK TABLES、SHOW VIEW、TRIGGER、EVENT、RELOAD |
--single-transaction | InnoDB 熱備核心,啟動事務一致性視圖,不鎖表 | InnoDB 必加 |
--master-data=2 | 輸出 CHANGE MASTER TO 註釋(含 Binlog 位置),從庫搭建必備 | =2(註釋),=1(可執行) |
--routines --triggers --events | 導出存儲過程/函數、觸發器、事件 | 全量備份必加 |
--hex-blob | 二進制列(BLOB/BINARY)十六進制導出,避免亂碼 | 有二進制列必加 |
--quick / -q | 流式讀取,不緩存結果集到內存,大表必加 | 大表必加 |
--compress | 網絡傳輸壓縮 | 跨網段備份建議 |
--set-gtid-purged=OFF | 不輸出 GTID 資訊,避免恢復報錯 | 異構恢復建議 |
mysqldump -h 10.0.1.10 -u backup_user -p'Passw0rd!' \ --single-transaction \ --master-data=2 \ --routines --triggers --events \ --hex-blob --quick \ --databases prod_db > /backup/prod_db_$(date +%F_%H%M).sql
# 結構+數據 mysqldump -u backup -p db_name table_name > table.sql # 僅結構 mysqldump -u backup -p --no-data db_name table_name > table_struct.sql
mysqldump -h 10.0.1.10 -u backup -p --single-transaction --quick db_name | gzip > /backup/db_$(date +%F).sql.gz
單表恢復(從全量文件提取)
CREATE USER 'backup'@'10.0.1.%' IDENTIFIED BY 'StrongPassw0rd!'; GRANT SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, EVENT, RELOAD, PROCESS ON *.* TO 'backup'@'10.0.1.%'; FLUSH PRIVILEGES;建立「備份-驗證-演練」閉環,才是真正的數據安全。