MYSQL数据库数据表无故丢失,该类异常是否属于常见情况?
MySQL 生产环境数据表丢失问题解答
无人工操作/业务访问时段发生的数据表丢失,不属于MySQL正常运行的常规现象,默认配置下的MySQL不会自发删除用户创建的业务数据表,出现这类问题可按以下方向排查定位原因:
- 先确认操作日志覆盖范围是否全面,除了人工登录操作记录外,重点排查定时任务调度记录:检查
crontab、内部任务调度平台中是否配置了自动清理脚本、备份脚本,存在逻辑错误误触发删表操作的可能,同时确认所有业务服务账号、数据库运维账号的操作日志是否完整,是否存在账号被调用执行操作但未被纳入你方操作统计的情况。 - 拉取MySQL对应时段的全量日志进行核验:首先检查binlog日志,过滤
DROP TABLE、ALTER TABLE、RENAME TABLE类的执行语句,确认是否有SQL指令主动删除/移动了数据表;其次查看错误日志,确认对应时段是否发生过实例异常崩溃、表空间损坏、文件系统错误等异常,这类极端故障可能导致表元数据损坏无法被识别,看起来类似表丢失。 - 优先通过你方留存的磁盘快照进行恢复验证:将快照挂载到非生产的备用实例上启动MySQL,确认快照内的目标数据表是否完整,同时对比快照和当前生产环境的数据库数据目录,确认
.ibd、.frm等表物理文件是否存在差异,快速定位表丢失的时间范围。 - 排查是否存在误操作覆盖场景:比如后续有人员误导入了旧的备份数据、或者执行了库表恢复操作覆盖了现有库,导致目标表被删除。
内容的提问来源于stack exchange,提问作者Roi Mark Gamba
相关产品推荐
相关产品推荐

