我有一个运行 MySQL 的 Amazon Relational Database Service(Amazon RDS)实例。我想在 RDS 数据库实例上启用和配置全局状态历史记录(GoSH)。我该如何操作?
简短描述
您可以通过 GoSH 在 Amazon RDS for MySQL 中维护不同状态变量的历史记录。首先,必须先启用事件调度器,然后才能使用 GoSH。然后可以修改 GoSH 以按特定间隔运行并定期轮换表。默认情况下,GoSH 信息每五分钟收集一次,存储在 mysql.rds_global_status_history 表中,此表每七天轮换一次。
解决方法
1. 修改附加到实例的自定义 DB 参数组,从而使 event_scheduler 设置为 ON。
2. 登录到数据库实例,然后运行此命令:
SHOW PROCESSLIST;
SHOW GLOBAL VARIABLES LIKE 'event_scheduler';
3. 运行以下命令以启用 GoSH:
CALL mysql.rds_enable_gsh_collector;
4. 要将监控间隔修改为 1 分钟,请运行以下命令:
CALL mysql.rds_set_gsh_collector(1);
5. 运行以下命令以启用 GoSH 表轮换功能:
CALL mysql.rds_enable_gsh_rotation;
6. 运行以下命令修改轮换设置:
CALL mysql.rds_set_gsh_rotation(5);
查询 GoSH 表,以获取有关特定操作的信息。例如,以下查询可提供有关每分钟对实例执行的数据操作语言(DML)操作数量的详细信息。
SELECT collection_start, collection_end, sum(value) AS 'DML Queries Count' from (select collection_start, collection_end, "INSERTS" as "Operation", variable_Delta as "value" from mysql.rds_global_status_history where variable_name = 'com_insert' union select collection_start, collection_end, "UPDATES" as "Operation", variable_Delta as "value" from mysql.rds_global_status_history where variable_name = 'com_update' union select collection_start, collection_end, "DELETES" as "Operation", variable_Delta as "value" from mysql.rds_global_status_history where variable_name = 'com_delete') a group by 1,2;
注意:此查询不适用于 MySQL 8.0。
相关信息
MySQL 数据库实例的常见 DBA 任务
管理全局状态历史记录