RDS MySQL提供了丰富的性能监控指标,支持自定义视图,您可以自主选择指标进行监控。提供强大的诊断能力,能够及时发现数据库实例产生的事件,并对其进行自动诊断,输出根因分析和建议;并且支持自主选择时段进行手动诊断,帮助您了解数据库实例的运行情况。

功能说明

RDS MySQL升级了标准监控,融合了数据库自治服务DAS(Database Autonomy Service)的性能趋势,提供更加丰富的性能监控指标,支持自定义视图,您可以自主选择指标进行监控。提供强大的诊断能力,能够及时发现数据库实例产生的事件,并对其进行自动诊断,输出根因分析和建议;并且支持自主选择时段进行手动诊断。

  • 监控指标对应的性能参数请参见性能参数表
  • 数据库自治服务DAS是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助您消除人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。详情请参见数据库自治服务DAS简介

操作步骤

查看标准监控

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏单击监控与报警
  3. 标准监控页面,根据需要选择标准视图自定义视图
    • 标准视图页签,选择查询时间,查看选定时间范围内的指标趋势和各类事件的统计信息。
      单击添加趋势对比,查看不同时间段内相同指标的性能趋势对比。添加趋势对比
      说明 选择时间范围时,结束时间需晚于开始时间,且开始时间和结束时间的间隔不能超过30天。
      • 在事件统计区域,单击查看详情,可以跳转到性能事件页面,查看实例异常事件、优化事件和弹性伸缩事件的详细信息,包括计划执行、正在执行和已执行完成的事件。
      • 在指标趋势图区域:
        • 系统在经典视图的基础上提供了常见问题场景的诊断视图,您可以通这些视图中主要指标的趋势,快速定位问题原因。

          当前提供的诊断视图包括:内存OOM诊断只读实例延迟诊断空间满问题诊断CPU抖动诊断大事务识别诊断,请根据实际需要选择对应的诊断视图。诊断视图的使用请参见诊断视图使用指南

          说明 单击每个监控项后的指标查看各个监控项包含的指标。
          选择视图
        • 经典视图视图中,单击更多指标,可以选择需要查看性能趋势的指标。
        • 经典视图视图中,选择需要展示的事件级别,当检测到对应事件时,系统会在MySQL CPU/内存利用率会话连接的趋势图中展示这些事件。

          单击趋势图中的事件,在事件列表的事件详情中查看诊断结果。

          事件监控
        • 在任意指标趋势图中,使用鼠标拖拽选择一段时间,可以对选择时段进行诊断
        • 单击某个监控指标趋势图中的常见问题,查看造成该指标异常的常见原因。
        • 单击某个监控指标趋势图中的详情,放大该监控指标的趋势图,并且可以修改时间查看该监控指标不同时间的变化趋势。
    • 自定义视图页签,单击新增监控大盘,通过自定义监控大盘,查看需要进行监控的指标趋势。
      • 单击添加节点和指标监控,为监控大盘选择需要监控的节点和指标‪。
      • 您可以根据需要,选择不同的指标展示方式,合并展示分开展示
        • 当选择合并展示时,多个指标在同一个趋势图表进行展示。
        • 当选择分开展示时,单独展示每个指标的趋势图。
          • 通过图表布局,您可以设置每行显示监控指标趋势图的数量。
          • 单击某个监控指标趋势图中的详情,放大该监控指标的趋势图,并且可以修改时间查看该监控指标不同时间的变化趋势。

