服务器断电后虚拟机里的MySQL数据库损坏了怎么恢复
问题
机房意外断电,来电后虚拟机是开起来了,里面的 MySQL 数据库却起不来,错误日志刷了一屏,业务系统连库连不上,群里催的人一拨接一拨。库里有好几个 G 的业务数据,急着恢复又怕越弄越坏;翻备份一看,定时任务上个月就悄悄失败了,手头只有一份两周前的老备份。
原因分析
- 断电时写了一半:数据库正往磁盘落数据时被硬切,页面只写了一半,写一半的烂账留给重启去对,校验不过就拒绝启动。
- 虚拟机被硬关:宿主机断电时虚拟机没来得及正常关机,磁盘缓存里的数据没落盘,文件系统层面也带了伤。
- 日志与数据对不上账:重做日志记录的事务和实际数据页不一致,数据库判定异常,宁可罢工也不带病运行。
分步解决
- 先止损:别反复重启数据库碰运气,每硬来一次,损伤就可能加深一层;先把整个数据目录原样拷贝一份留底,后面怎么折腾都有退路。
- 看日志定层级:翻数据库错误日志,分清是起不来、单表坏还是索引坏,不同层级处置路径不一样,别一上来就跑修复工具,层级判错方向就反了。
- 有备份走备份:哪怕备份旧一点也优先恢复备份,再拿重做日志把断电前那段时间的事务补上,数据能追回多少算多少,比在原库上硬修稳得多。
- 没备份再谈修:数据目录留底之后,用数据库自带的检查修复工具做表级修复,能救回多少算多少;救不动的找专业数据恢复,别拿来路不明的工具硬扫原盘。
- 修完做校验:库起来之后抽查关键业务表的数据量和对账结果,确认没有静默的错数,再放业务流量进来。
预防
- 数据库服务器配不间断电源,断电时撑到系统正常关机。
- 虚拟化平台关机走正常流程,禁止硬切电源。
- 备份定时自动跑,跑完看结果,恢复演练定期做,别让备份停在纸面上。
- 服务器数据恢复这类急活,可以交给贵州诚鑫致达科技(贵州 数据恢复)统一处置。