

# RDS for MySQL のグローバルステータス履歴の管理
<a name="Appendix.MySQL.CommonDBATasks.GoSH"></a>

**ヒント**  
データベースのパフォーマンスを分析するには、Amazon RDS のPerformance Insights を使用することもできます。詳細については、「[Amazon RDS での Performance Insights を使用したDB 負荷のモニタリング](USER_PerfInsights.md)」を参照してください。

MySQL はオペレーションに関する情報を提供する多くのステータス可変を維持しています。その値は、DB インスタンスのロックまたはメモリ問題の検出に役立ちます。これらのステータス可変の値は、最後に DB インスタンスがスタートされてからの累積です。ほとんどのステータス可変は、`FLUSH STATUS` コマンドを使用して 0 にリセットできます。

これらの値を経時的にモニタリングできるように、Amazon RDS は、これらのステータス可変値のスナップショットを作成し、前回のスナップショット以降に行われた変更と共にテーブルに書き込む一連の手順を提供します。このインフラストラクチャは Global Status History (GoSH) と呼ばれ、5.5.23 で始まるバージョンのすべての MySQL DB インスタンスにインストールされています。GoSH は、デフォルトでは無効化されています。

GoSH を有効にするには、初期にパラメータ `event_scheduler` を `ON` に設定し、DB パラメータグループからイベントスケジューラーを有効にします。MySQL 5.7 を実行している MySQL DB インスタンスの場合、パラメータ `show_compatibility_56` を `1` にサーバーしてください。DB パラメータグループの作成と変更の詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。このパラメータを有効にした場合の副作用の詳細については、「*MySQL 5.7 リファレンスマニュアル*」の「[show\$1patibility\$156](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56)」を参照してください。

次に、以下の表の手順を使用して、GoSH を有効化し、設定します。まず MySQL DB インスタンスに接続し、次に以下に示す適切なコマンドを発行します。詳細については、「[MySQL DB インスタンスへの接続](USER_ConnectToInstance.md)」を参照してください。プロシージャごとに、次のコマンドを実行し、**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 の実行中は、書き込んでいるテーブルに対してクエリを実行できます。例えば、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'
```