误删了一张表,怎么恢复?

运维/DBA第 9 / 13 题答题框架
参考思路:先止损(停写入/保护现场 binlog)→最近备份恢复→binlog 重放到事发前→跨实例恢复演练→事后防再发(权限/DDL 审计/延迟从库)。

五个经典回答示范

回答一 · 校招应届版

误删处理五步:立即止损——停相关写入或封禁误操作入口,保护 binlog 不再增长覆盖;评估范围——哪个表、什么时间点、数据量;恢复路径——最近备份恢复到影子实例,binlog 重放到误操作前一刻;数据回迁——反向导出受影响数据回灌(先备份当前状态);复盘——权限、流程、审批环节的改进。全程 DBA 与业务共同确认数据边界。

回答二 · 1-3年经验版

我讲一次误删 update 无 where 条件的恢复:全表 200 万行被改。处理:秒级发现(监控行数异动)后锁表止血;凌晨全量备份恢复影子库,binlog 重放到误操作前;用主键做差集比对你出被改行,只回写变更字段;业务校验抽样后恢复写入。全程 70 分钟。之后的改进:生产 DML 走 SQL 审核平台(无 where 的 update 直接拦截)、危险语句双人复核、行数异动告警。

回答三 · 资深版

资深视角:误删防御是纵深体系。预防层——最小权限(业务账号无 drop/truncate)、SQL 审核平台拦危险语句、生产变更窗口与双人制;缓冲层——延迟从库(延迟 30-60 分钟)专防逻辑误操作、回收站机制(表级软删除);恢复层——PITR 能力常态化演练、恢复时间承诺 SLA 化。认知要点:误删大概率发生在『觉得不会错』的熟练操作里,防御设计要假设人会犯错,而不是要求人不犯错。

回答四 · 追问应对

追问『binlog 被删了怎么办』:极端情况组合救援——其他从库的数据差集比对、应用层日志反推、备份加部分 binlog 拼接;这暴露 binlog 保留期太短的问题(应至少 7 天);『rm 掉了物理文件呢』:立即停止写入该盘(防止覆盖)、extundelete/btrfs 恢复或找专业数据恢复,成功率随时间递减;『怎么防内部恶意删库』:权限分离加操作审计加堡垒机录像,关键操作二次认证。

回答五 · 反面示范

『删都删了赶紧重新插回去,让开发写脚本手动补数据,边补边试,出问题再说,谁删的追责最重要。』——点评:边补边试在无备份基准时越补越乱;先追责后止血的顺序颠倒——数据每分钟都在新增,恢复窗口快速关闭;没有 binlog 定位的补数是赌博。

怎么练这道题
  1. 打开 模拟练习,选择「运维/DBA」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练