祝你好运。
我使用MySQL服务器和“innodb_file_per_table”选项,现在服务器崩溃了。我想用这种方式恢复这个服务器:
在每个文件夹中,我有两个文件,.frm和.ibd,看起来这些文件包含我的数据库表中的所有数据。
但是,复制后,这个数据库中的表不起作用:当我尝试打开某个表时,我收到错误:引擎中不存在表xxx。
我尝试过REPAIR命令,但没用。
如果您知道如何完成我的修复方式 - 请帮忙。
......我知道我也需要复制ibdata1,但它看起来已经无法恢复,所以我尝试着尝试。
答案 0 :(得分:0)
REPAIR命令对InnoDB没有帮助。
如果你足够幸运,你能做的最好的事情是: 1.使用innodb_force_recovery = 4启动MySQL(如果InnoDB无法启动,请尝试5,6个值)。确保innodb_purge_threads = 0。 2.使用mysqldump工具转储数据库。是的,它可能很慢,但没有其他选择。 3.创建新的空InnoDB表空间并重新加载转储。
如果MySQL无法以innodb_force_recovery = 6启动,则从备份恢复是唯一的选择。好吧,你可以从* .ibd文件中获取记录,但这是繁琐的工作 - 来自percona的谷歌数据恢复工具
更新:数据恢复工具包已移至GitHub
答案 1 :(得分:0)
You need to copy everything, not only the data folder For example, without the ibdata file, mysql don't know where the tables are stored.
https://serverfault.com/questions/487159/what-is-the-ibdata1-file-in-my-var-lib-mysql-directory