我正在尝试在 PMA 中恢复数据库,但只能访问 frm 和 ibd 文件 - 而不是我理解您需要的 ib_log 文件。
我知道我可能无法恢复数据库数据,但是否可以从 frm 文件中恢复表的结构?
原文由 fraggley 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试在 PMA 中恢复数据库,但只能访问 frm 和 ibd 文件 - 而不是我理解您需要的 ib_log 文件。
我知道我可能无法恢复数据库数据,但是否可以从 frm 文件中恢复表的结构?
原文由 fraggley 发布,翻译遵循 CC BY-SA 4.0 许可协议
多年后,我想加入讨论以分享我的解决方案,该解决方案是昨天遇到同样问题时成立的。
我搜索并尝试了很多不同的东西(比如使用 Mysql Utilities 脚本),重新创建表等等……但真正的解决方案更容易(也很棘手):
Step 1)
mysql/data
路径下)Step 2)
Step 3)
mysql/data
中的 frm/idb 文件 的文件夹注意:只有文件夹而不是所有文件
Step 4)
ibdata1
的文件并在全新的 mysql 安装中覆盖它Step 5)
就这样!几秒钟后,Mysql 服务器应该会正常启动,如果没有任何损坏,文件应该被恢复!
解释:
- 蓝色: 要在新的 mysql-server 中导入的文件(第 3 步)
- 红色: 不 导入新 mysql-server 的文件
- 绿色: 要在新的 mysql-server 中导入的 ibdata1 文件(第 4 步)
原文由 Zenek 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答7.4k 阅读✓ 已解决
2 回答6.6k 阅读✓ 已解决
1 回答5.2k 阅读✓ 已解决
1 回答5k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
我只从
.frm
和.idb
文件恢复了表格。获取 SQL 查询以创建表
如果您已经知道表的架构,则可以跳过此步骤。
首先,安装 MySQL 实用程序。然后您可以在命令提示符 (cmd) 中使用
mysqlfrm
命令。其次,使用
mysqlfrm
命令从.frm
文件中获取 SQL 查询:然后您可以获取 SQL 查询来创建相同的结构化表。像这样:
创建表
使用上述 SQL 查询创建表。
如果旧数据仍然存在,您可能必须先删除相应的数据库和表。确保您有数据文件的备份。
恢复数据
运行此查询以删除新表数据:
这将删除新的
.frm
文件和(新的,空的).idb
文件之间的连接。此外,删除文件夹中的.idb
文件。然后,将旧的
.idb
文件放入新文件夹,例如:确保
.ibd
文件可以被mysql
用户读取,例如在文件夹中运行chown -R mysql:mysql *.ibd
。运行此查询以导入旧数据:
这会从
.idb
文件导入数据并恢复数据。