Lightsail MySQL データベースの一般ログとスロークエリログを有効にする - Amazon Lightsail

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

Lightsail MySQL データベースの一般ログとスロークエリログを有効にする

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

前提条件

まだ AWS CLI をインストールして設定していない場合は、インストールして設定します。詳細については、「Amazon Lightsail と連携AWS Command Line Interfaceするように を設定する」を参照してください。

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

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

Lightsail コンソールで一般ログとスロークエリログを有効にするには
  1. ターミナルまたはコマンドプロントウィンドウを開きます。

  2. 次のコマンドを入力して、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 をデータベースの名前に置き換えます。

    • Region は、データベースの AWS リージョン に置き換えます。

  3. 次のコマンドを入力して、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 をデータベースの名前に置き換えます。

    • Region は、データベースの AWS リージョン に置き換えます。

  4. 次のコマンドを入力して、 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 をデータベースの名前に置き換えます。

    • Region は、データベースの AWS リージョン に置き換えます。

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

    aws lightsail reboot-relational-database --region Region --relational-database-name DatabaseName

    コマンドを、以下のように置き換えます。

    • DatabaseName をデータベースの名前に置き換えます。

    • Region は、データベースの AWS リージョン に置き換えます。

    この時点で、データベースは再起動中使用できなくなります。数分待ってから Lightsail コンソールにサインインして、データベースの一般ログとスロークエリログを表示します。詳細については、「Amazon Lightsail でのデータベースログと履歴の表示」を参照してください。

    注記

    データベースパラメータの更新の詳細については、「Amazon Lightsail でのデータベースパラメータの更新」を参照してください。

データベースログのその他のオプションの制御

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 パラメーターの値未満であってもログに記録されます。

ログデータの保持

ログ記録が有効になっている場合、テーブルログのローテーションまたはログファイルの削除が定期的に実行されます。これは、ログファイルが大きくなることでデータベースが使用できなくなったりパフォーマンスに影響する可能性を低く抑えるための予防措置です。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 を呼び出すことで実行できます。

    • データベースバージョンのアップグレード時にも、テーブルログのローテーションが実行されます。