查看旧版监控

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏单击监控与报警
  3. 旧版监控页面选择资源监控引擎监控部署监控,并选择查询时间(如果是集群版实例,还可以选择实例或节点ID),即可查看相应的监控数据,具体监控项介绍如下。
    说明 选择时间范围时,结束时间需晚于开始时间,且开始时间和结束时间的间隔不能超过30天。
    类别监控项说明
    资源监控CPU和内存使用率实例的CPU和内存使用率(不含操作系统占用)。
    磁盘空间实例的磁盘空间使用量,包括:
    • 磁盘空间总体使用量
    • 数据空间使用量
    • 日志空间使用量
    • 临时文件空间使用量
    • 系统文件空间使用量

    单位:MByte。

    IOPS实例的每秒I/O请求次数,单位:次/秒。
    连接数实例当前总连接数,包括活跃连接数和总连接数。
    网络流量实例每秒钟的输入、输出流量,单位:KB。
    引擎监控TPS/QPS平均每秒事务数和平均每秒SQL语句执行次数。
    InnoDB缓存读命中率、使用率、脏块率InnoDB缓冲池的读命中率、使用率以及缓冲池脏块的百分率。
    InnoDB读写量InnoDB每秒读取和写入的数据量,单位:KB。
    InnoDB缓存请求次数InnoDB每秒钟的读取和写入的次数。
    InnoDB日志读/写/fsyncInnoDB每秒向日志文件的物理写入次数、日志写请求、向日志文件完成的fsync写数量。
    临时表数量数据库执行SQL语句时在硬盘上自动创建的临时表的数量。
    MySQL_COMDML数据库每秒SQL语句执行次数,包括的类型如下:
    • Insert
    • Delete
    • Insert_Select
    • Replace
    • Replace_Select
    • Select
    • Update
    MySQL_RowDMLInnoDB每秒钟操作执行次数,包括:
    • 每秒向日志文件的物理写次数。
    • 每秒从 InnoDB 表读取、更新、删除、插入的行数。
    MyISAM读写次数MyISAM每秒从缓冲池中的读、写次数和每秒钟从硬盘上的读、写次数。
    MyISAM Key Buffer读/写/利用率MyISAM每秒的Key Buffer读命中率、写命中率、使用率。
    MySQL_ThreadStatus线程状态包括活跃线程(Threads_running)和线程连接数(Threads_connected)。
    说明 活跃线程可能会多于线程连接数,因为线程有可能用于其他工作而没有用于建立连接。
    InnoDB每秒写入redo log日志量记录了每秒写入到redo log的日志量。单位:bytes。
    MySQL_ROW_LOCKInnoDB的行级锁相关信息,包括:
    • innodb_row_lock_waits:InnoDB表平均等待行级锁次数。
    • innodb_row_lock_time:InnoDB最大等待行级锁时间,单位:毫秒(ms)。
    • innodb_row_lock_avg:InnoDB平均等待行级锁时间,单位:毫秒(ms)。
    MySQL_SelectScan全表扫描的次数。
    部署监控备节点复制线程状态备节点复制线程包括:
    • IO线程:1表示状态正常,0表示线程丢失。
    • SQL线程:1表示状态正常,0表示线程丢失。
    备节点复制延迟备节点的复制延迟,单位:秒。

诊断视图使用指南

内存OOM诊断

内容OOM诊断
通过内存OOM诊断视图提供的监控指标,分析处理内存OOM(Out of Memory)问题。
  • Memory Usage
    • InnoDB Buffer Pool使用率不变,内存使用率长时间(例如超过7天)缓慢持续上涨时,可能是内存泄露导致。
    • 内存突然上涨,InnoDB Buffer Pool使用率不变时,可能是突增业务导致。
    • 内存和InnoDB Buffer Pool同步增长时,InnoDB Buffer Pool被逐步填充,属于正常情况。
  • Resident Memory:查看内存大小。
  • Open filesTemp File SizeTemp Disk TablesSort Rows:查看消耗内存的常见指标。
内存的增长和业务指标正相关,大部分情况下,导致内存突增的SQL还未运行完成就因OOM(Out of Memory)无法追溯,因此建议:
  • 检查业务日志,判断内存突增的原因。
  • 升级内存规格,并且开启SQL洞察和审计,在内存突增时查看SQL的执行时间来判断内存突增的原因。

只读实例延迟诊断

只读实例延迟诊断
通过只读实例延迟诊断视图提供的监控指标,分析处理只读实例延迟问题。
  • Active Session:查看是否有MDL锁阻塞的情况。

    通常大量数据的查询会让DDL无法获取MDL锁,此时DDL会阻塞其他会话,导致连接数堆积。

  • Resident Memory:查看内存大小。
  • DML Rows ProcessedPages RequestedDML/DDL OperationsTemp Disk Space Used:查看常见的业务指标。
  • Replication Delay:查看延迟指标。

