

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lightsail で一般クエリログとスロークエリログを使用して MySQL クエリのパフォーマンスを監視します。
<a name="amazon-lightsail-enabling-mysql-general-and-slow-query-logs"></a>

Amazon Lightsail の MySQL データベースの[一般ログとスロークエリログ](amazon-lightsail-viewing-database-logs-and-history.md)は、デフォルトで無効になっています。これらのログを有効にして、データの収集を開始するには、いくつかのデータベースパラメータを更新します。Lightsail API、 AWS Command Line Interface (AWS CLI)、または SDKs を使用してデータベースパラメータを更新します。このガイドでは、 を使用してデータベースパラメータ AWS CLI を更新し、一般的なクエリログとスロークエリログを有効にする方法について説明します。また、一般ログとスロークエリログを制御するいくつかの追加オプションと、ログデータの保持期間がどのように処理されるかについても説明します。

## 前提条件
<a name="prerequisite-to-enable-general-and-slow-query-logs"></a>

まだ AWS CLIをインストールして設定していない場合は、インストールして設定します。詳細については、「[ Amazon Lightsail で使用するために AWS Command Line Interface を設定する](lightsail-how-to-set-up-and-configure-aws-cli.md)」を参照してください。

## Lightsail コンソールで一般ログとスロークエリログを有効にする
<a name="enable-the-general-and-slow-query-logs"></a>

Lightsail コンソールで一般ログとスロークエリログを有効にするには、`general_log` および `slow_query_log` データベースパラメータの​値を `1` に、`log_output` パラメータの値を `FILE` に更新する必要があります。​

**Lightsail コンソールで一般ログとスロークエリログを有効にするには**

1. ターミナルまたはコマンドプロントウィンドウを開きます。

1. 次のコマンドを入力して、`general_log` パラメータの値を `1` に更新します。これは true または有効です。​

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=general_log,parameterValue=1,applyMethod=pending-reboot"
   ```

   コマンドを、以下のように置き換えます。
   + {{DatabaseName}} は、データベースの名前に置き換えます。
   + データベース AWS リージョン の を持つ{{リージョン}}。

1. 次のコマンドを入力して、`slow_query_log` パラメータの値を `1` に更新します。これは true または有効です。​

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=slow_query_log,parameterValue=1,applyMethod=pending-reboot"
   ```

   コマンドを、以下のように置き換えます。
   + {{DatabaseName}} は、データベースの名前に置き換えます。
   + データベース AWS リージョン の を持つ{{リージョン}}。

