本文概述
- 要求
- 1.制作服务器的mysql / data内容的副本
- 2.将内容添加到本地mysql / data文件夹
- 3.启动MySQL服务器
- 4.转储数据库
- 信息
尽管有新的备份, 但我自己问自己, 如果发生这种不幸的事件, 没有备份的人会怎么做。令我惊讶的是, 许多开发人员声称仅使用MySQL的数据文件夹从InnoDB中还原数据库非常困难, 但是我尝试了一种基本的组合, 而且幸运的是, 我能够使用MySQL dump从文件中导出几乎所有数据库。今天, 我将与你分享如何从Xampp for Windows中的MySQL数据文件夹中的所有idb和frm文件导出.sql文件。
重要信息 【如何在Windows上使用XAMPP恢复InnoDB MySQL文件】值得一提的是, 你将面对这种情况并仅在真正的紧急情况下应用此解决方案, 在这种情况下, 你不负责任地不对数据库进行备份, 或者它们已经使用了一个多月。这意味着该解决方案不能保证数据库的100%完整性, 因为其中一些数据库最终可能会损坏, 并且你将无法转储它们(但是在这种情况下, 值得一试)。
要求 为了尝试在新的MySQL安装中恢复旧的MySQL安装数据, 你将需要:
- 可以正常运行的XAMPP全新安装(带有相同或更高版本的MySQL), 并且你愿意销毁。
- 你尝试通过Plesk安装在Ubuntu中恢复服务器的mysql数据文件夹的完整副本, 例如/ var / lib / mysql。该副本包括数据库中的所有数据, 包括ibdata1, ib_logfile0和ib_logfile1文件。
- 很多运气(真的, 你将需要它)。
1.制作服务器的mysql / data内容的副本 显然, 第一步是要在XAMPP中还原要还原的MySQL数据文件夹(例如Linux中的/ var / lib / mysql)。我们假设你拥有mysql数据文件夹中所有在服务器中不起作用的内容, 我们将尝试将其还原。
该数据具有文件夹格式, 其中包含每个数据库的名称, 在这些文件夹中, 你会发现IDB和FRM文件, 这些文件理论上包含数据库的数据, 只要它们没有损坏, 就可以对其进行恢复。 :
注意 如果希望在开始本教程之前一切正常, 还可以在Xampp的data文件夹中创建原始数据的备份。
文章图片
获得这些数据后, 请继续下一步。
2.将内容添加到本地mysql / data文件夹 接下来, 你需要在本地创建xampp的mysql / data文件夹的备份, 以防万一失败, 因此你只需要使用mysql / data的旧内容, 一切就将恢复正常。在XAMPP的本地mysql / data文件夹中, 你需要删除所有原始内容, 但以下目录除外(它们不能更改, 因此请确保从服务器数据中删除这些目录):
- mysql(目录)
- mysql_upgrade_info(文件)
- performance_schema(目录)
3.启动MySQL服务器 粘贴内容后, 从控制面板启动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; ):
文章图片
最后, 在命令过程中退出mysql进程, 并开始使用mysqldump导出数据库:
mysqldump -u root -p DATABASE_NAME >
OUTPUT_DATABASE_BACKUP.sql
除非数据库的表之一已损坏, 否则你可以毫无问题地将其导出。有时, mysql服务将崩溃, 但是重新启动它并重试将是解决方案。
信息 当你正在寻找问题的解决方案时, 你可能会注意到找到适合你情况的东西是多么困难, 有些事情可能不是你的选择。这就是为什么我们会列出更多可能对你有用的文章, 并为你提供解决方法的想法(以防万一, 如果确实有可能, 那么备份将是你唯一的救助方法):
- 恢复损坏的InnoDB表。
- 如何在Mac上使用MAMP恢复innoDB MySQL文件。
- 如何从InnoDB IDB和FRM文件还原数据。
- 从InnoDB中的frm和idb文件还原表。
推荐阅读
- 如何在Windows中配置NetBeans以将SASS或SCSS文件自动编译为CSS
- 如何下载和安装自定义UI PHPMyAdmin主题
- 没有找到“com.google.android.material.button.MaterialButton”类
- android studio 3.1.3中的Gradle项目同步失败
- Apple拒绝了Safari插件(“不使用自定义图标”)
- apply plugin('android'或者应用插件:'com.android.application')
- 在Android Studio Canary 5中将Kotlin恢复为Java代码
- Android插件为某些源代码方法添加特定代码
- 使用android gradle插件3.0.0比gradle插件2.3.3慢