mysql – 查找和修复InnoDB索引损坏
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 查找和修复InnoDB索引损坏,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1466字,纯文字阅读大概需要3分钟。
内容图文
我昨天遇到了一个新问题,我的一个MySQL 5.5从属数据库在AWS中的EC2上运行.数据库是从另一个从属设备的快照创建的.数据是正确的,但对于至少一个表,二级索引返回不完整的结果.通过父ID查询子表时返回498行应返回504.按主键查询丢失的6行,并返回正确的父ID,因此问题在于二级索引.
这个问题对我很高,因为大概即使从站上的所有数据都与主站相匹配,我仍然会在从站运行的某些查询中得到错误的结果.
我的强力解决方案是重建整个表格,如下所示:
alter table my_table engine = innodb;
这解决了这个特定表的问题,但我留下了以下问题:
1) How can I determine if other tables have similar index corruption?
2) What's the most efficient way to fix the corrupt indexes?
我在网上发现了一些很好的资源来查找和修复InnoDB数据损坏,但是没有找到与InnoDB索引损坏有关的任何内容.
我查看了MySQL错误日志,但没有找到吸烟枪.我确实发现了一些令人不安的InnoDB错误.我假设这是一个单独的问题,但它可能是相关的:
130109 9:46:41 InnoDB: unable to find a record to delete-mark
InnoDB: tuple DATA TUPLE: 2 fields;
0: len 4; hex 04af1f21; asc !;;
1: len 4; hex 0a1c03bd; asc ;;
InnoDB: record PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 04af1f21; asc !;;
1: len 4; hex 0a052a77; asc *w;;
解决方法:
感谢Rolando和Michael的回复.
关闭循环,这是我提出的原始问题的答案:
>问:如何确定其他表是否具有类似的索引损坏?
> A:使用CHECK TABLE.我在所有相关的InnoDB表上运行了mysqlcheck -c,以找出哪些表有索引损坏
>问:修复损坏索引的最有效方法是什么?
>答:使用OPTIMIZE TABLE重建具有损坏索引的InnoDB表.这会导致完整的表重建,从而修复损坏.
内容总结
以上是互联网集市为您收集整理的mysql – 查找和修复InnoDB索引损坏全部内容,希望文章能够帮你解决mysql – 查找和修复InnoDB索引损坏所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。