MySQL崩溃 - > innodb恢复无法正常工作 - >尝试另一种方式

时间:2013-12-02 17:59:23

标签: mysql sql database innodb recovery

祝你好运。

我使用MySQL服务器和“innodb_file_per_table”选项,现在服务器崩溃了。我想用这种方式恢复这个服务器:

  • 卸载旧MySQL
  • 安装新MySQL
  • 在MySQL配置中添加“innodb_file_per_table”
  • 将数据库文件夹(仅限my,而不是mysql)从旧的MySQL /数据复制到新的MySQL / data

在每个文件夹中,我有两个文件,.frm和.ibd,看起来这些文件包含我的数据库表中的所有数据。

但是,复制后,这个数据库中的表不起作用:当我尝试打开某个表时,我收到错误:引擎中不存在表xxx。

我尝试过REPAIR命令,但没用。

如果您知道如何完成我的修复方式 - 请帮忙。

......我知道我也需要复制ibdata1,但它看起来已经无法恢复,所以我尝试着尝试。

2 个答案:

答案 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