RDS MySQL版实例的慢日志无数据

问题描述

RDS MySQL版实例的慢日志明细和慢日志统计中无数据,无法查询慢日志,慢日志不正常输出,且看不到慢日志信息。

问题原因

mysql.slow_log表损坏,RDS MySQL版实例的慢日志记录在mysql.slow_log表中,后台会定期的获取慢日志记录并清理mysql.slow_log表,然后展示到RDS控制台的慢日志明细页面。

解决方案

RDS MySQL 5.5版实例

您可以先确认已开启慢日志功能,若已开启还是出现问题,请提交工单进行核实处理。

RDS MySQL 5.6版实例

为了彻底解决mysql.slow_log损坏的问题,建议您将RDS的内核小版本升级到最新的内核小版本,详情请参见升级内核小版本,可以有效的避免mysql.slow_log损坏。

说明:RDS MySQL 5.6实例目前不支持通过repair命令修复mysql.slow_log表,如果您短期不考虑升级内核小版本,请提交工单进行处理。

RDS MySQL 5.7版实例和RDS MySQL 8.0版实例

方法1

为了彻底解决mysql.slow_log损坏的问题,建议您将RDS的内核小版本升级到最新的内核小版本,详情请参见升级内核小版本,可以有效的避免mysql.slow_log损坏。

方法2

该解决方案强烈建议在业务低峰期执行,避免当mysql.slow_log表很大时,使用repair命令修复造成性能波动。

  1. 使用RDS高权限账户,通过DMS或者命令行工具登录RDS数据库,执行如下SQL语句,对mysql.slow_log表进行查询操作。
    select * from mysql.slow_log where sql_text like 'test%';
    如果RDS返回结果如下所示,可以确认是mysql.slow_log损坏,请继续下一步操作。
    Table 'slow_log' is marked as crashed and should be repaired
  2. 登录RDS控制台,单击实例列表
  3. 选择对应的地域,然后单击目标实例ID。
  4. 找到并单击参数设置,在参数设置页面将slow_query_log参数设置为OFF,然后单击提交参数,即可关闭慢日志采集。
  5. 创建高权限账号,详情请参见创建高权限账号
  6. 使用高权限账号,通过DMS控制台或者命令行工具登录RDS数据库,执行如下SQL语句,进行修复。
    说明
    • 使用repair语句后,可以修复慢日志,新的慢日志可以正常记录,但是处于损坏过程中的慢日志无法找回。
    • 使用repair语句操作的时间取决于损坏的mysql.slow_log表的大小。
    repair table mysql.slow_log
  7. 修复完成后,在RDS控制台的参数设置页面中,将slow_query_log参数设置为ON,然后单击提交参数,即可打开慢日志采集。

适用于

  • 云数据库RDS MySQL版

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。