从恢复的硬盘中恢复MySQL数据库文件夹

17

我成功恢复了操作系统(Windows XP)的 MySQL Server 5.5 数据库文件夹,位置在

C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\

我该如何手动将它恢复到新的 MySQL Server 中?当我打开这个文件夹时,我发现有几个文件夹,我相信那些是数据库,但我没有找到任何 SQL 文件。

4个回答

25

好的,我已经找到了自己问题的答案。

可能的情况:

  1. MYSQL程序损坏无法启动。重新安装MYSQL未能恢复数据。
  2. 电脑崩溃但硬盘仍在工作。
  3. Windows系统损坏无法启动,但数据是安全的。

需要注意的是,在MYSQL中,扩展名为MYD的文件是表数据,FRM文件是表定义,MYI文件是表索引。还有在my.ini中指定的ibdata文件是InnoDB表空间文件。您必须是管理员,以便访问“文档和设置”文件夹或“程序文件”文件夹。

  1. 打开“资源管理器”(Windows键+E)或打开“我的电脑”,然后进入存储数据库文件的数据文件夹。
  2. 我建议您复制数据文件夹中的所有文件夹而不只是选择一些进行复制。复制数据库文件夹和ibdata文件(不要复制ib_logfile(x)文件!) 请注意,ibdata文件可能不在与数据文件相同的位置。要找出它可能在哪里,请阅读“如何在Windows中查找MYSQL数据库文件”的文章。
  3. 转到目标计算机,打开“系统服务”(在Windows菜单的“搜索程序和文件”条目框中输入services.msc)。
  4. 在服务窗口的右侧面板上,向下滚动列表,查找名称为“MYSQL”的项。选择MYSQL,右键单击并单击“停止”。一旦停止,您将看到它的状态由“运行中”变为空白。
  5. 同样地,查找数据文件夹的位置。定位后,我建议您备份文件夹或仅重命名它。将从源计算机复制的文件夹和ibdata文件粘贴到数据文件夹中。
  6. 返回“系统服务”窗口,然后选择MYSQL。右键单击它,然后单击“启动”,以恢复MYSQL服务。
  • 打开MYSQL管理员并登录到您的数据库服务器,您应该能够看到已传输的数据库以及它们的数据。

  • 3
    我这样做了,但服务启动失败 :( - perrohunter
    对我来说运行得很好。我想你需要确保安装相同版本的mysql才能使其正常工作? - stoic
    这在18.0.9版本中不起作用。你是指在第3步和第4步中使用net stop mysql吗? - AaA
    您确定不需要备份ib_logfile(x)文件吗?MySQL官方有关冷备份的说明中写道:“将所有InnoDB日志文件(ib_logfile文件)复制到安全位置。” - mahyard
    1
    只有当我复制整个“Data”文件夹时才能正常工作。否则,schemas将无法被识别。 - Jake
    显示剩余2条评论

    9

    @JohnWoo的回答仅适用于MYSIAM数据库引擎。我的回答严格适用于InnoDb存储引擎,即FRMIBD文件。


    要恢复InnoDb数据库,我成功地按照以下步骤进行了恢复。在指出这些步骤之前,我想告诉你,我是从Windows XP的恢复硬盘上执行恢复并将其转移到Windows 7上的。因此,这将有助于Windows XP和Windows 7用户。所以,我遵循的步骤是:

    • 两台机器上的MySQL服务器必须都停止。当然,如果操作系统/硬盘崩溃,则该机器上的服务器已经停止。
    • 现在,MySQL安装在2个文件夹中(至少对我而言)->
      1. Program Files / Program Files (x86),和
      2. C:\Program Data\MySQL在Windows 7和C:\Users\All users\Application Data\MySQL在Windows XP中。请注意,Program Data(win7)和Application Data(WinXP)是隐藏的文件夹。
    • 我们只关注Application Data或Program Data文件夹中的MySQL Server **文件夹。Program Files中的Mysql文件夹没有用处,因为它没有您的数据。
    • 现在复制MySQL Server **文件夹中的my.ini文件。
    • 打开数据文件夹并复制这些文件
      1. 所有ib_logfile*文件
      2. 所有ibdata*文件
      3. 包含.frm和.ibd文件的数据库文件夹
    • 现在,将上述两个要点中提到的文件复制到目标机器。强烈建议在目标机器上备份替换的文件。
    • 现在,重新启动服务器。如果你做得对,你将无错误地恢复你的数据库。

    我建议你查看mysql文档中InnoDB的冷备份方法:dev.mysql.com/doc/mysql-backup-excerpt/5.5/en/innodb-backup.html


    2
    谢谢,这帮助我恢复了我的数据库。我正在使用服务器版本5.5。在崩溃的电脑上找到数据目录,然后基本上将除*.err和*.pid之外的所有内容复制到新的服务器机器上。您可以将其复制到任何目录中。然后,在新的计算机上,编辑'my.ini',找到名为'datadir'的参数行,并将其指向您的新目录。例如:datadir=D:/MySql_Data/ - mjb

    5

    我认为MySQL的文件管理默认情况下相当简单。创建一个简单的新数据库,将恢复的文件复制到mysql子文件夹中,以替换任何创建的数据库文件。如果这不起作用,可以在新数据库中创建一个表格,以获取其他可能需要的提示。


    5
    为了确保没有内部状态问题,最好先创建新数据库,然后关闭服务器再复制现有文件。请注意,这不会改变原文的含义。 - eggyal
    我在看到你的回答之前就已经成功地恢复了它。谢谢,伙计,这已经足够了。 :) - John Woo
    它对我有用,另外我建议通过phpmyadmin工具在整个数据库上运行“检查表”和“修复表”,谢谢:D - AgelessEssence

    1
    我也遇到了同样的问题,花了将近两到三天时间解决了这个问题。我已经厌倦了所有其他令人困惑的答案。最终,我从旧驱动器中检索了所有数据,并且现在可以在我的新Microsoft Server安装中成功访问它。
    这可能会帮助其他人。
    面临的问题:
    1. 在旧硬盘中找到数据库文件:
      答案:按照此链接中的说明操作:
      https://www.quora.com/Where-is-the-database-stored-in-the-Microsoft-SQL-server/answer/Allu-Saiprudhvi?prompt_topic_bio=1

    2. 如果无法打开旧硬盘中的文件夹(出现"I/O 设备错误"消息):
      答案:更改相应的磁盘名称。请按照此链接中的说明操作:“follow the instructions given in this link”

    3. 获取数据库文件夹后,首先下载与旧硬盘中相同版本的 Mysql 服务器,您可以检查文件夹名称中提到的版本。

    4. 下载相同版本后,按照上面第1条指示将数据库文件夹粘贴到数据文件夹中。

    5. 停止并启动服务中的 Mysql 服务器:
      答案:要了解如何重新启动 mysql 服务器,请按照链接中给出的说明操作:
      https://www.quora.com/How-do-I-start-the-MySQL-server-in-Windows-10/answer/Allu-Saiprudhvi?prompt_topic_bio=1

    6. 现在您可以检查它,这应该成功地使数据库内的数据可通过 SQL 服务器访问。

    谢谢你


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接