1

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

我一直在对此进行一些搜索,听起来对于 MyISAM,我应该能够将数据库子目录从旧的 MySQL 数据目录复制到新的 MySQL 数据目录。但是,这对我不起作用。具有我要恢复的数据库名称的数据库显示在 phpMyAdmin 的数据库列表中,但所有表都显示“正在使用”并且没有信息(例如,行数、字节数、列信息, ETC。)。对这些表的任何操作(例如,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。它仍然没有工作。

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

-乔什

4

2 回答 2

2
  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并修复每个表。
于 2011-04-17T15:07:10.370 回答
0

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

于 2012-10-23T20:22:23.430 回答