管理 RDS for MySQL 的全局状态历史记录 - Amazon Relational Database Service

管理 RDS for MySQL 的全局状态历史记录

提示

要分析数据库性能,您还可以在 Amazon RDS 上使用性能详情。有关更多信息,请参阅 在 Amazon RDS 上使用性能详情监控数据库负载

MySQL 保存了很多状态变量,用于提供与操作相关的信息。状态变量值可以帮助您检测数据库实例上的锁定或内存问题。这些状态变量的值会从上次启动数据库实例时开始累积。可以使用 FLUSH STATUS 命令将大多数状态变量重置为 0。

Amazon RDS 提供了一套程序,这些程序会随着时间为这些状态变量的值创建快照,并将它们及上次创建快照后所做的任何更改写入一个表中,从而可以随时间监控这些值。此基础设施名为 Global Status History (GoSH),安装在从版本 5.5.23 开始的所有 MySQL 数据库实例上。默认情况下 GoSH 处于禁用状态。

要启用 GoSH,请首先在数据库参数组中通过将参数 event_scheduler 设置为 ON,启用事件调度器。对于运行 MySQL 5.7 的 MySQL 数据库实例,还要将参数 show_compatibility_56 设置为 1。有关创建和修改数据库参数组的信息,请参阅 Amazon RDS 的参数组。有关启用此参数的副作用的信息,请参阅《MySQL 5.7 参考手册》中的 show_compatibility_56

然后可以使用下表中的程序启用和配置 GoSH。首先连接到 MySQL 数据库实例,然后发出正确的命令,如下所示。有关更多信息,请参阅 连接到运行 MySQL 数据库引擎的数据库实例。对于每个过程,运行以下命令并替换 procedure-name

CALL procedure-name;

下表列出了可用于上一个命令中 procedure-name 的所有过程。

程序 描述

mysql.rds_enable_gsh_collector

启用 GoSH,按照 rds_set_gsh_collector 指定的间隔创建默认快照。

mysql.rds_set_gsh_collector

指定快照之间的间隔,以分钟为单位。默认值是 5。

mysql.rds_disable_gsh_collector

禁用快照。

mysql.rds_collect_global_status_history

根据需求创建快照。

mysql.rds_enable_gsh_rotation

按照 mysql.rds_global_status_history 指定的间隔,使 mysql.rds_global_status_history_old 表的内容可交替到 rds_set_gsh_rotation

mysql.rds_set_gsh_rotation

指定表交替之间的间隔,以天为单位。默认值是 7。

mysql.rds_disable_gsh_rotation

禁用表交替。

mysql.rds_rotate_global_status_history

根据需求将 mysql.rds_global_status_history 表的内容交替到 mysql.rds_global_status_history_old

GoSH 运行时,您可以查询 GoSH 要写入的表。例如,要查询 Innodb 缓冲池的命中率,您可以发送以下查询请求:

select a.collection_end, a.collection_start, (( a.variable_Delta-b.variable_delta)/a.variable_delta)*100 as "HitRatio" from mysql.rds_global_status_history as a join mysql.rds_global_status_history as b on a.collection_end = b.collection_end where a. variable_name = 'Innodb_buffer_pool_read_requests' and b.variable_name = 'Innodb_buffer_pool_reads'