Mysql的灾难恢复

我们发生了一场重大的灾难,有人在生产数据库上做了一个不受控制的更新,很明显,备份过程很长一段时间没有运行,所以造成了重大的数据丢失。 一个四千万行的表格现在已经满了垃圾了。

有没有人有一个想法来恢复数据? 例如,一个使用文件系统恢复的工具?

事实:

  • ext3 fs(在Debian上)
  • InnoDB引擎(在Mysql 5.0上)

老实说,这不是我们公司发生的第一次重大灾难,但这个很容易成为最后一个。 我们通常想出一些想法来挽救一天,但是这一次,我真的没有想法。 Clusterf * CK …

编辑:更新语句没有在哪里后发生的问题。 问题是,在星期一下午和星期二上午(法国时间)之间发生了问题,并且由于各种原因,今天才被发现(应用程序提供了一个同步工具,所以新数据插入了现在丢失的数据,但是外键另一张桌子现在完全打破)。 所以实际上,表中的几乎所有行(除了新插入的)都包含相同的数据(id列除外)。

关于ibdata *和ib_logfile *,我停止了复制的服务器,所以它们保持现在的状态。 我无法停止主服务器上的数据库来复制文件。

2小时,没有答案? 我想这可能是因为没有人愿意把消息告诉你。

你有没有一个好的数据副本(甚至是一个月或两年前的)? 如果没有,那么你是我害怕的SOL。 您已经对数据库的同步副本做了一些暗示,因此如果在执行错误的UPDATE语句之前取消了同步,则需要创build一个语句来更新源A与该表的源B的数据。

(我曾经这样做了一次,MSSQL和日志传送,谢天谢地,能够在网站B上的不良数据恢复之前停止日志传送,只是在服务器之间做了一个UPDATE语句来解决我的错误)。

正如Marc B所说,如果启用了二进制日志logging(并且日志还没有被截断),那么您可以通过获取要重放的日志来恢复某些数据(即使您有一个真正的数据库旧副本,如果你的日志是完好的,你会没事的),但这可能有点碰运气。