恢复演练是什么
恢复演练是按季度对真实备份做一次完整恢复:在隔离环境重建实例、恢复全量数据、重放 binlog 到目标时间点、核对行数与业务抽样,最后实测 RTO 并固化到手册。它检验的不是「备份文件还在不在」,而是「真出事时人能不能在可接受时间内把数据找回来」。
基本信息
| 频率 | 按季度执行,或以重大变更节奏为准 |
|---|---|
| 环境 | 与生产版本、配置一致的隔离实例 |
| 内容 | 全量恢复加 binlog 重放到目标时间点 |
| 校验 | 表数量、行数抽样、关键业务查询 |
| 产出 | 实测 RTO、问题清单与更新后的恢复手册 |
典型使用场景
- 季度例行演练,保持恢复能力不掉线
- 发布重大变更前验证备份真的可用
- 新人接手运维时用演练做上手验证
- 用实测数据修正 RTO 预估与切换方案
- 暴露脚本、权限与工具链层面的隐患
演练骨架
演练骨架
# 1) 起隔离实例(示例:本地 3307)
mysqld --no-defaults --datadir=/tmp/drill-data --port=3307 &
# 2) 恢复全量备份
mysql -uroot -P3307 < /data/backup/all_2026-10-05.sql
# 3) 重放 binlog 到目标时间点
mysqlbinlog --stop-datetime="2026-10-06 09:00:00" /data/backup/binlog.* | mysql -uroot -P3307
# 4) 核对:行数与表数量
mysql -uroot -P3307 -e "SELECT COUNT(*) FROM appdb.orders;"
mysql -uroot -P3307 -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='appdb';"步骤与校验点
| 步骤 | 操作 | 校验点 |
|---|---|---|
| 建隔离实例 | 版本与配置对齐生产 | 避免版本差异掩盖兼容问题 |
| 恢复全量 | 导入最近一次全备 | 核对库名与表数量 |
| 重放日志 | 按时间点回放到目标时刻 | 确认 binlog 链路完整 |
| 数据校验 | 行数抽样与关键查询 | 与生产同口径数据比对 |
| 记录耗时 | 从开始到业务可用 | 用于修正 RTO 预估 |
演练必须使用当季真实备份与真实 binlog 链路,才能暴露脚本、权限、工具链层面的问题;用临时造出来的样本数据演练,等于自欺欺人。
演练记录要写每一步的实际耗时,而不是预估:真实 RTO 通常比想象中长得多,尤其是包含了找备份、确认版本、核对数据这些非技术环节。
演练数据如果提供给非生产角色,必须先脱敏:把生产数据原样导出到测试环境属于典型的合规风险,演练流程里要明确这一道关卡。