1

我浏览了整个网站,但没有找到这个问题的答案,所以我会问。如果它在这里的某个地方,我很抱歉。

我有一个 MySQL 5.5.15 服务器在旧的 Windows 2003 服务器上运行。由于硬盘驱动器和主板问题,该服务器最终失败。我现在有一台 Windows 2008 服务器。我确保将 MySQL 5.5.15 放在上面,所以第一步我有匹配的软件。

我移动了我拥有的所有数据文件。所以这包括 my.ini、ibdata1 和两个日志文件,一组 mysql-bin 文件,日期从去年 12 月开始。我找不到 .frm 文件。

然后我启动了 mysqld --console 并且它启动得很好。没有错误。

然后我单独启动了 mysql,并要求查看数据库。它只报告了三个默认值——information_schema、mysql 和 performance_schema。当我询问用户时,它具有默认用户。我的 ibdata1 文件是 641mb。

我确实尝试使用 innodb_force_recovery 的各种值启动它 - 没有任何变化。它仍然可以顺利启动,并且仍然只显示其中的数据。

2013 年 9 月 13 日更新 - 去年秋天从 5.1 升级到 5.5 期间,我的系统变得相当混乱。尽管 ini 文件明确表示要将数据放在一个位置,但一定有一个注册表项或其他仍然指向 5.1 的东西。因此,虽然三个主要文件(IBDATA1 等)位于 5.5 目录中,但所有匹配的 .frm 文件都位于 5.1 目录中。

当我在 2003 年的服务器上将所有部分组装在一起时,使用匹配的 5.5 MySQL 软件 POOF,WordPress 五个数据库完全顺利导出,所有数据都通过崩溃。这五个数据库已在新服务器上启动并运行。他们一切都很好。这五个在他们的目录中只有 .frm 文件,并在那里被列为 INNODB。所以数据确实在我拥有的 IBDATA1 文件中。

剩下的三个 UBB 论坛数据库。他们在目录中有 .frm 以及 .myi 和 .myd 文件。.frm 文件表明这些表是 MISAM。升级后我已将它们全部转换为 INNODB。因此,这些 .frm 文件似乎不是与 IBDATA1 文件一起使用的文件。但我在旧 C 盘上找不到任何其他 .frm 文件。我能够成功导出那些 .myi / .myd 文件中的数据——这是去年 12 月我将它们转换为 INNODB 之前的数据状态。这至少让论坛能够使用 8 年左右的数据进行工作——当然,最后 9 个月的数据仍然缺失。INNODB 转换后的所有内容都“捕获”在 IBDATA1 文件中。

我知道我将表转换为 INNODB。我知道我拥有的这个 INNODB 文件(IBDATA1)是正在使用的活动文件,因为我刚刚从中获取了所有 wordpress 内容。显然我现在必须找到“正确的” .frm 文件来配合它——或者找到某种方法从 IBDATA1 文件中提取数据而无需 .frm 文件。或者,我是否可以编辑我拥有的 .frm 文件并将它们从说这些表是 MyISAM(它们的当前状态)更改为说它们是 INNODB(实际上它们是)?

我愿意接受建议。

丽莎

4

1 回答 1

0

我不确定我是否真的需要问,但是您确定将文件放在正确的目录中吗?事实上,您已经替换了 IBData1 文件,并且在服务器重新启动后您仍然拥有旧用户......

据我所知,information_schema实际上performance_schema是从非文件源构建的视图,因此不会成为 IBData1 文件的一部分。

虽然我对 Linux 系统有更多经验,但我知道 MySQL 对数据文件的所有权和权限很挑剔。

另外,我会将日志文件从数据目录中移开(当服务器停止时),因为当前的文件可能无论如何都没有用,而新的文件在 mysql 启动时将被填充为零。

如果您已经检查了权限和所有权,还请查看innodb_file_per_table您的 if 是否设置,my.cnf因为如果是这种情况,您的数据库实际上将位于数据目录的子文件夹中。IBData1 文件很大可能会产生误导,但在大多数 MySQL 版本中,它实际上不会在将数据拆分为单个文件后自行缩小。

于 2013-09-12T03:08:37.903 回答