

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

# データベースログ
<a name="database-logs"></a>

MySQL および MariaDB データベースでは、監査やトラブルシューティングのためにアクセスできるログが生成されます。これらのログを次にしめします。
+ [監査](https://mariadb.com/kb/en/mariadb-audit-plugin-log-format/) – 監査証跡は、サーバーのアクティビティが記録されている一連のレコードです。これには、クライアントセッションごとに、サーバーに接続したユーザー (ユーザー名とホスト)、実行したクエリ、アクセスしたテーブル、変更したサーバー変数が記録されます。
+ [エラー](https://dev.mysql.com/doc/refman/8.0/en/error-log.html) – このログには、サーバー (`mysqld`) の起動およびシャットダウン時刻に加え、サーバーの起動、シャットダウン、稼働時に発生したエラー、警告、通知といった診断メッセージが記録されます。
+ [全般](https://dev.mysql.com/doc/refman/8.0/en/query-log.html) – このログには、`mysqld` のアクティビティ (各クライアントの接続および切断アクティビティ、クライアントから受信した SQL クエリなど) が記録されます。全般のクエリログは、エラーが疑われる場合や、クライアントが `mysqld` に送信した内容を正確に把握する場合に非常に有用です。
+ [スロークエリ](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html) – このログには、実行に長い時間がかかった SQL クエリが記録されます。

ベストプラクティスを実行するには、[Amazon RDS から Amazon CloudWatch Logs にデータベースログを発行](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html)する必要があります。CloudWatch Logs を使用すると、ログデータのリアルタイム分析、耐久性に優れたストレージへのデータ保存、CloudWatch Logs エージェントによるデータ管理を行えます。[データベースログは、Amazon RDS コンソールからアクセスして監視](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.Watching.html)できます。CloudWatch Logs Insights を使用すると、CloudWatch Logs 内のログデータをインタラクティブに検索し、分析することも可能です。次の例は、監査ログのクエリを示しています。このクエリにより、ログに `CONNECT` イベントが出力されている回数、接続者、接続元クライアント (IP アドレス) を確認します。監査ログからの抜粋を次に示します。

```
20221201 14:07:05,ip-10-22-1-51,rdsadmin,localhost,821,0,CONNECT,,,0,SOCKET
20221201 14:07:05,ip-10-22-1-51,rdsadmin,localhost,821,0,DISCONNECT,,,0,SOCKET
20221201 14:12:20,ip-10-22-1-51,rdsadmin,localhost,822,0,CONNECT,,,0,SOCKET
20221201 14:12:20,ip-10-22-1-51,rdsadmin,localhost,822,0,DISCONNECT,,,0,SOCKET
20221201 14:17:35,ip-10-22-1-51,rdsadmin,localhost,823,0,CONNECT,,,0,SOCKET
20221201 14:17:35,ip-10-22-1-51,rdsadmin,localhost,823,0,DISCONNECT,,,0,SOCKET
20221201 14:22:50,ip-10-22-1-51,rdsadmin,localhost,824,0,CONNECT,,,0,SOCKET
20221201 14:22:50,ip-10-22-1-51,rdsadmin,localhost,824,0,DISCONNECT,,,0,SOCKET
```

Log Insights クエリの例は、`rdsadmin` が `localhost` から 5 分おきにデータベースに接続していることを示しており、次の図を見ると、それが合計 22 回発生していることがわかります。これらの結果によると、このアクティビティは、モニタリングシステムといった内部の Amazon RDS プロセス自体によって生じています。

![\[Log Insights によるレポート\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/log-insights.png)


ログイベントには、MySQL および MariaDB DB インスタンス関連オペレーションで生じる警告やエラーといった、カウント対象となる重要なメッセージが頻繁に出力されます。例えば、操作が失敗した場合、次のエラーが発生し、エラーログファイルに記録される場合があります: `ERROR 1114 (HY000): The table zip_codes is full`。エラー傾向を把握するために、これらのログのモニタリングをお勧めします。[Amazon RDS ログからカスタム CloudWatch メトリクスを作成するには、フィルターを使用して](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html) Amazon RDS データベースログの自動モニタリングを有効にします。次に、特定のログで特定のパターンをモニタリングし、想定動作に違反する挙動があった場合にアラームを生成するよう設定します。[例えば](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CountOccurrencesExample.html)、ロググループ `/aws/rds/instance/database-1/error` にメトリクスフィルターを作成し、これによって、エラーログをモニタリングし、`ERROR` のような[特定のパターン](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)を検索します。**フィルターパターン**を `ERROR` に、**メトリクス値**を `1` に設定します。このフィルターによって、キーワード `ERROR` が含まれるログレコードをすべて検出し「ERROR」のあるログイベントごとにカウントを 1 増やします。フィルターを作成したら、MySQL または MariaDB エラーログでエラーが検出された際にその旨を通知させるアラームを設定できます。

CloudWatch ダッシュボードの作成と CloudWatch Logs Insights の使用によるスロークエリログおよびエラーログモニタリングの詳細については、ブログ記事「[Creating an Amazon CloudWatch dashboard to monitor Amazon RDS and Amazon Aurora MySQL](https://aws.amazon.com/blogs/database/creating-an-amazon-cloudwatch-dashboard-to-monitor-amazon-rds-and-amazon-aurora-mysql/)」を参照してください。