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

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

更新时间:2019-11-29 10:31:03

问题描述

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

 

问题原因

mysql.slow_log表损坏。

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

 

解决方案

请根据MySQL对应的版本,进行以下操作。

 

适用于RDS MySQL 5.5实例

提交工单进行核实处理。

 

适用于RDS MySQL 5.6实例

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

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

 

RDS MySQL 5.7实例、RDS MySQL 8.0实例

方法1

为了彻底解决slow_log损坏的问题,建议您将RDS的内核小版本升级到最新的内核小版本,可以有效的避免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控制台的 参数设置 页面,设置slow_query_log参数为OFF,关闭慢日志采集。
  3. 使用RDS高权限账户,通过DMS或者命令行工具登录RDS数据库,执行如下SQL语句,进行修复。
    注:
    • 使用repair命令操作后,可以修复慢日志,新的慢日志可以正常记录,但是处于损坏过程中的慢日志无法找回。
    • 使用repair命令操作的时间取决于损坏的mysql.slow_log表的大小。
    repair table mysql.slow_log
  4. 修复完成后,在RDS控制台的 参数设置 页面中,设置slow_query_log参数为ON,打开慢日志采集。

 

适用于

  • 云数据库 RDS MySQL 版

 

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