AWS Aurora MySQL 5.7 InnoDB全文索引在某时间点后停止索引求助
Aurora MySQL 5.7 全文索引自动刷入失效排查问题
环境与背景
- 运行环境:AWS RDS Aurora DB 5.7 MySQL
- 业务场景:维护在线论坛服务,核心数据表存储所有帖子及回复,该表定义了3个基于不同列的全文索引
- 搜索配置:采用ngram模式+BOOLEAN模式的
MATCH...AGAINST搜索,此前两年运行正常,今年9月起出现异常
故障现象
- 自今年9月某一日期后,全文索引不再新增数据
- 特殊情况:最近插入的行(<10分钟)可被搜索到,但一段时间后会从搜索结果中消失
已知机制与初步判断
- InnoDB全文索引依赖两张内部表:
INNODB_FT_INDEX_TABLE:持久化存储全文索引数据的表INNODB_FT_INDEX_CACHE:临时缓存新插入行索引数据的表
- 正常流程:新插入行的索引数据先存入缓存表,定期自动刷入持久化表;近期行能被搜索到应为直接读取缓存表的结果
- 异常判断:直接查询
INNODB_FT_INDEX_TABLE会导致连接中断、CPU占用飙升至99%,推测自9月起缓存到持久化表的自动刷入流程已停止工作
已执行的排查操作
- 设置参数
innodb_ft_aux_table="DATABASE_NAME/TABLE_NAME",查询全文索引相关内部表 - 确认
INNODB_FT_INDEX_CACHE运行正常,但无法直接查询INNODB_FT_INDEX_TABLE,且不确定该表能提供的有效信息
待解答的问题
- InnoDB全文索引是否存在大小上限?
- 此类自动刷入故障是否属于偶发现象,需要手动干预修复?
- 如何在不对在线服务造成严重停机的前提下重建全文索引?
- 全文索引自动刷入流程的日志存储位置在哪里?
内容的提问来源于stack exchange,提问作者Jason Song
相关产品推荐
相关产品推荐

