小编Ike*_*ker的帖子

查找和修复 InnoDB 索引损坏

昨天我遇到了一个新问题,我的一个 MySQL 5.5 从数据库在 AWS 的 EC2 上运行。数据库是从另一个从站的快照创建的。数据是正确的,但至少对于一个表,二级索引返回的结果不完整。通过父 id 查询子表返回 498 行,而它应该返回 504。通过主键查询丢失的 6 行工作,并且返回了正确的父 id,所以问题出在二级索引上。

这个问题对我来说非常重要,因为据推测,即使从站上的所有数据都与主站匹配,我仍然会从在从站上运行的某些查询中得到不正确的结果。

我的蛮力解决方案是像这样重建整个表:

alter table my_table engine = innodb;
Run Code Online (Sandbox Code Playgroud)

这解决了这个特定表的问题,但我还有以下问题:

1) How can I determine if other tables have similar index corruption?
2) What's the most efficient way to fix the corrupt indexes?
Run Code Online (Sandbox Code Playgroud)

我在网上找到了一些很好的资源来查找和修复 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 …
Run Code Online (Sandbox Code Playgroud)

mysql innodb

9
推荐指数
2
解决办法
4万
查看次数

如何找出 MySQL 表上次被分析的时间?

我主要对 InnoDB 感兴趣,但也对 MyISAM 感兴趣。

我环顾 information_schema 并没有在任何地方看到这些数据。

我正在使用 MySQL 5.5.16。

mysql innodb myisam mysql-5.5

5
推荐指数
1
解决办法
8552
查看次数

如何为给定用户设置默认会话 sql_mode?

我想要一个不同于全局 sql_mode 的默认会话 sql_mode。

我可以手动设置,但我想自动设置。

我以为我可以将它添加到.my.cnf,但这不起作用。我尝试将它添加到 中的[mysql]组中.my.cnf,它没有抛出错误。

然而,当我连接会话 sql_mode 时,会话仍然继承全局 sql_mode。

我正在使用 MySQL 5.5.16。

mysql my.cnf

4
推荐指数
1
解决办法
5338
查看次数

标签 统计

mysql ×3

innodb ×2

my.cnf ×1

myisam ×1

mysql-5.5 ×1