MySQL を実行している Amazon Relational Database Service (Amazon RDS) インスタンスがあります。RDS DB インスタンスでグローバルステータス履歴 (GoSH) をオンにして設定したいと考えています。どうすればよいですか?
簡単な説明
GoSH を使用して、Amazon RDS for MySQL でさまざまなステータス変数の履歴を管理できます。まず、GoSH を使用する前にイベントスケジューラをオンにする必要があります。次に、GoSH を特定の間隔で実行し、定期的にテーブルをローテーションするように変更できます。デフォルトでは、GoSH 情報は 5 分ごとに収集され、mysql.rds_global_status_history テーブルに保存され、テーブルは 7 日ごとにローテーションされます。
解決策
1. インスタンスにアタッチされているカスタム DB パラメータグループ を変更して、event_scheduler を ONに設定します。
2. DB インスタンスにログインし、次のコマンドを実行します。
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 テーブルにクエリを実行して、特定の操作に関する情報を取得します。たとえば、次のクエリでは、インスタンス上で1 分ごとに実行されるデータ操作言語 (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 DB インスタンスの一般的な DBA タスク
グローバルステータス履歴の管理