只用bin-log文件恢复MySQL数据库

这是突变:

我们正在与我们公司合作开发testingpipe理的Web应用程序: TestLink 。 一个团队正在为此工作超过1个月。 昨天,另一个团队也想开始使用testLink,所以我被要求为他们安装。

安装是在第一个TestLink运行的服务器上进行的,我使用的是运行testLink的WampServer.2.0 ,所以我开始重新安装,不幸的是在同一个WampServer上。我有点累,我没有在安装中提到,我给第二个TestLink与第一个相同的数据库名称 ..安装成功…但等待! 第一个数据库中的所有数据都是丢失的! 由一个空的和新的数据库覆盖..! 我觉得有人肯定会杀了我!

所以我开始googling,但因为没有数据库备份,因为安装第一TestLink ..我真的觉得我没有解决scheme..我试图运行软件备份覆盖和意外删除的文件,这并没有帮助..课程…

我在这个博客中发现了一个关于MySQL二进制日志的故事,但是看起来至less有一个备份需要恢复丢失的数据。 在我的my.ini文件的configuration中, log-bin=mysql-bin行被取消注释,我可以在mysql \ data \下find如下所示的文件: mysql-bin.00000x

我使用mysqlbinlog --start-datetime="2011-04-01 00:00:00" mysql-bin.000006来运行mysqlbinlog命令,这使得我的屏幕看起来像一个matrix,我可以识别线看起来像TestLink的命令,该命令似乎成功结束..但没有..表中的数据库保持不变,空…

我错过了什么吗? 有希望之光吗?

请帮忙..

bin-log会logging每次启动时的所有查询,所以你基本上有三个select:

  1. bin-log从一开始就被启用,并logging数据库上的所有查询。 在这种情况下,您可以简单地从bin-log中恢复整个数据库。
  2. 在启用bin-log之后的某个时间,您会进行一次旧的备份。 在这种情况下,您可以从备份中进行恢复,并从备份所在的bin-log中的位置开始进行恢复(增量备份)。
  3. bin-log不包含来自数据库的所有查询,并且没有备份。 在这种情况下,您将(最终)能够恢复bin-log中包含的所有数据,但不存在的数据永远丢失。 您可以尝试手动恢复任何缺失的数据,但取决于您的数据结构/大小,这可能很简单到不可能。

从它的声音你没有备份,离开选项1和3.检查第一个bin日志文件,看看它的最早的条目是从哪些情况下适用于你。 如果你正在寻找mysqlbinlog的具体用法,请参阅官方文档 ,它可以很好地解释事情。

如果你能从中恢复,那么你应该/必须做的下一件事就是实施数据库的定期备份计划,包括非现场复制。

我终于摆脱了这个问题,并最大限度地减less损害使用bin-log文件,如uesp说。 我使用了mysqlbinlog binlog_file | mysql -u root -p mysqlbinlog binlog_file | mysql -u root -p恢复数据库中75%的数据,加上其结构。 其余的25%是手工编写的,我们花了大约半天的时间才把整个计划带回来。

是的,这是一个不好的经验,但是一个丰富的经验,我每天早上三点设置自动备份,压缩.sql转储,附加到一个电子邮件并发送给其他机器,如果是主要的烧伤:)

感谢大家的帮助,MySQL的官方文档也是真正有用的!

祝你有美好的一天!