【问题标题】:How can I recover MySQL tables from data files?如何从数据文件中恢复 MySQL 表?
【发布时间】:2011-04-17 12:24:57
【问题描述】:

我有一个数据库(所有 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 32 位的开发人员工作站上。 MySQL 版本是 5.0.27。修好机器后,我得到了完全相同版本的 MySQL (v5.0.27),我想如果我只是要放入二进制数据文件,我应该使用相同版本的 MySQL。还是不行。

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

-乔什

【问题讨论】:

    标签: mysql myisam recovery data-recovery frm


    【解决方案1】:
    1. 安装相同版本的mysql。
    2. 从服务器的数据目录中删除mysql目录并从崩溃的服务器中复制它。 这是关键元素
    3. 将要恢复的数据库目录复制到新服务器的数据目录中
    4. 启动mysql。
    5. 切换到 mysql 数据库:USE mysql; 并在每个表上运行 REPAIR TABLE <table name>
    6. 对要恢复的数据库执行相同操作

    提示:确保这2个目录具有与数据目录相同的权限

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

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

    【讨论】:

    • 嗨尼克,这些步骤都很有意义——我已经尝试过了。他们没有为我工作。在这一点上,我只是放弃并恢复了一些旧的 SQL 格式备份。它们不是 100% 最新的,但它们足够接近我能够使用它们,所以我就是这样做的。
    【解决方案2】:

    我最终放弃了。我认为答案是,对于我特定版本的 MySQL,这是行不通的。希望从那时起情况有所改善。

    【讨论】:

    • 您的特定 MySQL 版本是什么?我正在尝试做类似的事情。
    • 我不记得了——对不起。而那台发生故障的机器现在已成为古老的历史,所以我无法检查。希望你比我更成功!
    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2019-01-27
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多