DROP TABLE、UPDATE 無 WHERE)| 維度 | mysqldump 邏輯備份 | 文件拷貝 物理備份 |
|---|---|---|
| 原理 | 與 Server 協作導出 SQL 文本 | OS 層直接拷貝數據文件 |
| 一致性 | --single-transaction 保證一致視圖 | 需 FLUSH TABLES WITH READ LOCK 或停庫 |
| 可移植性 | 跨版本、跨架構、跨引擎 | 僅限同版本、同架構、MyISAM/MySQL 3.23+ MyISAM |
| 速度 | 較慢(解析、轉換、壓縮) | 極快(磁盤順序讀寫) |
| 恢復粒度 | 庫/表/行級(文本編輯) | 整個實例/數據目錄 |
# 全庫備份(含結構+數據,單事務一致性,適合 InnoDB)
mysqldump -u root -p --single-transaction --quick --hex-blob --routines --triggers --events db_name > dump.sql
# 僅結構
mysqldump -u root -p -d db_name > schema.sql
# 僅數據
mysqldump -u root -p -t db_name > data.sql
# 指定表
mysqldump -u root -p db_name tbl1 tbl2 > tables.sql
# WHERE 條件導出子集
mysqldump -u root -p --where="created_at > '2023-01-01'" db_name tbl > subset.sql
# 壓縮輸出
mysqldump ... | gzip > dump.sql.gz
FLUSH TABLES WITH READ LOCK;(全局讀鎖)cp -r /var/lib/mysql /backup/mysql_$(date +%F) 或 tar/rsyncUNLOCK TABLES;ibdata*、ib_logfile*、.frm、.ibd、my.cnf注意: InnoDB 物理備份需配合 innodb_file_per_table=ON 且無活躍事務,否則建議用 Percona XtraBackup 熱備份。
log_bin = /var/log/mysql/binlog、binlog_format = ROW、expire_logs_days = 7mysql < full_dump.sqlmysqlbinlog --start-datetime="..." --stop-datetime="..." binlog.xxx | mysqldbname_YYYYMMDD_HHMMSS.sql.gz(含庫名、時間、壓縮標識)mysqldump --master-data=2 獲取 Binlog 位點,構建新從庫mysql_upgrade生產級備份體系 = 邏輯全量(mysqldump/XtraBackup)+ 二進制日誌增量 + 異地存儲 + 定期恢復演練。根據 RPO/RTO 選擇工具:RPO=0 需同步複制/半同步;RPO<1h 需 Binlog 實時歸檔;RPO≥1h 定時 myslqdump 即可。