MySQL 备份与恢复
type
status
date
slug
summary
tags
category
icon
password
一、备份类型全景图
分类维度 | 类型 | 特点 | 适用场景 |
备份结果 | 逻辑备份 | 生成SQL文件(如 .sql) | 跨版本迁移、小数据量 |
ㅤ | 物理备份 | 拷贝数据文件(如 .ibd) | 大数据量、快速恢复 |
数据量 | 完全备份 | 备份全部数据 | 每周基准备份 |
ㅤ | 增量备份 | 备份上次备份后的变化 | 每日备份,节省空间 |
ㅤ | 差异备份 | 备份上次完全备份后的变化 | 平衡恢复速度与空间 |
服务状态 | 热备份 | 服务在线,无锁(需InnoDB) | 24x7业务 |
ㅤ | 温备份 | 服务在线,但锁表(MyISAM) | 允许短暂只读 |
ㅤ | 冷备份 | 服务停机 | 可接受停机时段 |
关键说明:
- 增量备份:基于二进制日志(binlog)或 LSN(物理备份)
- 物理备份:通常比逻辑备份更快,但可能不跨版本兼容
备份策略:完全+增量

1)和上一次完全备份比,备份变化的数据
2)和上一次增量备份比,备份变化的数据
恢复时,必须按照顺序依次恢复
先恢复最近一次完全备份,按顺序依次恢复增量备份
备份策略:完全+差异

1)和上一次完全备份比,备份变化的数据
恢复时,也必须按照顺序依次恢复
先恢复最近一次完全备份,直接恢复最后一次差异备份
实际生产时,做数据备份,需定期在测试环境中测试,避免数据损坏
做备份的永远是备份二进制文件
二、逻辑备份:mysqldump
1. 基本用法
2. 关键选项
选项 | 作用 |
--lock-all-tables | 备份期间锁表(温备份) |
--single-transaction | 无锁备份(仅InnoDB,热备份) |
--master-data=2 | 记录binlog位置(必选项!) |
--routines | 备份存储过程和函数 |
--triggers | 备份触发器 |
注意
-master-data在 MySQL 8.0 中已更名为-source-data,但前者仍可用
- 生产环境推荐使用
-single-transaction替代-lock-all-tables(避免锁表)
3. 备份策略示例(完全+增量)
4. 恢复流程
注意:sql_log_bin 仅对当前会话有效,恢复需在同一会话中完成!
三、物理备份:XtraBackup
1. 安装(CentOS 7)
2. 完全备份与恢复
3. 增量备份策略
4. 增量恢复流程
四、实战经验与误区纠正
1. 常见错误修正
- 误区:增量备份可基于任意备份类型正解:增量备份必须基于上一次完全备份或增量备份(连续依赖)
- 误区:
sql_log_bin是全局设置正解:它是会话级变量,恢复需在同一连接中完成
2. 备份验证(重要!)
3. 自动化脚本示例
4. 监控与告警
- 监控备份文件大小(避免0字节备份)
- 检查备份时长(异常时长可能预示故障)
- 定期恢复测试(确保备份可用)
五、备份策略推荐
场景 | 策略 | 工具 |
小型数据库 | 每周完全 + 每日逻辑增量 | mysqldump |
大型数据库 | 每周完全 + 每日物理增量 | XtraBackup |
云环境 | 快照备份 + binlog | 云平台工具 |
跨版本迁移 | 逻辑完全备份 | mysqldump |
黄金法则:
- 永远验证备份完整性
- 3-2-1规则:3份副本,2种介质,1份离线
- 定期恢复演练
Loading...