我正在使用MySQL 5.1.68。最近我的数据库表因输入不当而被破坏。 我试图转储表并更改innodb_force_recovery但它们都没有工作。 表索引未损坏。问题出现在字符串列中,其中输入了','字符。我知道腐败已经开始的行,我不在乎是否会删除该行及以下的数据。我可以手动从ibdata文件中删除这些记录吗? 有另一种方法吗?
答案 0 :(得分:0)
您可以使用mysqldump转储表的一部分。例如,如果要将表foo
的行转储到主键值1234但不再转发:
$ mysqldump mydatabase foo --where "id <= 1234" > foo-dump.sql
然后删除表foo,希望删除损坏。然后恢复转储文件。
来自@akuzmisnky的评论是正确的(他是我在Percona的同事,他是世界上最有经验的MySQL数据恢复专家之一。)
以下是他所指的行动顺序,更详细:
rm
InnoDB表空间和日志文件。