我们刚刚遭遇了一场重大灾难:有人对生产数据库进行了不加控制的更新,显然,备份过程很长时间以来都无法工作,因此我们损失了大量的数据。一个4000万行表现在满是垃圾。
有人有办法恢复数据吗?例如,使用文件系统恢复的工具?
事实:
老实说,这不是我们公司的第一次大灾难,但这次很容易成为最后一次。我们通常会想出一些办法来挽救这一天,但这次,我真的没有办法了。一群人..。
编辑:这个问题发生在一个update语句之后,而不是where。问题是,这个问题发生在星期一下午到星期二上午(法国时间)之间,直到今天才被发现,原因有很多(应用程序提供了一个同步工具,所以新的数据被插入到现在丢失的数据中,但是另一个表中的一个外键现在被完全破坏了)。因此,实际上,表中的几乎所有行(新插入的除外)都包含相同的数据( id列除外)。
关于ibdata*和ib_logfile*,我停止了复制的服务器,所以它们保持不变。我无法停止主服务器上的数据库来复制文件。
发布于 2011-01-26 22:57:26
两个小时却没有答案?我想这可能是因为没有人愿意把这个消息告诉你。
你在任何地方都有好的数据副本(甚至一个月或两个月前的数据)吗?如果没有那你恐怕就是索尔了。您已经对数据库的同步副本做了一些暗示,因此,如果在执行错误的UPDATE语句之前删除了同步,则需要创建一个语句来使用源B的数据更新该表的源A。
(我曾经使用过MSSQL和日志传送,谢天谢地,在站点B上还原了坏数据之前,我能够停止日志传送,并在服务器之间执行了一个UPDATE语句以撤消我的错误)。
正如Marc B所提到的,如果启用了二进制日志记录(并且日志还没有被截断),您可能能够通过让日志被重放来恢复一些数据(即使您有数据库的一个非常旧的副本,如果您的日志是完整的,您就会没事),但这可能会有点命中-和-错过。
https://serverfault.com/questions/227338
复制相似问题