mysql innodb损坏的表

时间:2014-03-04 16:37:08

标签: mysql sql innodb data-recovery

我正在使用MySQL 5.1.68。最近我的数据库表因输入不当而被破坏。 我试图转储表并更改innodb_force_recovery但它们都没有工作。 表索引未损坏。问题出现在字符串列中,其中输入了','字符。我知道腐败已经开始的行,我不在乎是否会删除该行及以下的数据。我可以手动从ibdata文件中删除这些记录吗? 有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用mysqldump转储表的一部分。例如,如果要将表foo的行转储到主键值1234但不再转发:

$ mysqldump mydatabase foo --where "id <= 1234" > foo-dump.sql

然后删除表foo,希望删除损坏。然后恢复转储文件。


来自@akuzmisnky的评论是正确的(他是我在Percona的同事,他是世界上最有经验的MySQL数据恢复专家之一。)

以下是他所指的行动顺序,更详细:

  1. 尽可能多地转储数据而不触及数据库损坏的部分。这可能需要一些实验。同时从未损坏的表中转储所有你的InnoDB数据。
  2. 停止mysqld。
  3. rm InnoDB表空间和日志文件。
  4. 启动mysql。
  5. 恢复转储文件。