すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for MySQL の一般クエリログに関するよくある質問

最終更新日:Nov 09, 2025

一般クエリログが有効になっている場合、各 SQL 文の実行詳細を含むすべてのユーザー操作が記録されます。インスタンスが高いトラフィックを処理する場合や、一般クエリログファイルを長期間クリーンアップしない場合、ファイルは大量のストレージ容量を消費し、ストレージが枯渇する可能性があります。このトピックでは、一般クエリログに関連する一般的な問題とソリューションについて説明します。

背景情報

ApsaraDB RDS for MySQL は、以下の理由により、デフォルトで一般クエリログを TABLE フォーマットで保存します:

  1. ApsaraDB RDS for MySQL インスタンスのファイルに直接アクセスできないため、FILE フォーマットで保存されたログをクエリしたり直接ダウンロードしたりすることはできません

  2. `log_output` パラメーターは、一般クエリログとスロークエリログの両方に影響します。ApsaraDB RDS for MySQL は、ローテーションメカニズムを使用してスロークエリログを収集します。これには、TABLE フォーマットで保存する必要があります。したがって、一般クエリログも TABLE フォーマットで保存する必要があります。

一般クエリログが大量のストレージ容量を占有する

問題の説明

ApsaraDB RDS for MySQL インスタンスのストレージ容量がいっぱいです。インスタンスのストレージ使用状況を表示できます。`general_log_size` が大きすぎる場合、問題は一般クエリログファイルが大きすぎることが原因です。

原因

ApsaraDB RDS for MySQL インスタンスで一般クエリログが有効になっている場合、ログファイルにはすべてのユーザー操作が記録されます。これには、クエリ、挿入、更新、削除など、すべての SQL 文の詳細が含まれます。インスタンスが高いトラフィックを処理する場合や、一般クエリログファイルが長期間クリーンアップされない場合、ファイルは継続的に増大します。迅速に処理されない場合、ファイルは最終的にインスタンスのストレージ容量を使い果たします。

general クエリログがパフォーマンスの問題を引き起こす

問題の説明

接続数と CPU 使用率が増加します。SHOW PROCESSLIST を実行するか、`innodb_trx` テーブルをクエリすると、多くの接続が `Waiting for table level lock` 状態にあることがわかります。

原因

ApsaraDB RDS for MySQL は、一般クエリログのデフォルトのストレージとして TABLE フォーマットを使用します。スレッドは一般クエリログにシリアルに書き込みます。ログへの書き込みには、メタデータロック (MDL) とテーブルレベルのロックが必要です。このテーブルレベルのロックにより、接続が `Waiting for table level lock` 状態になります。

general クエリログが RTO の延長を引き起こす

問題の説明

インスタンスのクラッシュからの回復時間が増加し、目標復旧時間 (RTO) が長くなります。この期間中、インスタンスは利用できません。

原因

インスタンスが予期せずシャットダウンした場合、一般クエリログのクラッシュマークが true に設定されます。これにより、インスタンスの再起動時に自動回復プロセスがトリガーされます。テーブルが大きい場合、回復には時間がかかります。このプロセス中、インスタンスは利用できません。

解決策

一般クエリログファイルをクリーンアップする

  1. `general_log` パラメーターを OFF に設定して、一般クエリログを無効にします。これにより、新しいログが生成されなくなります。詳細については、「インスタンスパラメーターの設定」をご参照ください。

  2. 特権アカウントを使用してApsaraDB RDS for MySQL インスタンスに接続します。次に、次の文を実行して一般クエリログファイルをクリーンアップします。しばらくすると、インスタンスのモニタリングページで一般クエリログのストレージ使用状況を確認できます。

    説明

    ApsaraDB RDS for MySQL 5.6 インスタンスでは、`TRUNCATE` コマンドを実行して一般クエリログファイルをクリーンアップすることはできません。ファイルをクリーンアップするには、弊社までご連絡いただく必要があります。

    TRUNCATE TABLE mysql.general_log;

通常のデータベース使用中は一般クエリログを無効にしてください。デバッグや問題の追跡のために一時的にのみ有効にしてください。終了後は、速やかにログをクリーンアップして無効にしてください。これにより、高いトラフィックや長期間ログをクリーンアップしないことによるログファイルの蓄積やストレージの枯渇を防ぎます。SQL 文の実行詳細を表示および分析するには、次の 2 つのメソッドのいずれかを選択できます:

  • (推奨) SQL エクスプローラーと監査を有効にします。システムは実行された SQL 文を自動的に記録および分析します。結果として得られるインサイトと監査データは、Database Autonomy Service (DAS) に保存されます。このメソッドは、RDS インスタンスのストレージ容量を使用せず、そのパフォーマンスにも影響しません。

  • 一般クエリログを一時的に有効にする。デバッグや問題の追跡のために、一般クエリログを一時的に有効にすることができます。次のコマンドを使用して SQL 文の実行をクエリします。デバッグが終了したら、一般クエリログファイルを無効にしてクリーンアップします。

    SELECT * FROM mysql.general_log;

その後のメンテナンス

インスタンスのストレージ容量を手動で拡張するか、自動ストレージ拡張機能を有効にすることができます。自動ストレージ拡張を有効にすると、ストレージ使用量が指定されたしきい値に達したときに、システムが自動的にストレージ容量を拡張します。