空间满问题诊断

空间满问题诊断

通过空间满问题诊断视图提供的监控指标,分析处理空间占满问题。

查看实例占用存储空间的文件类型和变化趋势,常见占用存储的指标如下:
  • 数据文件(user_data_size):可以通过空间分析查看各数据库、表的空间占用情况,根据实际情况扩容或者删除不需要的数据。请参见数据文件导致实例空间满的解决办法处理数据文件。
  • 临时文件(temp_file_size):MySQL实例可能会由于查询语句的排序、分组、关联表产生的临时表文件,或者大事务提交前产生的binlog cache文件占用空间。请参见临时文件导致实例空间满的解决办法处理临时文件。
  • Binlog日志(binlog_size):MySQL实例可能会由于大事务快速生成Binlog文件占用空间。请参见MySQL Binlog文件导致实例空间满的解决办法处理Binlog日志。
    说明 如果业务侧订阅了数据库的Binlog,也可能导致Binlog未及时清理而占用空间。
  • Undo日志(undo_log_size):一般情况下,长时间执行的查询导致Undo日志无法被清理。请检查是否有长时间执行且未结束的查询语句。
    说明 MySQL 5.6及以前的版本,Undo日志没有独立的表空间。
  • 慢日志(slowlog_size):慢日志占用空间过高时,建议在业务低峰期使用truncate命令进行清理。
    说明 MySQL 5.7的20210630版本,MySQL 8.0的20210930版本开始支持truncate命令。
  • General日志(general_log_size):MySQL默认不开启general_log,如果您手动开启了general_log参数,会占用额外空间,建议在业务低峰期使用truncate命令进行清理。
    说明 MySQ 5.7的20210630版本,MySQL 8.0的20210930版本开始支持truncate命令。

CPU抖动诊断

CPU抖动诊断
通过CPU抖动诊断视图提供的监控指标,分析处理CPU抖动问题,与CPU使用率强关联的指标有两类:
  • 业务指标:
    • Page Request:通常情况下,Buffer Pool请求数的趋势和CPU使用率同频波动。
    • Rows Processed:查看CPU使用率和系统处理行数的关系,判断CPU使用率变化时是否存在突增的行数。
    • Queries:查看CPU使用率变化时,主要执行的SQL语句类型。
  • 连接数:

    Thread Running:高并发会导致CPU使用率变高;MDL堆积或者行锁会导致连接数堆积,进而影响CPU使用率。

CPU抖动的常见原因:
  • 业务指标(Page Request/Rows Processed)发生变化,导致CPU使用率同步变化,此时可以选中CPU使用率变化的时间段,执行诊断获取详细的根因分析结果。
  • 活跃连接数增加引起CPU消耗,此时请从业务侧进行排查。

大事务识别诊断

大事务识别诊断
通过大事务识别诊断视图提供的监控指标,分析处理大事务问题。
  • Threads ConnectedTemp File SizeBinlog空间:查看判断是否为大事务的三个核心指标。当出现如下情况时,可判断为数据库存在大事务:
    • 活跃会话堆积。
    • 临时空间先增加然后减少。
    • 临时空间减少后Binlog空间同步增加。
  • Rows ProcessedLogical Page WriteQueries per Second:判断大事务是什么类型。

    例如查询很少,但删除的行数很多时,表明存在删除数据的大事务。

大事务会引起Binlog写入阻塞:
  • 当实例有大事务时,临时表空间(binlog cache)先逐步增加,然后保持平稳。
  • 当临时表空间平稳时,Binlog空间增加;由于Binlog写入是全局串行,其他事务会被阻塞,导致连接数开始堆积。
  • 当实例为高可用版时,主实例和备实例的HA组件探测语句也被阻塞,实例会直接发生主备切换。

建议您将大事务拆分为小事务分别执行。例如在delete语句中增加where条件子句,限制每次删除的数据量,将一次删除操作拆分为多次数据量较小的删除操作进行。