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

本文概述

  • 要求
  • 1.制作服务器的mysql / data内容的副本
  • 2.将内容添加到本地mysql / data文件夹
  • 3.启动MySQL服务器
  • 4.转储数据库
  • 信息
上周我很幸运, 其中一台生产服务器发生了电源故障, 导致存储在MySQL服务器上的某些InnoDB数据库损坏。如你所知, 大多数InnoDB损坏与硬件有关, 并且由于电源故障或内存不足而导致的页面写入损坏。
尽管有新的备份, 但我自己问自己, 如果发生这种不幸的事件, 没有备份的人会怎么做。令我惊讶的是, 许多开发人员声称仅使用MySQL的数据文件夹从InnoDB中还原数据库非常困难, 但是我尝试了一种基本的组合, 而且幸运的是, 我能够使用MySQL dump从文件中导出几乎所有数据库。今天, 我将与你分享如何从Xampp for Windows中的MySQL数据文件夹中的所有idb和frm文件导出.sql文件。
重要信息 【如何在Windows上使用XAMPP恢复InnoDB MySQL文件】值得一提的是, 你将面对这种情况并仅在真正的紧急情况下应用此解决方案, 在这种情况下, 你不负责任地不对数据库进行备份, 或者它们已经使用了一个多月。这意味着该解决方案不能保证数据库的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文件夹中创建原始数据的备份。
如何在Windows上使用XAMPP恢复InnoDB MySQL文件

文章图片
获得这些数据后, 请继续下一步。
2.将内容添加到本地mysql / data文件夹 接下来, 你需要在本地创建xampp的mysql / data文件夹的备份, 以防万一失败, 因此你只需要使用mysql / data的旧内容, 一切就将恢复正常。在XAMPP的本地mysql / data文件夹中, 你需要删除所有原始内容, 但以下目录除外(它们不能更改, 因此请确保从服务器数据中删除这些目录):
  • mysql(目录)
  • mysql_upgrade_info(文件)
  • performance_schema(目录)
然后, 从服务器添加内容(步骤1), 而不替换前面提到的文件和目录。
3.启动MySQL服务器 粘贴内容后, 从控制面板启动mysql服务:
如何在Windows上使用XAMPP恢复InnoDB MySQL文件

文章图片
如果服务器无法启动 如果服务器由于某些数据库中的表损坏而无法启动, 则可以强制其使用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.htmlinnodb_force_recovery = 2innodb_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; ):
如何在Windows上使用XAMPP恢复InnoDB MySQL文件

文章图片
最后, 在命令过程中退出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文件还原表。
恢复愉快!

    推荐阅读