テーブルへの MySQL ログ出力の送信
DB パラメータグループを作成し、log_output
サーバーパラメータを TABLE
に設定することで、DB インスタンス上のテーブルに一般ログとスロークエリログを書き込むことができます。その後、一般クエリは mysql.general_log
テーブルに記録され、スロークエリは mysql.slow_log
テーブルに記録されます。それらのテーブルに対してクエリを実行することでログの情報にアクセスできます。このログ記録を有効にすると、データベースに書き込まれるデータの量が増え、パフォーマンスが低下することがあります。
一般ログもスロークエリログもデフォルトで無効になっています。テーブルへのログ記録を有効にするには、general_log
と slow_query_log
のサーバーパラメータを 1
に設定する必要があります。
ログテーブルは、それぞれのログ記録アクティビティのパラメータを 0
にリセットしてログ記録をオフにするまで、拡大し続けます。大量のデータが長期にわたって蓄積されることがよくあり、割り当てストレージ領域の大部分を使い果たすことがあります。Amazon RDS では、ログテーブルを切り詰めることはできませんが、その内容を移動することはできます。テーブルのローテーションにより、その内容がバックアップテーブルに保存され、新しい空のログテーブルが作成されます。以下のコマンドラインプロシージャを使用して、ログテーブルを手動でローテーションされることができます。ここで表示されている PROMPT>
はコマンドプロンプトです。
PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_rotate_general_log;
以前のデータを完全に削除し、ディスク領域を再利用するには、該当するプロシージャを 2 回連続で呼び出します。