我必须恢复在MySQL 5.0中无意中DROPped的数据库。从检查备份文件开始,我似乎只有.FRM文件来保存数据库数据。
任何人都可以建议我是否需要从备份中执行数据库恢复/导入,还是需要其他文件才能完成此操作?
答案 0 :(得分:14)
.frm文件不是数据文件,它们只存储“数据字典信息”(参见MySQL manual)。 InnoDB将其数据存储在ib_logfile *文件中。这就是您进行备份/恢复所需的。有关详细信息,请参阅here。
答案 1 :(得分:10)
恢复innodb: (假设您的数据文件夹是C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data)
将3个ibdata文件复制到数据文件夹ex。 (C:\ ProgramData \ MySQL \ MySQL Server 5.5 \ data)
_ib_logfile0 _ib_logfile1 _ibdata1
通过文件右键单击 - >获取以MB为单位的_ib_logfile0的大小(它应与_ib_logfile1相同)属性
将innodb_log_file_size = 343M的mysql配置文件(mysql \ bin \ my.ini)编辑为ibdata文件大小
运行
mysqld --defaults-file = mysql \ bin \ my.ini --standalone --console --innodb_force_recovery = 6
现在您的数据应该回到您的数据库中。使用phpmysql或任何其他工具
答案 2 :(得分:6)
哦,我...你遇到了麻烦。关闭数据库。备份innodb文件。祈祷你放弃数据库后没有做任何事情。
Percona的人员(包括MySQL性能博客的作者)应该能够帮助你:Percona emergency support。
如果您自己冒险,请随身携带:Data Recovery Toolkit for Innodb。
物流呢?您必须阅读每个页面(计算机术语页面...在Innodb的情况下为16k块)并以此方式重建您的数据。这是非常低级的工作(我们正在谈论打开你的十六进制编辑器并开始计算字节,如果工具包没有为你做的话),如果你不是一个经验丰富的程序员,你将会受到伤害答案 3 :(得分:-2)
您可以在此处找到详细的解决方案:
http://www.unilogica.com/mysql-innodb-recovery/(葡萄牙语文章)
除了 innodb_force_recovery 的标志之外,我找到了另一个解决方案: innodb_file_per_table ,它会像MyISAM表一样拆分每个文件中的InnoDB表。
在崩溃恢复中,您可以丢失的数据少于单个文件 ibdata1 。