MySQL 备份与恢复:逻辑备份与物理备份策略
备份是数据安全最后防线,需结合业务选择合适的备份方式。
1. 逻辑备份(mysqldump)
适合中小型数据库(< 50GB)。
# 全量备份所有数据库
mysqldump -u root -p --all-databases > full_backup.sql
# 备份指定库(加 --single-transaction 保证一致性)
mysqldump -u root -p --single-transaction --routines --triggers mydb > mydb.sql
# 只备份表结构
mysqldump -u root -p --no-data mydb > schema.sql2. 物理备份(Percona XtraBackup)
适合大数据库,支持热备份。
# 安装
wget https://www.percona.com/downloads/XtraBackup/...
# 全量备份
innobackupex --user=root --password=xxx /backup/
# 准备(应用日志)
innobackupex --apply-log /backup/2025-01-01/
# 恢复(需停止 MySQL)
innobackupex --copy-back /backup/2025-01-01/3. 增量备份与 binlog
- 开启 binlog,配合全备实现任意时间点恢复。
- 使用
mysqlbinlog恢复指定时间或位置。
mysqlbinlog --start-datetime="2025-01-01 10:00:00" --stop-datetime="2025-01-01 12:00:00" binlog.000001 | mysql -u root -p
4. 备份策略建议
- 每天凌晨全量备份。
- 保留最近 7 天备份,历史备份冷存。
- 定期验证备份可恢复性(最重要!)。
- 备份文件加密并异地存储。
记住:没有经过恢复演练的备份形同虚设。