1. 次のコマンドを入力して `log_output` パラメータの値を `FILE` に更新します。これによりログデータがシステムファイルに書き込まれ、Lightsail コンソールに表示されるようになります。

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=log_output,parameterValue=FILE,applyMethod=pending-reboot"
   ```

   コマンドを、以下のように置き換えます。
   + {{DatabaseName}} は、データベースの名前に置き換えます。
   + データベース AWS リージョン の を持つ{{リージョン}}。

1. 次のコマンドを入力してデータベースを再起動し、変更を反映させます。

   ```
   aws lightsail reboot-relational-database --region {{Region}} --relational-database-name {{DatabaseName}}
   ```

   コマンドを、以下のように置き換えます。
   + {{DatabaseName}} は、データベースの名前に置き換えます。
   + データベース AWS リージョン の を持つ{{リージョン}}。

   この時点で、データベースは再起動中使用できなくなります。数分間待ってから [Lightsail コンソール](https://lightsail.aws.amazon.com/)にサインインして、データベースの一般ログとスロークエリログを表示します。詳細については、「[Amazon Lightsail でデータベースのログと履歴を表示する](amazon-lightsail-viewing-database-logs-and-history.md)」を参照してください。
**注記**  
データベースパラメータの更新の詳細については、「[Amazon Lightsail でデータベースのパラメータを更新する](amazon-lightsail-updating-database-parameters.md)」を参照してください。

## データベースログのその他のオプションの制御
<a name="control-additional-database-log-options"></a>

MySQL の一般ログとスロークエリログのその他のオプションを制御するには、次のパラメータを更新します。
+ `log_output` — このパラメータは `TABLE` に設定します。一般クエリが `mysql.general_log` テーブルに書き込まれ、スロークエリは `mysql.slow_log` テーブルに書き込まれます。`log_output` パラメータを `NONE` に設定して、ログ記録を無効にすることもできます。
**注記**  
`log_output` パラメータを `TABLE` に設定すると、一般ログとスロークエリログの Lightsail コンソールでの表示が無効になります。​ ログデータを表示するには、代わりにデータベースの `mysql.general_log` および `mysql.slow_log` テーブルを​参照する必要があります。
+ `long_query_time` — ファストクエリがスロークエリログに記録されないようにするために、ログに記録されるクエリの最短実行時間の値を秒単位で指定します。デフォルトは 10 秒であり、最小値は 0 です。`log_output` パラメータが `FILE` に設定されている場合は、マイクロ秒の精度になるように、浮動小数点値を指定できます。`log_output` パラメータが `TABLE` に設定されている場合は、秒の精度になるように、整数値を指定する必要があります。実行時間が `long_query_time` パラメータの値を超えたクエリのみがログに記録されます。例えば、`long_query_time` を 0.1 に設定すると、実行時間が 100 ミリ秒未満のすべてのクエリはログに記録されなくなります。
+ `log_queries_not_using_indexes` — インデックスを使用しないすべてのクエリをスロークエリログに記録するには、1 に設定します。デフォルトは 0 です。インデックスを使用しないクエリは、その実行時間が `long_query_time` パラメーターの値未満であってもログに記録されます。

## ログデータの保持
<a name="log-data-retention"></a>

ログ記録が有効になっている場合、テーブルログのローテーションまたはログファイルの削除が定期的に実行されます。これは、ログファイルが大きくなることでデータベースが使用できなくなったりパフォーマンスに影響する可能性を低く抑えるための予防措置です。`log_output` パラメータが `FILE` または `TABLE` に設定されている場合、ログ記録は次のように処理されます。​
+ `FILE` ログ記録が有効になっている場合、ログファイルの検査が 1 時間ごとに実行され、作成後 24 時間を超えた古いログファイルは削除されます。場合によっては、削除後の残りのログファイルの合計サイズが、データベースに割り当てられた領域のしきい値である 2% を超えることがあります。この場合、ログファイルのサイズがしきい値以下になるまで、最も大きいログファイルから順に削除されます。
+ `TABLE` ログ記録を有効化すると、24 時間ごとにログテーブルのローテーションが実行される場合があります。

  このログテーブルのローテーションは、テーブルログに使用されている領域が、割り当てられたストレージ領域の 20 % を超えるか、すべてのログの合計サイズが 10 GB を超えると、実行されます。

  データベースに使用されている領域が、データベースに割り当てられたストレージ領域の 90% を超えている場合は、ログのローテーションを実行するためのしきい値が小さくなります。

  テーブルログに使用されている領域が、割り当てられたストレージ領域の 10% を超えるか、すべてのログの合計サイズが 5 GB を超えると、ログテーブルのローテーションが実行されます。

  `low_free_storage` にサブスクライブして、ログテーブルのローテーションが実行されて領域が解放されたときに通知を受け取ることができます。
  + ログテーブルのローテーションが実行されると、現在のログテーブルがバックアップのログテーブルにコピーされ、現在のログテーブル内にあるエントリは削除されます。バックアップのログテーブルが既に存在する場合は、現在のログテーブルをバックアップにコピーする前に、削除されます。バックアップのログテーブルは、照会することができます。`mysql.general_log` テーブルに対するバックアップのログテーブルは、`mysql.general_log_backup` という名前になります。`mysql.slow_log` テーブルに対するバックアップのログテーブルは、`mysql.slow_log_backup` という名前になります。
  + `mysql.general_log` テーブルのローテーションは、`mysql.rds_rotate_general_logprocedure` を呼び出すことで実行できます。`mysql.slow_log` テーブルのローテーションは、`mysql.rds_rotate_slow_logprocedure` を呼び出すことで実行できます。
  + データベースバージョンのアップグレード時にも、テーブルログのローテーションが実行されます。