个性化阅读
专注于IT技术分析

如何在Windows上使用XAMPP恢复InnoDB MySQL文件

本文概述

上周我很幸运, 其中一台生产服务器发生了电源故障, 导致存储在MySQL服务器上的某些InnoDB数据库损坏。如你所知, 大多数InnoDB损坏与硬件有关, 并且由于电源故障或内存不足而导致的页面写入损坏。

尽管有新的备份, 但我自己问自己, 如果发生这种不幸的事件, 没有备份的人会怎么做。令我惊讶的是, 许多开发人员声称仅使用MySQL的数据文件夹从InnoDB中还原数据库非常困难, 但是我尝试了一种基本的组合, 而且幸运的是, 我能够使用MySQL dump从文件中导出几乎所有数据库。今天, 我将与你分享如何从Xampp for Windows中的MySQL数据文件夹中的所有idb和frm文件导出.sql文件。

重要信息

值得一提的是, 你将面对这种情况并仅在真正的紧急情况下应用此解决方案, 在这种情况下, 你不负责任地不对数据库进行备份, 或者它们已经使用了一个多月。这意味着该解决方案不能保证数据库的100%完整性, 因为其中一些数据库最终可能会损坏, 并且你将无法转储它们(但是在这种情况下, 值得一试)。

要求

为了尝试在新的MySQL安装中恢复旧的MySQL安装数据, 你将需要:

  1. 可以正常运行的XAMPP全新安装(带有相同或更高版本的MySQL), 并且你愿意销毁。
  2. 你尝试通过Plesk安装在Ubuntu中恢复服务器的mysql数据文件夹的完整副本, 例如/ var / lib / mysql。该副本包括数据库中的所有数据, 包括ibdata1, ib_logfile0和ib_logfile1文件。
  3. 很多运气(真的, 你将需要它)。

话虽如此, 让我们开始吧!

1.制作服务器的mysql / data内容的副本

显然, 第一步是要在XAMPP中还原要还原的MySQL数据文件夹(例如Linux中的/ var / lib / mysql)。我们假设你拥有mysql数据文件夹中所有在服务器中不起作用的内容, 我们将尝试将其还原。

该数据具有文件夹格式, 其中包含每个数据库的名称, 在这些文件夹中, 你会发现IDB和FRM文件, 这些文件理论上包含数据库的数据, 只要它们没有损坏, 就可以对其进行恢复。 :

注意

如果希望在开始本教程之前一切正常, 还可以在Xampp的data文件夹中创建原始数据的备份。

MySQL数据文件夹内容

获得这些数据后, 请继续下一步。

2.将内容添加到本地mysql / data文件夹

接下来, 你需要在本地创建xampp的mysql / data文件夹的备份, 以防万一失败, 因此你只需要使用mysql / data的旧内容, 一切就将恢复正常。在XAMPP的本地mysql / data文件夹中, 你需要删除所有原始内容, 但以下目录除外(它们不能更改, 因此请确保从服务器数据中删除这些目录):

  • mysql(目录)
  • mysql_upgrade_info(文件)
  • performance_schema(目录)

然后, 从服务器添加内容(步骤1), 而不替换前面提到的文件和目录。

3.启动MySQL服务器

粘贴内容后, 从控制面板启动mysql服务:

MySQL服务Xampp

如果服务器无法启动

如果服务器由于某些数据库中的表损坏而无法启动, 则可以强制其使用InnoDB的恢复来启动。为此, 请修改MySQL的my.cnf文件(在Windows my.ini中的C:/ xampp7 / mysql / bin中), 并在mysqld块中添加2个新属性, 即innodb_file_per_table和innodb_force_recovery:

[mysqld]
# Increment this until the server starts up to a value of 6 if it the
# server can't start after pasting the new /mysql/data content
# See: https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
innodb_force_recovery = 2
innodb_file_per_table=1

这将允许你启动MySQL以保存未损坏的数据库。将更改保存在文件上, 然后重新启动mysql服务, 理论上你现在就可以转储数据库。

4.转储数据库

使用命令提示符, 在Xampp的安装中切换到MySQL二进制文件的目录, 通常是C:\ xampp \ mysql \ bin:

cd C:\xampp\mysql\bin

并以root身份或Xampp安装时曾经拥有的任何用户身份执行mysql控制台访问:

注意

以root用户身份登录很重要, 因此你将能够看到引擎上所有可用的数据库。

mysql -u root

这将打开mysql控制台, 这意味着你可以运行查询, 特别是列出引擎上所有可用数据库的查询(SHOW DATABASES;):

数据库列表Xampp

最后, 在命令过程中退出mysql进程, 并开始使用mysqldump导出数据库:

mysqldump -u root -p DATABASE_NAME > OUTPUT_DATABASE_BACKUP.sql

除非数据库的表之一已损坏, 否则你可以毫无问题地将其导出。有时, mysql服务将崩溃, 但是重新启动它并重试将是解决方案。

信息

当你正在寻找问题的解决方案时, 你可能会注意到找到适合你情况的东西是多么困难, 有些事情可能不是你的选择。这就是为什么我们会列出更多可能对你有用的文章, 并为你提供解决方法的想法(以防万一, 如果确实有可能, 那么备份将是你唯一的救助方法):

  1. 恢复损坏的InnoDB表。
  2. 如何在Mac上使用MAMP恢复innoDB MySQL文件。
  3. 如何从InnoDB IDB和FRM文件还原数据。
  4. 从InnoDB中的frm和idb文件还原表。

恢复愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Windows上使用XAMPP恢复InnoDB MySQL文件

评论 抢沙发

评论前必须登录!