如何从数据文件中恢复MySQL表?

时间:2010-09-26 20:42:55

标签: mysql myisam recovery data-recovery frm

我有一个数据库(所有MyISAM表)和运行MySQL的机器不再可启动。但是,我们拥有数据目录中的所有MySQL数据文件。如何从MYD和FRM文件或我在数据目录中查看的其他文件中恢复数据?

我一直在搜索这个问题听起来像MyISAM我应该能够将数据库子目录从旧的MySQL数据目录复制到新的MySQL数据目录。但是,这对我不起作用。我正在尝试恢复的数据库名称的数据库显示在phpMyAdmin的数据库列表中,但是所有表都显示“正在使用”并且没有信息(例如,行数,字节数,列信息)等)。对这些表的任何操作(例如,SELECT * FROM {table},REPAIR {table},CHECK {table})都会返回“no such table”错误。

我在搜索中遇到的一个工具是MicroOLAP的DBACentral。它有应该从FRM / MYD文件恢复数据的组件,但是当我尝试运行它时,它没有列出任何可以从我的FRM / MYD文件中恢复的表。

这是在运行Vista Business 32bit的开发人员工作站上。 MySQL版本是5.0.27。在修好机器之后,我去了完全相同版本的MySQL(v5.0.27),认为如果我只是要放入二进制数据文件,我应该使用相同版本的MySQL。它仍然无效。

任何见解都将不胜感激......谢谢!

-Josh

2 个答案:

答案 0 :(得分:2)

  1. 安装相同版本的mysql。
  2. 从服务器的数据目录中删除mysql目录,并从崩溃的服务器中复制它。 这是关键要素
  3. 将要恢复的数据库目录复制到新服务器的数据目录中
  4. 启动mysql。
  5. 切换到 mysql 数据库:USE mysql;并在每张桌子上运行REPAIR TABLE <table name>
  6. 对要恢复的数据库执行相同的操作
  7. 提示:确保2个目录具有相同的权限,如数据目录

    如果您没有保存mysql数据库(旧服务器的数据目录中的mysql目录,那么您可以尝试:

    1. 创建与您要恢复的数据库同名的数据库。
    2. 然后你可以创建每个表(使用相同的结构会很好 - 你有更大的恢复机会)。
    3. 然后停止mysql服务器并从数据库目录中删除文件并用旧服务器
    4. 中的文件覆盖它们
    5. 启动mysql并修复每个表。

答案 1 :(得分:0)

我放弃了。我认为答案是,使用我特定版本的MySQL,这不起作用。希望事情有所改善。