今天,我很高兴丢失了所有数据库。
幸运的是,我的data
文件夹仍然完好无损,并且包含所有.frm
文件.ibd
。
谷歌搜索了几个小时,我想出了一个解决方案,帮助我重新创建.sql
文件和表结构,然后导入.ibd
文件。
所有这一切的最大帮手是mysqlfrm
,我发现它已停产。不确定没有它我是否能够做到这一点。
这是我的过程:
将表导出到.sql
文件
mysqlfrm --server=root:[email protected] ./*.frm --port 3301 > ./dbtables.sql
获取所有创建表命令,以便更轻松地丢弃/导入表。这与dbtables.sql
文件一起用于获取所有实例,create table
因此更容易查找和替换ALTER TABLE mytable DISCARD TABLESPACE
/ IMPORT TABLESPACE
。
^[CREATETABLE].*+$
丢弃.ibd
文件命令:
ALTER TABLE mytable DISCARD TABLESPACE;
丢弃后,将.ibd
数据库文件夹中的文件复制到“实时”版本中。
导入.ibd
文件命令:
ALTER TABLE wp_actionscheduler_actions IMPORT TABLESPACE;
您知道仅使用.frm
,.ibd
文件来恢复数据库的现代方法吗?
Google 和 Stack Overflow 主要指向不再起作用的旧方法/工具。
任何操作系统的解决方案都会很棒,因为我可以访问所有操作系统,因此希望可以毫无问题地测试它们。
虽然可能有办法做到这一点,但我不建议您将其视为任何类型的“恢复”策略。
不。
是的。
来自您为此目的明确采取的备份。
在发生此类事件后尝试“修复”数据库文件就像尝试启动汽车并在高速撞到砖墙后将其开走……当然;如果您非常、非常 [un] 幸运,它可能会起作用,但您绝对不知道引擎盖下可能潜伏着什么其他危险。
将您的数据库恢复到已知的良好状态(您的最后一次备份)并从那里继续前进。
这是一个真理,很多时候,学会了艰难的道路,但是......
有些人甚至建议走得更远!阅读有关三份规则的信息...