

# Amazon RDS ログファイルのモニタリング
<a name="USER_LogAccess"></a>

すべての RDS データベースエンジンは、監査やトラブルシューティング時にアクセスするログを生成します。ログの種類は、データベースエンジンによって異なります。

AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、または Amazon RDS API を使用して、DB インスタンスのデータベースログにアクセスできます。トランザクションログを表示、監視、またはダウンロードすることはできません。

**Topics**
+ [データベースログファイルの表示とリスト化](USER_LogAccess.Procedural.Viewing.md)
+ [データベースログファイルのダウンロード](USER_LogAccess.Procedural.Downloading.md)
+ [データベースログファイルのモニタリング](USER_LogAccess.Procedural.Watching.md)
+ [Amazon CloudWatch Logs へのデータベースログの発行](USER_LogAccess.Procedural.UploadtoCloudWatch.md)
+ [REST を用いたログファイルの内容の読み取り](DownloadCompleteDBLogFile.md)
+ [Amazon RDS for Db2 データベースのログファイル](USER_LogAccess.Concepts.Db2.md)
+ [MariaDB データベースのログファイル](USER_LogAccess.Concepts.MariaDB.md)
+ [Amazon RDS for Microsoft SQL Server データベースのログファイル](USER_LogAccess.Concepts.SQLServer.md)
+ [MySQL データベースのログファイル](USER_LogAccess.Concepts.MySQL.md)
+ [Amazon RDS for Oracle データベースのログファイル](USER_LogAccess.Concepts.Oracle.md)
+ [RDS for PostgreSQL データベースログファイル](USER_LogAccess.Concepts.PostgreSQL.md)

# データベースログファイルの表示とリスト化
<a name="USER_LogAccess.Procedural.Viewing"></a>

AWS マネジメントコンソール を使用して、Amazon RDS DB エンジンのデータベースログファイルを表示できます。AWS CLI または Amazon RDS API を使用して、ダウンロードまたはモニタリングできるログファイルを一覧表示できます。

**注記**  
既存の RDS for Oracle DB インスタンスのログファイルのリストを表示できない場合は、インスタンスを再起動してリストを表示します。

## コンソール
<a name="USER_LogAccess.CON"></a>

**データベースログファイルを閲覧するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 表示するログファイルのある DB インスタンスの名前を選択します。

1. [**ログとイベント**] タブを選択します。

1. [**ログ**] セクションまで下にスクロールします。

1. (オプション) 検索語を入力して、結果をフィルタリングします。

1. 表示するログを選択してから、**[View]** (表示) を選択します。

## AWS CLI
<a name="USER_LogAccess.CLI"></a>

DB インスタンスで使用できるデータベースログファイルを一覧表示するには、AWS CLI の [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-log-files.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-log-files.html) コマンドを使用します。

次の例では、DB インスタンス (`my-db-instance`) のログファイルのリストが返ります。

**Example**  

```
1. aws rds describe-db-log-files --db-instance-identifier my-db-instance
```

## RDS API
<a name="USER_LogAccess.API"></a>

DB インスタンスの使用可能なデータベースログファイルを一覧表示するには、Amazon RDS API の [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) アクションを使用します。

# データベースログファイルのダウンロード
<a name="USER_LogAccess.Procedural.Downloading"></a>

データベースログファイルをダウンロードするには、AWS マネジメントコンソール、AWS CLI、または API を使用します。

## コンソール
<a name="USER_LogAccess.Procedural.Downloading.CON"></a>

**データベースログファイルをダウンロードするには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 表示するログファイルのある DB インスタンスの名前を選択します。

1. [**ログとイベント**] タブを選択します。

1. [**ログ**] セクションまで下にスクロールします。

1. [**ログ**] セクションで、ダウンロードするログの横にあるボタンを選択し、[**ダウンロード**] を選択します。

1. 表示されたリンクのコンテキスト (右クリック) メニューを開き、[**名前を付けて保存**] を選択します。ログファイルを保存する場所を入力し、[**保存**] を選択します。  
![\[ログファイルを閲覧する\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/log_download2.png)

## AWS CLI
<a name="USER_LogAccess.Procedural.Downloading.CLI"></a>

データベースログファイルをダウンロードするには、AWS CLI の [https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html) コマンドを使用します。デフォルトでは、このコマンドによってログファイルの最新部分のみがダウンロードされます。ただし、`--starting-token 0` パラメータを指定して、ファイル全体をダウンロードすることもできます。

以下の例では、ログファイル (*log/ERROR.4*) のすべての内容をダウンロードし、ローカルファイル (*errorlog.txt*) に格納する方法について説明します。

**Example**  
Linux、macOS、Unix の場合:  

```
1. aws rds download-db-log-file-portion \
2.     --db-instance-identifier myexampledb \
3.     --starting-token 0 --output text \
4.     --log-file-name log/ERROR.4 > errorlog.txt
```
Windows の場合:  

```
1. aws rds download-db-log-file-portion ^
2.     --db-instance-identifier myexampledb ^
3.     --starting-token 0 --output text ^
4.     --log-file-name log/ERROR.4 > errorlog.txt
```

## RDS API
<a name="USER_LogAccess.Procedural.Downloading.API"></a>

データベースログファイルをダウンロードするには、Amazon RDS API の [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html) アクションを使用します。

# データベースログファイルのモニタリング
<a name="USER_LogAccess.Procedural.Watching"></a>

データベースログファイルを監視することは、UNIX または Linux システムでファイルをテーリングすることと同じです。AWS マネジメントコンソール を使用すると、ログファイルを監視できます。RDS は 5 秒ごとにログの末尾を更新します。

**データベースログファイルをモニタリングするには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 表示するログファイルのある DB インスタンスの名前を選択します。

1. [**ログとイベント**] タブを選択します。  
![\[[Logs & events] (ログとイベント) タブを選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Monitoring_logsEvents.png)

1. [**ログ**] セクションでログファイルを選択し、[**モニタリング**] を選択します。  
![\[[Logs] (ログ) を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch.png)

   RDS には、次の MySQL の例のようにログの末尾が表示されます。  
![\[ログファイルの末尾\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch_content.png)

# Amazon CloudWatch Logs へのデータベースログの発行
<a name="USER_LogAccess.Procedural.UploadtoCloudWatch"></a>

オンプレミスデータベースでは、データベースログはファイルシステムに存在します。Amazon RDS では、DB インスタンスのファイルシステム上のデータベースログへのホストアクセスが許可されません。このため、Amazon RDS では、[Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) にデータベースログをエクスポートできます。CloudWatch Logs を使用すると、ログデータのリアルタイム分析を実行できます。高い耐久性を持つストレージにデータを保存し、CloudWatch Logs エージェントを使用したデータの管理を実行できます。

**Topics**
+ [RDS と CloudWatch Logs の統合の概要](#rds-integration-cw-logs)
+ [CloudWatch Logs に発行するログの決定](#engine-specific-logs)
+ [CloudWatch Logs に発行するログの指定](#integrating_cloudwatchlogs.configure)
+ [CloudWatch Logs でのログの検索とフィルタリング](#accessing-logs-in-cloudwatch)

## RDS と CloudWatch Logs の統合の概要
<a name="rds-integration-cw-logs"></a>

CloudWatch Logs では、*ログストリーミング*は、同じ出典を共有する一連のログイベントです。CloudWatch Logs でのログの各ソースで各ログストリームが構成されます。*ロググループ*は、保持、モニタリング、アクセス制御について同じ設定を共有するログストリームのグループです。

Amazon RDS は、DB インスタンスログレコードをロググループに継続的にストリームします。例えば、発行した各タイプのログについて、ロググループ `/aws/rds/instance/instance_name/log_type` があることを考えます。このロググループは、ログを生成するデータベースインスタンスと同じ AWS リージョンにあります。

AWS は、CloudWatch Logs に発行されたログデータを、保持期間を指定しない限り、無期限に保持します。詳細については、「[CloudWatch Logs でのログデータ保管期間の変更](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)」を参照してください。

## CloudWatch Logs に発行するログの決定
<a name="engine-specific-logs"></a>

各 RDS データベースエンジンは、独自のログセットをサポートします。データベースエンジンのオプションについては、以下のトピックを確認してください。
+ [Amazon CloudWatch Logs への Db2 ログの発行](USER_LogAccess.Concepts.Db2.md#USER_LogAccess.Db2.PublishtoCloudWatchLogs)
+ [MariaDB ログを Amazon CloudWatch Logs に発行する](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [Amazon CloudWatch Logs への MySQL ログの発行](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [Amazon CloudWatch Logs への Oracle ログの発行](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [Amazon CloudWatch Logs への PostgreSQL ログの発行](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)
+ [Amazon CloudWatch Logs への SQL Server ログの発行](USER_LogAccess.Concepts.SQLServer.md#USER_LogAccess.SQLServer.PublishtoCloudWatchLogs)

## CloudWatch Logs に発行するログの指定
<a name="integrating_cloudwatchlogs.configure"></a>

コンソールで発行するログを指定します。AWS Identity and Access Management (IAM) にサービスリンクロールがあることを確認します。サービスにリンクされたロールの詳細については、「[Amazon RDS のサービスにリンクされたロールの使用](UsingWithRDS.IAM.ServiceLinkedRoles.md)」を参照してください。

**発行するログを指定するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 次のいずれかを実行します。
   + **[データベースの作成]** を選択します。
   + 一覧からデータベースを選択し、**[Modify]** (変更) を選択します。

1. **[Logs exports]** (ログのエクスポート) で、発行するログを選択します。

   次の例では、RDS for MySQL DB インスタンスの監査ログ、エラーログ、一般ログ、スロークエリログを指定します。  
![\[CloudWatch Logs に発行するログを選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/AddCWLogs.png)

## CloudWatch Logs でのログの検索とフィルタリング
<a name="accessing-logs-in-cloudwatch"></a>

CloudWatch コンソールを使用して、指定した基準を満たすログエントリを検索することができます。ログには、CloudWatch Logs コンソールにつながる RDS コンソールからアクセスすることも、CloudWatch Logs コンソールから直接アクセスすることもできます。

**RDS コンソールを使用して RDS ログを検索するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. DB インスタンスを選択します。

1. **[設定]** を選択します。

1. **[Published logs]** (発行されたログ) で、表示するデータベースログを選択します。

**CloudWatch Logs コンソールを使用して RDS ログを検索するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、**[Log groups]** (ロググループ) を選択します。

1. フィルタボックスに **/aws/rds** と入力します。

1. [**ロググループ**] で、検索するログストリームを含むロググループの名前を選択します。

1. [**ログストリーム**] で、検索するログストリームの名前を選択します。

1. [**Log Events (ログイベント)**] で、使用するフィルター構文を入力します。

詳細については、*Amazon CloudWatch Logs ユーザーガイド*の「[ログデータの検索およびフィルタリング](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)」を参照してください。RDS ログをモニタリングする方法を説明するブログチュートリアルについては、「[Amazon CloudWatch Logs、AWS Lambda、および Amazon SNS を使用して Amazon RDS のプロアクティブなデータベースモニタリングを構築する](https://aws.amazon.com/blogs/database/build-proactive-database-monitoring-for-amazon-rds-with-amazon-cloudwatch-logs-aws-lambda-and-amazon-sns/)」を参照してください。

# REST を用いたログファイルの内容の読み取り
<a name="DownloadCompleteDBLogFile"></a>

Amazon RDS では、DB インスタンスのログファイルへのアクセスを許可する REST エンドポイントを使用できます。これは、Amazon RDS ログファイルの内容を取り出すアプリケーションを作成される場合に有用です。

構文は次のとおりです。

```
GET /v13/downloadCompleteLogFile/DBInstanceIdentifier/LogFileName HTTP/1.1
Content-type: application/json
host: rds.region.amazonaws.com
```

以下のパラメータは必須です。
+ `DBInstanceIdentifier`— ダウンロードするログファイルを含む DB インスタンスの名前。
+ `LogFileName`—ダウンロードするログファイルの名前。

このレスポンスには、ストリーミングとしてリクエストされたログファイルの内容が含まれます。

次の例では、*us-west-2* リージョンの *sample-sql* という名前の DB インスタンスの *log/ERROR.6* という名前のログファイルをダウンロードします。

```
GET /v13/downloadCompleteLogFile/sample-sql/log/ERROR.6 HTTP/1.1
host: rds.us-west-2.amazonaws.com
X-Amz-Security-Token: AQoDYXdzEIH//////////wEa0AIXLhngC5zp9CyB1R6abwKrXHVR5efnAVN3XvR7IwqKYalFSn6UyJuEFTft9nObglx4QJ+GXV9cpACkETq=
X-Amz-Date: 20140903T233749Z
X-Amz-Algorithm: AWS4-HMAC-SHA256
X-Amz-Credential: AKIADQKE4SARGYLE/20140903/us-west-2/rds/aws4_request
X-Amz-SignedHeaders: host
X-Amz-Content-SHA256: e3b0c44298fc1c229afbf4c8996fb92427ae41e4649b934de495991b7852b855
X-Amz-Expires: 86400
X-Amz-Signature: 353a4f14b3f250142d9afc34f9f9948154d46ce7d4ec091d0cdabbcf8b40c558
```

存在しない DB インスタンスを指定した場合、レスポンスは次のエラーになります。
+ `DBInstanceNotFound`—`DBInstanceIdentifier` が既存の DB インスタンスを参照していません。(HTTP ステータスコード: 404)

# Amazon RDS for Db2 データベースのログファイル
<a name="USER_LogAccess.Concepts.Db2"></a>

Amazon RDS コンソール、AWS CLI、または RDS API を使用して、RDS for Db2 の診断ログと通知ログにアクセスできます。ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。

**Topics**
+ [保持期間スケジュール](#USER_LogAccess.Concepts.Db2.Retention)
+ [Amazon CloudWatch Logs への Db2 ログの発行](#USER_LogAccess.Db2.PublishtoCloudWatchLogs)

## 保持期間スケジュール
<a name="USER_LogAccess.Concepts.Db2.Retention"></a>

ログファイルは、毎日、および DB インスタンスが再開されるたびにローテーションされます。以下は、Amazon RDS の RDS for Db2 ログの保持期間スケジュールです。


****  

| ログタイプ | 保持期間スケジュール | 
| --- | --- | 
|  診断ログ  |  Db2 は、インスタンスレベルで設定された保持期間に含まれないログを削除します。Amazon RDS は、`diagsize` パラメータを 1,000 に設定します。  | 
|  通知ログ  |  Db2 は、インスタンスレベルで設定された保持期間に含まれないログを削除します。Amazon RDS は、`diagsize` パラメータを 1,000 に設定します。  | 

## Amazon CloudWatch Logs への Db2 ログの発行
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs"></a>

RDS for Db2 では診断および通知ログイベントを直接 Amazon CloudWatch Logs に発行できます。CloudWatch Logs を使用してログデータを分析し、CloudWatch を使用してアラームを作成し、メトリクスを表示することができます。

CloudWatch Logs では、次のことを実行できます。
+ ログは、ユーザーが定義する保持期間で耐久性の高いストレージ領域に保存します。
+ ログデータを検索しフィルタリングします。
+ アカウント間でログデータを共有します。
+ ログを Amazon S3 にエクスポートします。
+ Amazon OpenSearch Service へのデータのストリーミング
+ Amazon Kinesis Data Streams を使用してログデータをリアルタイムで処理します。詳細については、「*Amazon Managed Service for Apache Flink for Apache Flink デベロッパーガイド*」内の「[Amazon CloudWatch Logs の使用](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html)」を参照してください。

 Amazon RDS は、各 RDS for Db2 データベースログを、ロググループ内の個別のデータベースストリームとして発行します。例えば、診断ログと通知ログを発行する場合、診断データは `/aws/rds/instance/my_instance/diagnostic` ロググループの診断ログストリームに保存され、通知ログデータは `/aws/rds/instance/my_instance/notify` ロググループに保存されます。

**注記**  
RDS for Db2 ログの CloudWatch Logs への発行は、デフォルトでは有効にされていません。セルフチューニングメモリマネージャー (STMM) とオプティマイザ統計のログの発行はサポートされていません。RDS for Db2 ログの CloudWatch Logs への発行は、アジアパシフィック (香港) を除くすべてのリージョンでサポートされています。

### コンソール
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs.console"></a>

**AWS マネジメントコンソール から CloudWatch Logs に RDS for Db2 ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択し、変更する DB インスタンスを選択します。

1. [**Modify**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

   **diag.log**、**notify.log**、またはその両方を選択できます。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

### AWS CLI
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs.CLI"></a>

RDS for Db2 ログを発行するには、以下のパラメータを指定して [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを使用します。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下のコマンドを使用して RDS for Db2 ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
次の例では、CloudWatch Logs の発行を有効にした RDS for Db2 DB インスタンスを作成します。`--enable-cloudwatch-logs-exports` 値は、`diag.log`、`notify.log`、または両方を含むことができる JSON 文字列です。  
Linux、macOS、Unix の場合:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --enable-cloudwatch-logs-exports '["diag.log","notify.log"]' \
    --db-instance-class db.m4.large \
    --engine db2-se
```
Windows の場合:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --enable-cloudwatch-logs-exports "[\"diag.log\",\"notify.log\"]" ^
    --db-instance-class db.m4.large ^
    --engine db2-se
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

**Example**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の RDS for Db2 DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、その値は `diag.log`、`notify.log`、または両方を含む文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["diag.log","notify.log"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"EnableLogTypes\":[\"diag.log\",\"notify.log\"]}"
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

**Example**  
次の例では、診断ログファイルの CloudWatch Logs への発行が無効になるよう既存の RDS for Db2 DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `DisableLogTypes` であり、その値は `diag.log`、`notify.log`、または両方を含む文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["diag.log"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"diag.log\"]}"
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

# MariaDB データベースのログファイル
<a name="USER_LogAccess.Concepts.MariaDB"></a>

MariaDB エラーログ、スロークエリログ、IAM データベース認証エラーログ、一般ログをモニタリングできます。デフォルトで、MariaDB のエラーログは生成されます。DB パラメータグループにパラメータを設定することで、スロークエリログと一般ログを生成できます。Amazon RDS はすべての MariaDB ログファイルをローテーションします。各タイプの間隔は以下のとおりです。

MariaDB ログは、Amazon RDS コンソール、Amazon RDS API、Amazon RDS CLI、または AWS SDK を通じて直接モニタリングできます。また、ログをメインデータベースのデータベーステーブルに書き込み、そのテーブルに対してクエリを実行することで、MariaDB ログにアクセスできます。mysqlbinlog ユーティリティを使用して、バイナリログをダウンロードできます。

ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。

**Topics**
+ [MariaDB エラーログにアクセスする](USER_LogAccess.MariaDB.Errorlog.md)
+ [MariaDB のスロークエリと一般ログにアクセスする](USER_LogAccess.MariaDB.Generallog.md)
+ [MariaDB ログを Amazon CloudWatch Logs に発行する](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [MariaDB のログのローテーションと保持](USER_LogAccess.MariaDB.LogFileSize.md)
+ [テーブルベースの MariaDB ログを管理する](Appendix.MariaDB.CommonDBATasks.Logs.md)
+ [MariaDB バイナリログ記録の設定](USER_LogAccess.MariaDB.BinaryFormat.md)
+ [MariaDB バイナリログにアクセスする](USER_LogAccess.MariaDB.Binarylog.md)
+ [MariaDB バイナリログ注釈の有効化](USER_LogAccess.MariaDB.BinarylogAnnotation.md)

# MariaDB エラーログにアクセスする
<a name="USER_LogAccess.MariaDB.Errorlog"></a>

MariaDB エラーログは `<host-name>.err` ファイルに書き込まれます。Amazon RDS コンソールを使用して、このファイルを表示できます。Amazon RDS API、Amazon RDS CLI、または AWS SDK を使用してログを取得することもできます。`<host-name>.err` ファイルは 5 分ごとにフラッシュされ、その内容は `mysql-error-running.log` に追加されます。その後、`mysql-error-running.log` ファイルは 1 時間ごとにローテーションされ、直前 24 時間内に 1 時間ごとに生成されたファイルが保持されます。各ログファイルには、それぞれ生成された時間 (UTC) がファイル名に付加されます。ログファイルには、タイムスタンプも付加され、ログエントリがいつ書き込まれたかを調べるために役立ちます。

MariaDB では、スタートアップ時、シャットダウン時、エラー検出時にのみエラーログへの書き込みが行われます。DB インスタンスでは、新しいエントリがエラーログに書き込まれないまま、数時間または数日が経過することがあります。最近のエントリがない場合、それは、サーバーにログエントリになるエラーが発生しなかったためです。

# MariaDB のスロークエリと一般ログにアクセスする
<a name="USER_LogAccess.MariaDB.Generallog"></a>

MariaDB のスロークエリログと一般ログは、DB パラメータグループのパラメータを設定することで、ファイルまたはデータベーステーブルに書き込むことができます。DB パラメータグループの作成と変更の詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。Amazon RDS コンソール、Amazon RDS API、AWS CLI、または AWS SDK を使用して、スロークエリログまたは一般ログを表示する前に、以下のパラメータを設定する必要があります。

以下のリストに示すパラメータを使用して MariaDB のログ記録を制御できます。
+ `slow_query_log` または `log_slow_query`: スロークエリログを作成するには、1 に設定します。デフォルトは 0 です。
+ `general_log`: 一般ログを作成するには、1 に設定します。デフォルトは 0 です。
+ `long_query_time` または `log_slow_query_time`: 高速で実行されるクエリがスロークエリログに記録されないようにするために、ログに記録されるクエリの最短実行時間の値を秒単位で指定します。デフォルトは 10 秒で、最小値は 0 です。log\$1output = FILE の場合は、マイクロ秒の精度になるように、浮動小数点値を指定できます。log\$1output = TABLE の場合は、秒の精度になるように、整数値を指定する必要があります。実行時間が `long_query_time` または `log_slow_query_time` の値を超えたクエリのみがログに記録されます。例えば、`long_query_time` または `log_slow_query_time` を 0.1 に設定すると、実行時間が 100 ミリ秒未満のすべてのクエリはログに記録されなくなります。
+ `log_queries_not_using_indexes`: インデックスを使用しないすべてのクエリをスロークエリログに記録するには、このパラメータを 1 に設定します。デフォルトは 0 です。インデックスを使用しないクエリは、その実行時間が `long_query_time` パラメータの値未満であってもログに記録されます。
+ `log_output option`: `log_output` パラメータに指定できるオプションは、次のとおりです。
  + **TABLE** (デフォルト) - 一般クエリを `mysql.general_log` テーブルに、スロークエリを `mysql.slow_log` テーブルに書き込みます。
  + **FILE** - 一般クエリログとスロークエリログの両方をファイルシステムに書き込みます。ログファイルは 1 時間ごとにローテーションされます。
  + **NONE** - ログ記録を無効にします。

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

  ログテーブルのローテーションが実行されると、現在のログテーブルがバックアップのログテーブルにコピーされ、現在のログテーブル内にあるエントリは削除されます。バックアップのログテーブルが既に存在する場合は、現在のログテーブルをバックアップにコピーする前に、削除されます。バックアップのログテーブルは、必要に応じて照会することができます。`mysql.general_log` テーブルに対するバックアップのログテーブルは、`mysql.general_log_backup` という名前になります。`mysql.slow_log` テーブルに対するバックアップのログテーブルは、`mysql.slow_log_backup` という名前になります。

  `mysql.general_log` テーブルのローテーションは、`mysql.rds_rotate_general_log` プロシージャを呼び出すことで実行できます。`mysql.slow_log` テーブルのローテーションは、`mysql.rds_rotate_slow_log` プロシージャを呼び出すことで実行できます。

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

Amazon RDS では、`TABLE` ログおよび `FILE` ログのローテーションが Amazon RDS イベントで記録され、ユーザーに通知が送信されます。

Amazon RDS コンソール、Amazon RDS API、Amazon RDS CLI、または AWS SDK からログを使用するには、`log_output` パラメータを FILE に設定します。MariaDB エラーログと同様、これらのログファイルは 1 時間ごとにローテーションされます。直前 24 時間以内に生成されたログファイルが保持されます。

スロークエリと一般ログの詳細については、MariaDB のドキュメントの以下のトピックを参照してください。
+ [スロークエリログ](http://mariadb.com/kb/en/mariadb/slow-query-log/)
+ [一般クエリログ](http://mariadb.com/kb/en/mariadb/general-query-log/)

# MariaDB ログを Amazon CloudWatch Logs に発行する
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs"></a>

MariaDB DB インスタンスを設定して、ログデータを Amazon CloudWatch Logs のロググループに発行することができます。CloudWatch Logs を使用すると、ログデータのリアルタイム分析や、CloudWatch を使用したアラームの作成、メトリクスの表示を行うことができます。CloudWatch Logs を使用して、耐久性の高いストレージにログレコードを格納できます。

Amazon RDS は、各 MariaDB データベースログを、ロググループの別個のデータストリーミングとして発行します。例えば、エクスポート関数を設定して、スロークエリログを含んでいるとします。次に、スロークエリデータは、`/aws/rds/instance/my_instance/slowquery` ロググループのスロークエリログストリームに保存されます。

エラーログはデフォルトで有効になります。他の MariaDB ログの要件の概要を次の表に示します。


| ログ | 要件 | 
| --- | --- | 
|  監査ログ  |  DB インスタンスは、`MARIADB_AUDIT_PLUGIN` オプションを指定したカスタムオプショングループを使用する必要があります。  | 
|  全般ログ  |  DB インスタンスは、パラメータ設定 `general_log = 1` を指定して一般ログを有効にしたカスタムパラメータグループを使用する必要があります。  | 
|  スロークエリログ  |  DB インスタンスは、パラメータ設定 `slow_query_log = 1` または `log_slow_query = 1` を指定してスロークエリログを有効にしたカスタムパラメータグループを使用する必要があります。  | 
|  IAM データベース認証エラーログ  |  DB インスタンスを作成または変更して、DB インスタンスのログタイプ `iam-db-auth-error` を有効にする必要があります。  | 
|  ログ出力  |  DB インスタンスは、パラメータ設定 `log_output = FILE` を指定してログをファイルシステムに書き込み、CloudWatch Logs に発行するカスタムパラメータグループを使用する必要があります。  | 

## コンソール
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CON"></a>

**コンソールから CloudWatch Logs に MariaDB ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択し、変更する DB インスタンスを選択します。

1. [**Modify**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

## AWS CLI
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CLI"></a>

MariaDB ログは、AWS CLI を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを呼び出せます。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下の AWS CLI コマンドを呼び出すことで MariaDB ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

以下のオプションを使用して、この AWS CLI コマンドの 1 つを実行します。
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

実行する AWS CLI コマンドに応じて、他のオプションが必要となる場合があります。

**Example**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の MariaDB DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、値は `audit`、`error`、`general`、および `slowquery` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```
Windows の場合:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```

**Example**  
次のコマンドでは、MariaDB DB インスタンスを作成してログファイルを CloudWatch Logs に発行します。`--enable-cloudwatch-logs-exports` 値は、JSON 形式の文字列の配列です。この文字列は `audit`、`error`、`general` および `slowquery` の任意の組み合わせです。  
Linux、macOS、Unix の場合:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \
4.     --db-instance-class db.m4.large \
5.     --engine mariadb
```
Windows の場合:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine mariadb
```

## RDS API
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.API"></a>

MariaDB ログは、RDS API を使用して発行することができます。以下のパラメータを指定して [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) オペレーションを呼び出します。
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注記**  
`CloudwatchLogsExportConfiguration` パラメータへの変更は常に DB インスタンスに即時適用されます。それで、`ApplyImmediately` パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで MariaDB ログを発行することもできます。
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

実行する AWS CLI コマンドに応じて、他のパラメータが必要となる場合があります。

# MariaDB のログのローテーションと保持
<a name="USER_LogAccess.MariaDB.LogFileSize"></a>

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

MariaDB のスロークエリログ、エラーログ、一般ログファイルのサイズは、DB インスタンスに割り当てられたストレージ領域の 2 パーセント以下に制約されます。このしきい値を維持するために、ログは 1 時間ごとに自動的にローテーションされ、24 時間以上前の古いログファイルは削除されます。古いログファイルを削除した後、ログファイルの合計サイズがしきい値を超えている場合、ログファイルのサイズがしきい値以下になるまで、最も大きいログファイルから順に削除されます。

Amazon RDS は、10 MB を超える IAM データベース認証エラーログファイルをローテーションします。Amazon RDS は、5 日以上経過しているか、100 MB を超える IAM データベース認証エラーログファイルを削除します。

# テーブルベースの MariaDB ログを管理する
<a name="Appendix.MariaDB.CommonDBATasks.Logs"></a>

DB インスタンスのテーブルに一般ログとスロークエリログを移動できます。そのためには、DB パラメータグループを作成し、`log_output` サーバーパラメータを `TABLE` に設定します。その後、一般クエリは `mysql.general_log` テーブルに記録され、スロークエリは `mysql.slow_log` テーブルに記録されます。それらのテーブルに対してクエリを実行することでログの情報にアクセスできます。このログ記録を有効にすると、データベースに書き込まれるデータの量が増え、パフォーマンスが低下することがあります。

一般ログもスロークエリログもデフォルトで無効になっています。テーブルへのログ記録を有効にするには、以下のサーバーパラメータを `1` に設定する必要もあります。
+ `general_log`
+ `slow_query_log`、または `log_slow_query`

ログテーブルは、それぞれのログ記録アクティビティのパラメータを `0` にリセットしてログ記録をオフにするまで、拡大し続けます。大量のデータが長期にわたって蓄積されることがよくあり、割り当てストレージ領域の大部分を使い果たすことがあります。Amazon RDS では、ログテーブルを切り詰めることはできませんが、その内容を移動することはできます。テーブルのローテーションにより、その内容がバックアップテーブルに保存され、新しい空のログテーブルが作成されます。以下のコマンドラインプロシージャを使用して、ログテーブルを手動でローテーションされることができます。ここで表示されている `PROMPT>` はコマンドプロンプトです。

```
PROMPT> CALL mysql.rds_rotate_slow_log;
PROMPT> CALL mysql.rds_rotate_general_log;
```

 以前のデータを完全に削除し、ディスク領域を再利用するには、該当するプロシージャを 2 回連続で呼び出します。

# MariaDB バイナリログ記録の設定
<a name="USER_LogAccess.MariaDB.BinaryFormat"></a>

*バイナリログ*は、MariaDB サーバーインスタンスで行われたデータ変更に関する情報を含む、一連のログファイルです。バイナリログには、以下のような情報が含まれています。
+ テーブルの作成や行の変更など、データベースの変更が記述されたイベント
+ データを更新した各ステートメントの実行時間に関する情報
+ データを更新する可能性があったものの、それが実行されていないステートメントのイベント

バイナリログには、レプリケーション中に送信されるステートメントが記録されます。また、一部のリカバリオペレーションにもバイナリログが必要です。詳細については、MariaDB のドキュメントの「[Binary Log](https://mariadb.com/kb/en/binary-log/)」を参照してください。

自動バックアップ機能では、MariaDB のバイナリログ記録を有効にするか無効にするかを決定します。次のオプションがあります。

バイナリログ記録を有効にするには  
バックアップ保持期間を 0 以外の正の値に設定します。

バイナリログ記録を無効にするには  
[バックアップ保持期間] を 0 に設定します。

詳細については、「[自動バックアップの有効化](USER_WorkingWithAutomatedBackups.Enabling.md)」を参照してください。

Amazon RDS の MariaDB は*行ベース*、*ステートメントベース*、および*混合*のバイナリログ記録形式をサポートしています。デフォルトのバイナリログ形式は*混合*です。さまざまな MariaDB のバイナリログ形式の詳細については、MariaDB ドキュメントの「[バイナリログ形式](http://mariadb.com/kb/en/mariadb/binary-log-formats/)」を参照してください。

レプリケーションを使用する予定の場合は、バイナリログ形式が重要です。これは、ソースに記録されてレプリケーションターゲットに送信されるデータ変更記録が決定されるからです。レプリケーション用のさまざまなバイナリログ記録形式の利点と欠点についての詳細は、MySQL ドキュメントの「[Advantages and Disadvantages of Statement-Based and Row-Based Replication](https://dev.mysql.com/doc/refman/5.7/en/replication-sbr-rbr.html)」を参照してください。

**重要**  
バイナリログ形式を行ベースに設定すると、バイナリログファイルが巨大になることがあります。巨大なバイナリログファイルにより、DB インスタンスの使用可能なストレージの量が減ります。また、DB インスタンスの復元オペレーションの実行にかかる時間が長くなることがあります。  
ステートメントベースのレプリケーションは、ソース DB インスタンスとリードレプリカの間の不整合の原因になります。詳細については、MariaDB ドキュメントの「[Unsafe Statements for Statement-based Replication](https://mariadb.com/kb/en/library/unsafe-statements-for-statement-based-replication/)」を参照してください。  
バイナリログを有効にすると、DB インスタンスへの書き込みディスク I/O 操作の回数が増えます。`WriteIOPS` CloudWatch メトリクスを使用して、IOPS の使用状況をモニタリングできます。

**MariaDB バイナリログ形式を設定するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**パラメータグループ**] を選択します。

1. 変更する DB インスタンスに使用されているパラメータグループを選択します。

   デフォルトのパラメータグループを変更することはできません。DB インスタンスがデフォルトのパラメータグループを使用している場合、新しいパラメータグループを作成し DB インスタンスと関連付けます。

   DB パラメータグループの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

1. [**Parameter group actions (パラメータグループのアクション)**] で、[**編集**] を選択します。

1. `binlog_format` パラメータを、選択したバイナリログ記録形式 (**ROW**、**STATEMENT**、または **MIXED**) に設定します。

   DB インスタンスのバックアップ保持期間をゼロに設定することでバイナリログを無効にできますが、これによって毎日の自動バックアップは無効になります。自動バックアップを無効にすると、`log_bin` セッション変数がオフまたは無効になります。これにより、RDS for MariaDB DB インスタンスのバイナリログ記録が無効になり、`binlog_format` セッション変数がデータベースのデフォルト値の `ROW` にリセットされます。バックアップを無効にしないことをお勧めします。**バックアップ保持期間**の設定の詳細については、「[DB インスタンスの設定](USER_ModifyInstance.Settings.md)」を参照してください。

1. [**変更の保存**] を選択して、更新を DB パラメータグループに保存します。

`binlog_format` パラメータは RDS for MariaDB では動的であるため、変更を適用するために DB インスタンスを再起動する必要はありません。

**重要**  
DB パラメータグループを変更すると、そのパラメータグループを使用するすべての DB インスタンスに影響を与えます。AWS リージョン内の異なる MariaDB DB インスタンスに対して異なるバイナリログ形式を指定する場合、DB インスタンスは異なる DB パラメータグループを使用する必要があります。これらのパラメータグループは、さまざまなログ形式を識別します。各 DB インスタンスに適切な DB パラメータグループを割り当てます。

# MariaDB バイナリログにアクセスする
<a name="USER_LogAccess.MariaDB.Binarylog"></a>

mysqlbinlog ユーティリティを使用して、バイナリログをテキスト形式で MariaDB DB インスタンスからダウンロードできます。バイナリログは、お使いのコンピュータにダウンロードされます。mysqlbinlog ユーティリティの使用の詳細については、MariaDB ドキュメントの「[mysqlbinlog を使用する](http://mariadb.com/kb/en/mariadb/using-mysqlbinlog/)」を参照してください。

 Amazon RDS インスタンスに対して mysqlbinlog ユーティリティを実行するには、以下のオプションを使用します。
+  `--read-from-remote-server` オプションを指定します。
+  `--host`: インスタンスのエンドポイントからの DNS 名を指定します。
+  `--port`: インスタンスによって使用されるポートを指定します。
+  `--user`: レプリケーションスレーブアクセス許可を付与された MariaDB ユーザーを指定します。
+  `--password`: ユーザーのパスワードを指定するか、パスワード値を省略します。省略した場合、ユーティリティによってパスワードの入力を求められます。
+  `--result-file`: 出力を受け取るローカルファイルを指定します。
+ 1 つ以上のバイナリログファイルの名前を指定します。使用可能なログのリストを取得するには、SQL コマンド SHOW BINARY LOGS を使用します。

mysqlbinlog オプションの詳細については、MariaDB ドキュメントの「[mysqlbinlog オプション](http://mariadb.com/kb/en/mariadb/mysqlbinlog-options/)」を参照してください。

 以下に例を示します。

Linux、macOS、Unix の場合:

```
mysqlbinlog \
    --read-from-remote-server \
    --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com \
    --port=3306  \
    --user ReplUser \
    --password <password> \
    --result-file=/tmp/binlog.txt
```

Windows の場合:

```
mysqlbinlog ^
    --read-from-remote-server ^
    --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com ^
    --port=3306  ^
    --user ReplUser ^
    --password <password> ^
    --result-file=/tmp/binlog.txt
```

Amazon RDS では、通常、バイナリログはできる限り早く消去されます。ただし、バイナリログは、mysqlbinlog によってアクセスされるインスタンスで引き続き使用可能である必要があります。RDS がバイナリログを保持する時間数を指定するには、`mysql.rds_set_configuration` ストアドプロシージャを使用します。ログをダウンロードするのに十分な期間を指定してください。保持期間を設定したら、DB インスタンスのストレージ使用状況をモニタリングして、保持されたバイナリログに必要以上の容量が使用されないようにします。

以下の例では、保持期間を 1 日に設定しています。

```
call mysql.rds_set_configuration('binlog retention hours', 24); 
```

現在の設定を表示するには、`mysql.rds_show_configuration` ストアドプロシージャを使用します。

```
call mysql.rds_show_configuration; 
```

# MariaDB バイナリログ注釈の有効化
<a name="USER_LogAccess.MariaDB.BinarylogAnnotation"></a>

MariaDB DB インスタンスでは、`Annotate_rows` イベントを使用して列イベントを引き起こした SQL クエリのコピーで行イベントに注釈を追加できます。この方法では、RDS for MySQL DB インスタンスの `binlog_rows_query_log_events` パラメータを有効にするのと同様の機能を提供します。

カスタムパラメータグループを作成し `binlog_annotate_row_events` パラメータを **1** に設定することで、バイナリログの注釈をグローバルに有効にすることができます。`SET SESSION binlog_annotate_row_events = 1` を呼び出すことで、セッションレベルで注釈を有効化することもできます。バイナリログがレプリカインスタンスで有効になっている場合は、`replicate_annotate_row_events` を使用してバイナリログの注釈をレプリカインスタンスにレプリケートします。これらの設定に特別な権限を使用する必要はありません。

次に MariaDB での行ベースの処理の例を示します。行ベースログの使用は、トランザクションの分離レベルをコミット済み読み取りに設定することで起動されます。

```
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN
INSERT INTO square(x, y) VALUES(5, 5 * 5);
COMMIT;
```

注釈なしのトランザクションのバイナリログエントリは次のようになります。

```
BEGIN
/*!*/;
# at 1163
# at 1209
#150922  7:55:57 server id 1855786460  end_log_pos 1209         Table_map: `test`.`square` mapped to number 76
#150922  7:55:57 server id 1855786460  end_log_pos 1247         Write_rows: table id 76 flags: STMT_END_F
### INSERT INTO `test`.`square`
### SET
###   @1=5
###   @2=25
# at 1247
#150922  7:56:01 server id 1855786460  end_log_pos 1274         Xid = 62
COMMIT/*!*/;
```

次のステートメントでは、同じのトランザクションのセッションレベルの注釈を有効にし、トランザクションをコミットした後に無効にしています。

```
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION binlog_annotate_row_events = 1;
BEGIN;
INSERT INTO square(x, y) VALUES(5, 5 * 5);
COMMIT;
SET SESSION binlog_annotate_row_events = 0;
```

注釈ありのトランザクションのバイナリログエントリは次のようになります。

```
BEGIN
/*!*/;
# at 423
# at 483
# at 529
#150922  8:04:24 server id 1855786460  end_log_pos 483  Annotate_rows:
#Q> INSERT INTO square(x, y) VALUES(5, 5 * 5)
#150922  8:04:24 server id 1855786460  end_log_pos 529  Table_map: `test`.`square` mapped to number 76
#150922  8:04:24 server id 1855786460  end_log_pos 567  Write_rows: table id 76 flags: STMT_END_F
### INSERT INTO `test`.`square`
### SET
###   @1=5
###   @2=25
# at 567
#150922  8:04:26 server id 1855786460  end_log_pos 594  Xid = 88
COMMIT/*!*/;
```

# Amazon RDS for Microsoft SQL Server データベースのログファイル
<a name="USER_LogAccess.Concepts.SQLServer"></a>

Amazon RDS コンソール、AWS CLI、または RDS API を使用して、Microsoft SQL Server のエラーログ、エージェントログ、トレースファイル、ダンプファイルにアクセスできます。ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。

## 保持期間スケジュール
<a name="USER_LogAccess.Concepts.SQLServer.Retention"></a>

ログファイルは、毎日、および DB インスタンスが再開されるたびにローテーションされます。以下は、Amazon RDS の Microsoft SQL Server ログの保持期間スケジュールです。


****  

| ログタイプ | 保持期間スケジュール | 
| --- | --- | 
|  エラーログ  |  最大 30 のエラーログを保持します。Amazon RDS は 7 日を経過したエラーログを削除する場合があります。  | 
|  エージェントログ  |  最大 10 のエージェントログを保持します。Amazon RDS は 7 日を経過したエージェントログを削除する場合があります。  | 
|  トレースファイル  |  トレースファイルは、DB インスタンスのトレースファイル保持期間に応じて保持されます。トレースファイルのデフォルトの保持期間は 7 日です。DB インスタンスのトレースファイル保持期間を変更するには、「[トレースファイルおよびダンプファイルの保持期間を設定する](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)」を参照してください。  | 
|  ダンプファイル  |  ダンプファイルは、DB インスタンスのダンプファイル保持期間に応じて保持されます。ダンプファイルのデフォルトの保持期間は 7 日です。DB インスタンスのダンプファイル保持期間を変更するには、「[トレースファイルおよびダンプファイルの保持期間を設定する](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)」を参照してください。  | 

## rds\$1read\$1error\$1log プロシージャを使用して SQL Server エラーログを表示する
<a name="USER_LogAccess.Concepts.SQLServer.Proc"></a>

エラーログおよびエージェントログを表示するには、Amazon RDS ストアドプロシージャ `rds_read_error_log` を使用できます。詳細については、「[エラーログとエージェントログの表示](Appendix.SQLServer.CommonDBATasks.Logs.md#Appendix.SQLServer.CommonDBATasks.Logs.SP)」を参照してください。

## Amazon CloudWatch Logs への SQL Server ログの発行
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs"></a>

Amazon RDS for SQL Server ではエラーおよびエージェントログを直接 Amazon CloudWatch Logs に発行できます。CloudWatch Logs を使用してログデータを分析し、CloudWatch を使用してアラームを作成し、メトリクスを表示することができます。

CloudWatch Logs では、次のことを実行できます。
+ ログは、ユーザーが定義する保持期間で耐久性の高いストレージ領域に保存します。
+ ログデータを検索しフィルタリングします。
+ アカウント間でログデータを共有します。
+ ログを Amazon S3 にエクスポートします。
+ Amazon OpenSearch Service へのデータのストリーミング
+ Amazon Kinesis Data Streams を使用してログデータをリアルタイムで処理します。詳細については、「*Amazon Managed Service for Apache Flink for Apache Flink デベロッパーガイド*」内の「[Amazon CloudWatch Logs の使用](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html)」を参照してください。

 Amazon RDS は、各 SQL Server データベースログを、ロググループの別個のデータストリーミングとして発行します。例えば、エージェントログとエラーログを発行した場合、エラーデータは `/aws/rds/instance/my_instance.node1/error` ロググループのエラーログストリームに保存され、エージェントログデータは `/aws/rds/instance/my_instance.node1/agent` ロググループに保存されます。

マルチ AZ DB インスタンスの場合、Amazon RDS はデータベースログをロググループ内の 2 つの独立したストリームとして公開します。例えば、エラーログを発行する場合、エラーデータは `/aws/rds/instance/my_instance.node1/error` および `/aws/rds/instance/my_instance.node2/error` のエラーログストリームに保存されます。ログストリームはフェイルオーバー中でも変更されず、各ノードのエラーログストリームには、プライマリインスタンスまたはセカンダリインスタンスのエラーログを含めることができます。マルチ AZ では、ログストリームは自動的に作成され、`/aws/rds/instance/my_instance/rds-events` は DB インスタンスのフェイルオーバーなどのイベントデータを保存します。

**注記**  
SQL Server ログの CloudWatch Logs への発行はデフォルトでは有効にされていません。トレースファイルおよびダンプファイルの発行はサポートされていません。SQL Server ログの CloudWatch Logs への発行は、すべてのリージョンでサポートされています。

### コンソール
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.console"></a>

**AWS マネジメントコンソール から CloudWatch Logs に SQL Server DB ログを公開するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択し、変更する DB インスタンスを選択します。

1. [**Modify**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

   **エージェントログ**、**エラーログ**、またはその両方を選択できます。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

### AWS CLI
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.CLI"></a>

Oracle ログを発行するには、以下のパラメータを指定して [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを使用します。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下のコマンドを使用して SQL Server ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
次の例では、CloudWatch Logs の発行を有効にした SQL Server DB インスタンスを作成します。`--enable-cloudwatch-logs-exports` 値は、`error`、`agent`、または両方を含むことができる JSON 文字列です。  
Linux、macOS、Unix の場合:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --enable-cloudwatch-logs-exports '["error","agent"]' \
    --db-instance-class db.m4.large \
    --engine sqlserver-se
```
Windows の場合:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --enable-cloudwatch-logs-exports "[\"error\",\"agent\"]" ^
    --db-instance-class db.m4.large ^
    --engine sqlserver-se
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

**Example**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の SQL Server DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、その値は `error`、`agent`、または両方を含む文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","agent"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"EnableLogTypes\":[\"error\",\"agent\"]}"
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

**Example**  
次の例では、既存の SQL Server DB インスタンスを変更して、ログファイルを CloudWatch Logs に発行できないようにします。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `DisableLogTypes` であり、その値は `error`、`agent`、または両方を含む文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["agent"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"agent\"]}"
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

# MySQL データベースのログファイル
<a name="USER_LogAccess.Concepts.MySQL"></a>

 MySQL ログは、Amazon RDS コンソール、Amazon RDS API、AWS CLI、または AWS SDK を通じて直接モニタリングできます。また、ログをメインデータベースのデータベーステーブルに書き込み、そのテーブルに対してクエリを実行することで、MySQL ログにアクセスできます。mysqlbinlog ユーティリティを使用して、バイナリログをダウンロードできます。

ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。

**Topics**
+ [RDS for MySQL データベースログの概要](USER_LogAccess.MySQL.LogFileSize.md)
+ [Amazon CloudWatch Logs への MySQL ログの発行](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [テーブルへの MySQL ログ出力の送信](Appendix.MySQL.CommonDBATasks.Logs.md)
+ [シングル AZ データベースの RDS for MySQL バイナリログの設定](USER_LogAccess.MySQL.BinaryFormat.md)
+ [マルチ AZ DB クラスターの MySQL バイナリログ記録の設定](USER_Binlog.MultiAZ.md)
+ [MySQL バイナリログにアクセスする](USER_LogAccess.MySQL.Binarylog.md)

# RDS for MySQL データベースログの概要
<a name="USER_LogAccess.MySQL.LogFileSize"></a>

次の種類の RDS for MySQL ログファイルをモニタリングできます。
+ エラーログ
+ スロークエリログ
+ 全般ログ
+ 監査ログ
+ インスタンスログ
+ IAM データベース認証エラーログ

RDS for MySQL のエラーログはデフォルトで生成されます。DB パラメータグループにパラメータを設定することで、低速クエリと一般ログを生成できます。

**Topics**
+ [RDS for MySQL エラーログ](#USER_LogAccess.MySQL.Errorlog)
+ [RDS for MySQL のスロークエリと一般ログ](#USER_LogAccess.MySQL.Generallog)
+ [MySQL 監査ログ](#USER_LogAccess.MySQL.Auditlog)
+ [RDS for MySQL のログのローテーションと保持](#USER_LogAccess.MySQL.LogFileSize.retention)
+ [REDO ログのサイズ制限](#USER_LogAccess.MySQL.LogFileSize.RedoLogs)

## RDS for MySQL エラーログ
<a name="USER_LogAccess.MySQL.Errorlog"></a>

RDS for MySQL は `mysql-error.log` ファイルにエラーを書き込みます。各ログファイルには、それぞれ生成された時間 (UTC) がファイル名に付加されます。ログファイルには、タイムスタンプも付加され、ログエントリがいつ書き込まれたかを調べるために役立ちます。

RDS for MySQL では起動時、シャットダウン時、およびエラー検出時にのみ、エラーログへの書き込みが行われます。DB インスタンスでは、新しいエントリがエラーログに書き込まれないまま、数時間または数日が経過することがあります。最近のエントリがない場合、それは、サーバーにログエントリになり得るエラーが発生しなかったためです。

設計上、エラーログはフィルタリングされ、エラーなどの予期しないイベントのみが表示されます。ただし、エラーログには、クエリの進行状況など、表示されない追加のデータベース情報も含まれています。したがって、実際のエラーがなくても、継続的なデータベースアクティビティのためにエラーログのサイズが増加する可能性があります。また、AWS マネジメントコンソール のエラーログには特定のサイズがバイト単位またはキロバイト単位で表示されている場合がありますが、ダウンロードすると 0 バイトになる場合があります。

RDS for MySQL は 5 分ごとに `mysql-error.log` をディスクに書き込みます。ログの内容が `mysql-error-running.log` に追加されます。

RDS for MySQL は `mysql-error-running.log` ファイルを 1 時間ごとにローテーションします。過去 2 週間に生成されたログが保持されます。

**注記**  
ログの保持期間は、Amazon RDS と Aurora で異なります。

## RDS for MySQL のスロークエリと一般ログ
<a name="USER_LogAccess.MySQL.Generallog"></a>

 RDS for MySQL のスロークエリログと一般ログを、ファイルまたはデータベーステーブルに書き込めます。このためには、DB パラメータグループにパラメータを設定します。DB パラメータグループの作成と変更の詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。Amazon RDS コンソール、Amazon RDS API、Amazon RDS CLI、または AWS SDK を使用して、スロークエリログまたは一般ログを表示する前に、以下のパラメータを設定する必要があります。

以下のリストに示すパラメータを使用して RDS for MySQL のログ記録を制御できます。
+ `slow_query_log`: スロークエリログを作成するには、1 に設定します。デフォルトは 0 です。
+ `general_log`: 一般ログを作成するには、1 に設定します。デフォルトは 0 です。
+ `long_query_time`: ファストクエリがスロークエリログに記録されないようにするために、ログに記録されるクエリの最短実行時間の値を秒単位で指定します。デフォルトは 10 秒で、最小値は 0 です。log\$1output = FILE の場合は、マイクロ秒の精度になるように、浮動小数点値を指定できます。log\$1output = TABLE の場合は、秒の精度になるように、整数値を指定する必要があります。実行時間が `long_query_time` の値を超えたクエリのみがログに記録されます。例えば、`long_query_time` を 0.1 に設定すると、実行時間が 100 ミリ秒未満のすべてのクエリはログに記録されなくなります。
+ `log_queries_not_using_indexes`: インデックスを使用しないすべてのクエリをスロークエリログに記録するには、1 に設定します。インデックスを使用しないクエリは、その実行時間が `long_query_time` パラメータの値未満であってもログに記録されます。デフォルトは 0 です。
+ `log_output option`: `log_output` パラメータに指定できるオプションは、次のとおりです。
  + **TABLE** (デフォルト)  - 一般クエリを `mysql.general_log` テーブルに、スロークエリを `mysql.slow_log` テーブルに書き込みます。
  + **FILE** - 一般クエリログとスロークエリログの両方をファイルシステムに書き込みます。
  + **NONE** - ログ記録を無効にします。

スロークエリデータを Amazon CloudWatch Logs に表示するには、次の条件を満たす必要があります。
+ スロークエリログを含むように CloudWatch Logs を設定する必要があります。
+ `slow_query_log` を有効にする必要があります。
+ `log_output`/ を に設定する必要があります。`FILE`
+ クエリに要する時間が、`long_query_time` に設定された時間よりも長い必要があります。

スロークエリと一般ログの詳細については、MySQL ドキュメントの以下のトピックを参照してください。
+ [スロークエリログ](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html)
+ [一般クエリログ](https://dev.mysql.com/doc/refman/8.0/en/query-log.html)

## MySQL 監査ログ
<a name="USER_LogAccess.MySQL.Auditlog"></a>

監査ログにアクセスするには、DB インスタンスは `MARIADB_AUDIT_PLUGIN` オプションを指定してカスタムオプショングループを使用する必要があります。詳細については、「[MySQL に対する MariaDB 監査プラグインのサポート](Appendix.MySQL.Options.AuditPlugin.md)」を参照してください。

## RDS for MySQL のログのローテーションと保持
<a name="USER_LogAccess.MySQL.LogFileSize.retention"></a>

ログ記録が有効になっている場合、Amazon RDS は、テーブルログのローテーションまたはログファイルの削除を定期的に実行します。これは、ログファイルが大きくなることでデータベースが使用できなくなったりパフォーマンスに影響する可能性を低く抑えるための予防措置です。RDS for MySQL は、次のようにローテーションと削除を処理します。
+ MySQL のスロークエリログ、エラーログ、一般ログファイルのサイズは、DB インスタンスに割り当てられたストレージ領域の 2 パーセント以下に制約されます。このしきい値を維持するために、ログは 1 時間ごとに自動的にローテーションされます。MySQL は、使用が 2 週間を超えたログファイルを削除します。古いログファイルを削除した後、ログファイルの合計サイズがしきい値を超えている場合、ログファイルのサイズがしきい値以下になるまで、最も古いログファイルから順に削除されます。
+ `FILE` ログ記録が有効になっている場合、ログファイルの検査が 1 時間ごとに実行され、作成後 2 週間を超えたログファイルは削除されます。場合によっては、削除後の残りのログファイルの合計サイズが、DB インスタンスに割り当てられた領域のしきい値である 2 % を超えることがあります。この場合、ログファイルのサイズがしきい値以下になるまで、最も古いログファイルから順に削除されます。
+ `TABLE` ロギングを有効化すると、24 時間ごとにログテーブルのローテーションが実行される場合があります。このログテーブルのローテーションは、テーブルログに使用されている領域が、割り当てられたストレージ領域の 20 % を超えると、実行されます。結合されたすべてのログのサイズが 10 GB を超える場合にも発生します。DB インスタンスに使用されている領域が、DB インスタンスに割り当てられたストレージ領域の 90% を超えている場合は、ログのローテーションを実行するためのしきい値が小さくなります。テーブルログに使用されている領域が、割り当てられたストレージ領域の 10% を超えると、ログテーブルのローテーションが実行されます。結合されたすべてのログのサイズが 5 GB を超えると、ログはローテーションされます。`low storage` イベントカテゴリにサブスクライブして、ログテーブルのローテーションが実行されて領域が解放されたときに通知を受け取ることができます。詳細については、「[Amazon RDS イベント通知の操作](USER_Events.md)」を参照してください。

  ログテーブルをローテーションすると、現在のログテーブルがまずバックアップのログテーブルにコピーされます。その後、現在のログテーブルのエントリが削除されます。バックアップのログテーブルが既に存在する場合は、現在のログテーブルをバックアップにコピーする前に、削除されます。バックアップのログテーブルは、必要に応じて照会することができます。`mysql.general_log` テーブルに対するバックアップのログテーブルは、`mysql.general_log_backup` という名前になります。`mysql.slow_log` テーブルに対するバックアップのログテーブルは、`mysql.slow_log_backup` という名前になります。

  `mysql.general_log` テーブルのローテーションは、`mysql.rds_rotate_general_log` プロシージャを呼び出すことで実行できます。`mysql.slow_log` テーブルのローテーションは、`mysql.rds_rotate_slow_log` プロシージャを呼び出すことで実行できます。

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

Amazon RDS コンソール、Amazon RDS API、Amazon RDS CLI、または AWS SDK からログを使用するには、`log_output` パラメータを FILE に設定します。MySQL エラーログと同様、これらのログファイルは 1 時間ごとにローテーションされます。直近の 2 週間に生成されたログファイルが保持されます。Amazon RDS と Aurora で保持期間が異なる点に注意してください。​

## REDO ログのサイズ制限
<a name="USER_LogAccess.MySQL.LogFileSize.RedoLogs"></a>

RDS for MySQL バージョン 8.0.32 以前の場合、このパラメータのデフォルト値は 256 MB です。この量は、`innodb_log_file_size` パラメータ (128 MB) のデフォルト値に `innodb_log_files_in_group` パラメータ (2) のデフォルト値を掛けることによって算出されます。詳細については、「[Best practices for configuring parameters for Amazon RDS for MySQL, part 1: Parameters related to performance](https://aws.amazon.com/blogs/database/best-practices-for-configuring-parameters-for-amazon-rds-for-mysql-part-1-parameters-related-to-performance/)」を参照してください。

RDS for MySQL バージョン 8.0.33 以降のマイナーバージョンの場合、Amazon RDS では `innodb_log_file_size` パラメータの代わりに `innodb_redo_log_capacity` パラメータが使用されます。`innodb_redo_log_capacity` パラメータの Amazon RDS デフォルト値は 2 GB です。詳細については、MySQL ドキュメントの「[MySQL 8.0.30 での変更点](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html)」を参照してください。

MySQL 8.4 以降、Amazon RDS ではデフォルトで `innodb_dedicated_server` パラメータが有効になります。`innodb_dedicated_server` パラメータを使用すると、データベースエンジンは `innodb_buffer_pool_size` および `innodb_redo_log_capacity` パラメータを計算します。詳細については、「[MySQL 8.4 でのバッファプールサイズと REDO ログ容量の設定](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)」を参照してください。

# Amazon CloudWatch Logs への MySQL ログの発行
<a name="USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs"></a>

MySQL DB インスタンスを設定して、ログデータを Amazon CloudWatch Logs のロググループに発行することができます。CloudWatch Logs を使用すると、ログデータのリアルタイム分析や、CloudWatch を使用したアラームの作成、メトリクスの表示を行うことができます。CloudWatch Logs を使用して、耐久性の高いストレージにログレコードを格納できます。

Amazon RDS は、MySQL データベースログを、ロググループの別のデータストリーミングとしてそれぞれ発行します。例えば、エクスポート機能を設定して、スロークエリログを作成すると、スロークエリデータは、`/aws/rds/instance/my_instance/slowquery` ロググループのスロークエリログストリーミングに保存されます。

エラーログはデフォルトで有効になります。他の MySQL ログの要件の概要を次の表に示します。


| ログ | 要件 | 
| --- | --- | 
|  監査ログ  |  DB インスタンスは、`MARIADB_AUDIT_PLUGIN` オプションを指定したカスタムオプショングループを使用する必要があります。  | 
|  全般ログ  |  DB インスタンスは、パラメータ設定 `general_log = 1` を指定して一般ログを有効にしたカスタムパラメータグループを使用する必要があります。  | 
|  スロークエリログ  |  DB インスタンスは、パラメータ設定 `slow_query_log = 1` を指定してスロークエリログを有効にしたカスタムパラメータグループを使用する必要があります。  | 
|  IAM データベース認証エラーログ  |  DB インスタンスを作成または変更して、DB インスタンスのログタイプ `iam-db-auth-error` を有効にする必要があります。  | 
|  ログ出力  |  DB インスタンスは、パラメータ設定 `log_output = FILE` を指定してログをファイルシステムに書き込み、CloudWatch Logs に発行するカスタムパラメータグループを使用する必要があります。  | 

## コンソール
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.CON"></a>

**コンソールを使用して CloudWatch Logs に MySQL ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択し、変更する DB インスタンスを選択します。

1. [**Modify**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

## AWS CLI
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.CLI"></a>

 AWS CLI を使用して MySQL ログを発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを呼び出せます。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下の AWS CLI コマンドを呼び出すことで MySQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

以下のオプションを使用して、この AWS CLI コマンドの 1 つを実行します。
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

実行する AWS CLI コマンドに応じて、他のオプションが必要となる場合があります。

**Example**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の MySQL DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、値は `audit`、`error`、`general`、および `slowquery` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```
Windows の場合:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```

**Example**  
次の例では、MySQL DB インスタンスを作成してログファイルを CloudWatch Logs に発行します。`--enable-cloudwatch-logs-exports` 値は、JSON 形式の文字列の配列です。この文字列は `audit`、`error`、`general` および `slowquery` の任意の組み合わせです。  
Linux、macOS、Unix の場合:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \
4.     --db-instance-class db.m4.large \
5.     --engine MySQL
```
Windows の場合:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine MySQL
```

## RDS API
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.API"></a>

RDS API を使用して MySQL ログを発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) アクションを呼び出せます。
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注記**  
`CloudwatchLogsExportConfiguration` パラメータへの変更は常に DB インスタンスに即時適用されます。それで、`ApplyImmediately` パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで MySQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

実行する AWS CLI コマンドに応じて、他のパラメータが必要となる場合があります。

# テーブルへの MySQL ログ出力の送信
<a name="Appendix.MySQL.CommonDBATasks.Logs"></a>

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 回連続で呼び出します。

# シングル AZ データベースの RDS for MySQL バイナリログの設定
<a name="USER_LogAccess.MySQL.BinaryFormat"></a>

*バイナリログ*は、 MySQL サーバーインスタンスで行われたデータ変更に関する情報を含む、一連のログファイルです。バイナリログには、以下のような情報が含まれています。
+ テーブルの作成や行の変更など、データベースの変更が記述されたイベント
+ データを更新した各ステートメントの実行時間に関する情報
+ データを更新する可能性があったものの、それが実行されていないステートメントのイベント

バイナリログには、レプリケーション中に送信されるステートメントが記録されます。また、一部のリカバリオペレーションにもバイナリログが必要です。詳細については、MySQL ドキュメントの「[バイナリログ](https://dev.mysql.com/doc/refman/8.0/en/binary-log.html)」を参照してください。

自動バックアップ機能では、MySQL のバイナリログ記録を有効にするか無効にするかを決定します。次のオプションがあります。

バイナリログ記録を有効にするには  
バックアップ保持期間を 0 以外の正の値に設定します。

バイナリログ記録を無効にするには  
[バックアップ保持期間] を 0 に設定します。

詳細については、「[自動バックアップの有効化](USER_WorkingWithAutomatedBackups.Enabling.md)」を参照してください。

Amazon RDS の MySQL では、*行ベース*、*ステートメントベース*、および*混合*のバイナリログ形式がサポートされています。特定バイナリログ形式が必要でない場合は、混合形式を使用することをお勧めします。MySQL の各種バイナリログ形式の詳細については、MySQL ドキュメントの「[Binary logging formats](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)」を参照してください。

レプリケーションを使用する予定の場合は、バイナリログ記録形式が重要です。ソースに記録されてレプリケーションターゲットに送信されるデータ変更記録が決定されるからです。レプリケーション用のさまざまなバイナリログ記録形式の利点と欠点についての詳細は、MySQL ドキュメントの「[Advantages and Disadvantages of Statement-Based and Row-Based Replication](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)」を参照してください。

**重要**  
MySQL 8.0.34 では、`binlog_format` パラメータが廃止されました。以降の MySQL バージョンでは、このパラメータを削除し、行ベースのレプリケーションのみをサポートする予定です。そのため、新しい MySQL レプリケーション設定には行ベースのログ記録を使用することをお勧めします。詳細については、MySQL ドキュメントの「[binlog\$1format](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_format)」を参照してください。  
MySQL バージョン 8.0 および 8.4 は、パラメータ `binlog_format` を受け入れます。このパラメータを使用すると、MySQL は非推奨警告を発行します。今後のメジャーリリースで、MySQL はパラメータ `binlog_format` を削除します。  
ステートメントベースのレプリケーションは、ソース DB インスタンスとリードレプリカの間の不整合の原因になります。詳細については、MySQL ドキュメントの「[バイナリログ作成における安全なステートメントと安全でないステートメントの判断](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)」を参照してください。  
バイナリログを有効にすると、DB インスタンスへの書き込みディスク I/O 操作の回数が増えます。`WriteIOPS``` CloudWatch メトリクスを使用して、IOPS の使用状況をモニタリングできます。

**MySQL バイナリログ形式を設定するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**[Parameter groups]** (パラメータグループ) を選択します。

1. 変更する DB インスタンスに関連付ける DB のパラメータグループを選択します。

   デフォルトのパラメータグループを変更することはできません。DB インスタンスがデフォルトのパラメータグループを使用している場合、新しいパラメータグループを作成し DB インスタンスと関連付けます。

   パラメータグループの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

1. **[アクション]** から **[編集]** を選択します。

1. `binlog_format` パラメータを、選択したバイナリログ形式 (`ROW`、`STATEMENT`、または `MIXED`) に設定します。

   DB インスタンスのバックアップ保持期間をゼロに設定することでバイナリログを無効にできますが、これによって毎日の自動バックアップは無効になります。自動バックアップを無効にすると、`log_bin` セッション変数がオフまたは無効になります。これにより、RDS for MySQL DB インスタンスのバイナリログ記録が無効になり、`binlog_format` セッション変数がデータベースのデフォルト値の `ROW` にリセットされます。バックアップを無効にしないことをお勧めします。**バックアップ保持期間**の設定の詳細については、「[DB インスタンスの設定](USER_ModifyInstance.Settings.md)」を参照してください。

1. [**変更の保存**] を選択して、更新を DB パラメータグループに保存します。

`binlog_format` パラメータは RDS for MySQL では動的であるため、変更を適用するために、DB インスタンスを再起動する必要はありません。(Aurora MySQL では、このパラメータは静的であることに注意してください。詳細については、「[Aurora MySQL バイナリログの設定](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」を参照してください。)

**重要**  
DB パラメータグループを変更すると、そのパラメータグループを使用するすべての DB インスタンスに影響を与えます。AWS リージョン内の異なる MySQL DB インスタンスに対して異なるバイナリログ形式を指定する場合、DB インスタンスは異なる DB パラメータグループを使用する必要があります。これらのパラメータグループは、さまざまなログ形式を識別します。各 DB インスタンスに適切な DB パラメータグループを割り当てます。

# マルチ AZ DB クラスターの MySQL バイナリログ記録の設定
<a name="USER_Binlog.MultiAZ"></a>

Amazon RDS for MySQL マルチ AZ DB クラスターのバイナリログ記録は、レプリケーション、ポイントインタイムリカバリ、監査をサポートするために、すべてのデータベースの変更を記録します。マルチ AZ DB クラスターのバイナリログ記録では、セカンダリノードをプライマリノードと同期し、アベイラビリティーゾーン間のデータ整合性を確保して、シームレスなフェイルオーバーを可能にします。

バイナリログ記録を最適化するために、Amazon RDS ではバイナリログトランザクション圧縮をサポートしています。これにより、バイナリログのストレージ要件が軽減され、レプリケーション効率が向上します。

**Topics**
+ [マルチ AZ DB クラスターのバイナリログトランザクション圧縮](#USER_Binlog.MultiAZ.compression)
+ [マルチ AZ DB クラスターのバイナリログトランザクション圧縮の設定](#USER_Binlog.MultiAZ.configuring)

## マルチ AZ DB クラスターのバイナリログトランザクション圧縮
<a name="USER_Binlog.MultiAZ.compression"></a>

バイナリログトランザクション圧縮では、zstd アルゴリズムを使用して、バイナリログに保存されるトランザクションデータのサイズを縮小します。有効にすると、MySQL データベースエンジンがトランザクションペイロードを 1 つのイベントに圧縮し、I/O とストレージのオーバーヘッドを最小限に抑えます。この機能によって、データベースのパフォーマンスが向上し、バイナリログのサイズが縮小して、マルチ AZ DB クラスターのログを管理およびレプリケートするためのリソースの使用が最適化されます。

Amazon RDS は、以下のパラメータを使用して RDS for MySQL マルチ AZ DB クラスターのバイナリログトランザクション圧縮を提供します。
+ `binlog_transaction_compression` – 有効にすると (`1`)、データベースエンジンはトランザクションペイロードを圧縮し、単一のイベントとしてバイナリログに書き込みます。これにより、ストレージの使用量と I/O オーバーヘッドが減少します。このパラメータは、デフォルトでは無効になっています。
+ `binlog_transaction_compression_level_zstd` – バイナリログトランザクションの zstd 圧縮レベルを設定します。値を大きくすると圧縮率が上がり、ストレージ要件はさらに軽減されますが、圧縮のための CPU とメモリの使用量が増加します。デフォルト値は 3 で、範囲は 1 ～ 22 です。

これらのパラメータを使用して、ワークロードの特性とリソースの可用性に基づいてバイナリログ圧縮を微調整できます。詳細については、MySQL ドキュメントの「[Binary Log Transaction Compression](https://dev.mysql.com/doc/refman/8.4/en/binary-log-transaction-compression.html)」を参照してください。

バイナリログトランザクション圧縮には、主に次の利点があります。
+ 特にトランザクションが大きいワークロードや書き込みボリュームが多いワークロードでは、圧縮によってバイナリログのサイズが小さくなります。
+ バイナリログが小さいほど、ネットワークと I/O のオーバーヘッドが減少し、レプリケーションのパフォーマンスが向上します。
+ `binlog_transaction_compression_level_zstd` パラメータで、圧縮率とリソース消費のバランスを制御できます。

## マルチ AZ DB クラスターのバイナリログトランザクション圧縮の設定
<a name="USER_Binlog.MultiAZ.configuring"></a>

RDS for MySQL マルチ AZ DB クラスターのバイナリログトランザクション圧縮を設定するには、ワークロードの要件に合わせて関連するクラスターパラメータ設定を変更します。

### コンソール
<a name="USER_Binlog.MultiAZ.configuring-console"></a>

**バイナリログトランザクション圧縮を有効にするには**

1. DB クラスターパラメータグループを変更して、`binlog_transaction_compression` パラメータを `1` に設定します。

1. (オプション) ワークロードの要件とリソースの可用性に基づいて、`binlog_transaction_compression_level_zstd` パラメータの値を調整します。

詳細については、「[ DB クラスターパラメータグループのパラメータの変更](USER_WorkingWithParamGroups.ModifyingCluster.md)」を参照してください。

### AWS CLI
<a name="USER_Binlog.MultiAZ.configuring-cli"></a>

AWS CLI を使用してバイナリログトランザクション圧縮を設定するには、[modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) コマンドを使用します。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name your-cluster-parameter-group \
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```
Windows の場合:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name your-cluster-parameter-group ^
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```

### RDS API
<a name="USER_Binlog.MultiAZ.configuring-api"></a>

Amazon RDS API を使用してバイナリログトランザクション圧縮を設定するには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) オペレーションを使用します。

# MySQL バイナリログにアクセスする
<a name="USER_LogAccess.MySQL.Binarylog"></a>

mysqlbinlog ユーティリティを使用して、RDS for MySQL DB インスタンスからバイナリログをダウンロードまたはストリーミングできます。バイナリログはローカルコンピュータにダウンロードされ、mysql ユーティリティを使用してログの再生などの操作を実行できます。mysqlbinlog ユーティリティの使用の詳細については、MySQL ドキュメントの「[バイナリログファイルのバックアップのための mysqlbinlog の使用](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog-backup.html)」を参照してください。

Amazon RDS インスタンスに対して mysqlbinlog ユーティリティを実行するには、以下のオプションを使用します。
+ `--read-from-remote-server` – 必須。
+ `--host` - インスタンスのエンドポイントからの DNS 名。
+ `--port` - インスタンスによって使用されるポート。
+ `--user` – `REPLICATION SLAVE` アクセス許可を付与された MySQL ユーザー。
+ `--password` - MySQL ユーザーのパスワード。パスワード値を省略省略した場合、ユーティリティによってパスワードの入力を求められます。
+ `--raw` — バイナリ形式のファイルをダウンロードします。
+ `--result-file` - raw 出力を受け取るローカルファイル。
+ `--stop-never` — バイナリログファイルをストリーミングします。
+ `--verbose` — `ROW` binlog 形式を使用するとき、このオプションを含めると、行イベントが疑似 SQL ステートメントとして表示されます。`--verbose` オプションの詳細については、MySQL ドキュメントの「[mysqlbinlog row event display](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog-row-events.html)」(mysqlbinlog の行イベントの表示) を参照してください。
+ 1 つ以上のバイナリログファイルの名前を指定します。使用可能なログのリストを取得するには、SQL コマンド `SHOW BINARY LOGS` を使用します。

mysqlbinlog のオプションの詳細については、MySQL ドキュメントの「[mysqlbinlog - バイナリログファイルを処理するためのユーティリティ](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html)」を参照してください。

以下の例では、mysqlbinlog ユーティリティの使用方法を示します。

Linux、macOS、Unix の場合:

```
mysqlbinlog \
    --read-from-remote-server \
    --host=MySQLInstance1.cg034hpkmmjt.region.rds.amazonaws.com \
    --port=3306  \
    --user ReplUser \
    --password \
    --raw \
    --verbose \
    --result-file=/tmp/ \
    binlog.00098
```

Windows の場合:

```
mysqlbinlog ^
    --read-from-remote-server ^
    --host=MySQLInstance1.cg034hpkmmjt.region.rds.amazonaws.com ^
    --port=3306  ^
    --user ReplUser ^
    --password ^
    --raw ^
    --verbose ^
    --result-file=/tmp/ ^
    binlog.00098
```

mysqlbinlog ユーティリティがバイナリログにアクセスするには、バイナリログが DB インスタンスで利用可能な状態である必要があります。可用性を確保するには、[mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) ストアドプロシージャを使用して、ログをダウンロードできる十分な期間を指定します。この設定を行わないと、Amazon RDS はバイナリログをできるだけ早く消去するため、mysqlbinlog ユーティリティが取得するバイナリログにギャップが生じます。

以下の例では、保持期間を 1 日に設定しています。

```
call mysql.rds_set_configuration('binlog retention hours', 24);
```

現在の設定を表示するには、[mysql.rds\$1show\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_show_configuration) ストアドプロシージャを使用します。

```
call mysql.rds_show_configuration;
```

# Amazon RDS for Oracle データベースのログファイル
<a name="USER_LogAccess.Concepts.Oracle"></a>

Amazon RDS コンソールまたは API を使用して、Oracle のアラートログ、監査ファイル、トレースファイルにアクセスできます。ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。

提供される Oracle の監査ファイルは、スタンダードの Oracle 監査ファイルです。Amazon RDS は、Oracle のきめ細かな監査 (FGA) 機能をサポートしています。ただし、ログアクセスは、`SYS.FGA_LOG$` テーブルに保存された FGA イベントと `DBA_FGA_AUDIT_TRAIL` ビューからアクセス可能な FGA イベントへのアクセスを提供しません。

DB インスタンスの使用可能な Oracle ログファイルを一覧表示する [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) API オペレーションでは、`MaxRecords` パラメータが無視され、最大 1,000 件のレコードが返されます。この呼び出しは、ミリ秒単位の POSIX 日付として `LastWritten` を返します。

**Topics**
+ [保持期間スケジュール](#USER_LogAccess.Concepts.Oracle.Retention)
+ [Oracle トレースファイルを使用する](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)
+ [Amazon CloudWatch Logs への Oracle ログの発行](#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [アラートログとリスナーログへのアクセス](#USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog)

## 保持期間スケジュール
<a name="USER_LogAccess.Concepts.Oracle.Retention"></a>

Oracle データベースエンジンは、ログファイルが非常に大きくなるとローテーションする場合があります。監査ファイルまたはトレースファイルを保持するには、まずダウンロードします。ファイルをローカルに保存すると、Amazon RDS ストレージコストが削減され、データ用の領域が増えます。

次の表は、Amazon RDS における Oracle のアラートログ、監査ファイル、トレースファイルの保持スケジュールを示しています。


****  

| ログタイプ | 保持期間スケジュール | 
| --- | --- | 
|  アラートログ  |   テキストアラートログは、Amazon RDS による管理の 30 日の保持で毎日ローテーションされます。XML アラートのログは 7 日間以上保存されます。`ALERTLOG` ビューを使用してこのログにアクセスできます。  | 
|  監査ファイル  |   監査ファイルのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過した監査ファイルを削除する場合があります。  | 
|  トレースファイル  |  トレースファイルのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過したトレースファイルを削除する場合があります。  | 
|  リスナーログ  |   リスナーログのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過したリスナーログを削除する場合があります。  | 

**注記**  
監査ファイルとトレースファイルは同じ保持設定を共有します。

## Oracle トレースファイルを使用する
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles"></a>

トレース ファイルを作成、更新、アクセス、削除する Amazon RDS の手順の説明を以下に示します。

**Topics**
+ [ファイルのリスト化](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest)
+ [トレースファイルとトレースセッションを生成する](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating)
+ [トレースファイルを取得する](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving)
+ [トレースファイルを消去する](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging)

### ファイルのリスト化
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest"></a>

2 つのうちいずれかの手順を使用して、`background_dump_dest` パスのあらゆるファイルへのアクセスを許可できます。初期の手順では、`background_dump_dest` 内の最新のファイルのリストをすべて含むビューを更新します。

```
1. EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;
```

ビューが更新されたら、以下のビューを照会して結果にアクセスします。

```
1. SELECT * FROM rdsadmin.tracefile_listing;
```

2 つ目の方法では、`FROM table` を使用して、非リレーショナルデータを表のような形式でストリーミングし、データベースディレクトリの内容を一覧表示します。

```
1. SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'));
```

以下のクエリでは、ログファイルのテキストを表示しています。

```
1. SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));
```

リードレプリカで、`V$DATABASE.DB_UNIQUE_NAME` をクエリして BDUMP ディレクトリの名前を取得します。一意の名前が `DATABASE_B` の場合、BDUMP ディレクトリは `BDUMP_B` です。以下の例では、レプリカの BDUMP 名をクエリし、この名前を使用して `alert_DATABASE.log.2020-06-23` の内容をクエリします。

```
1. SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL;
2. 
3. BDUMP_VARIABLE
4. --------------
5. BDUMP_B
6. 
7. SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));
```

### トレースファイルとトレースセッションを生成する
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating"></a>

`ALTER SESSION` には制限がないことから、Oracle でトレースファイルを生成するための多くのスタンダード的な方法は、Amazon RDS DB インスタンスでも使用できます。以下に、より高度なアクセス許可の必要なトレースファイル用の手順を示します。


****  

|  Oracle での方法  |  Amazon RDS方法 | 
| --- | --- | 
|  `oradebug hanganalyze 3 `  |  `EXEC rdsadmin.manage_tracefiles.hanganalyze; `  | 
|  `oradebug dump systemstate 266 `  |  `EXEC rdsadmin.manage_tracefiles.dump_systemstate;`  | 

Amazon RDS の Oracle DB インスタンスに接続する個々のセッションをトレースするには、複数の方法を使用できます。セッションのトレースを有効にするには、`DBMS_SESSION` や `DBMS_MONITOR` など、Oracle が提供する PL/SQL パッケージのサブプログラムを実行できます。詳細については、Oracle ドキュメントの「[Enabling Tracing for a Session](https://docs.oracle.com/database/121/TGSQL/tgsql_trace.htm#GUID-F872D6F9-E015-481F-80F6-8A7036A6AD29)」を参照してください。

### トレースファイルを取得する
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving"></a>

Amazon RDS で管理される外部テーブルのスタンダード的な SQL クエリを使用して、`background_dump_dest` 内の任意のトレースファイルを取得できます。この方法を使用するには、このテーブルの場所として特定のトレースファイルを設定するプロシージャを実行する必要があります。

例えば、前述の `rdsadmin.tracefile_listing` ビューを使用して、システムのすべてのトレースファイルを一覧表示できます。その後、以下のプロシージャを使用して、目的のトレースファイルを参照するように `tracefile_table` ビューを設定できます。

```
1. EXEC rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');
```

以下の例では、外部テーブルを最新のスキーマで作成し、このテーブルの場所として特定のファイルを設定しています。内容は、SQL クエリを使用してローカルファイルに取得できます。

```
1. SPOOL /tmp/tracefile.txt
2. SELECT * FROM tracefile_table;
3. SPOOL OFF;
```

### トレースファイルを消去する
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging"></a>

トレースファイルが蓄積されて、ディスク領域を消費することがあります。Amazon RDS では、7 日を経過すると、トレースファイルはデフォルトで消去され、ログファイルは消去されます。`show_configuration` プロシージャを使用してトレースファイルの保持期間を表示および設定できます。設定の結果を表示できるように、コマンド `SET SERVEROUTPUT ON` を実行する必要があります。

以下の例では、現在のトレースファイルの保持期間を表示し、新しいトレースファイルの保持期間を設定しています。

```
 1. # Show the current tracefile retention
 2. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
 3. NAME:tracefile retention
 4. VALUE:10080
 5. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
 6. 		
 7. # Set the tracefile retention to 24 hours:
 8. SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440);
 9. SQL> commit;
10. 
11. #show the new tracefile retention
12. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
13. NAME:tracefile retention
14. VALUE:1440
15. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
```

定期的な消去プロセスに加えて、`background_dump_dest` から手動でファイルを削除することもできます。以下の例では、5 分を経過したすべてのファイルを消去しています。

```
EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);
```

特定のパターンと一致するすべてのファイルを消去することもできます (そうする場合は .trc などのファイル拡張子を含めないでください)。次の例は、`SCHPOC1_ora_5935` で始まるすべてのファイルを消去する方法を示しています。

```
1. EXEC rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');
```

## Amazon CloudWatch Logs への Oracle ログの発行
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs"></a>

RDS for Oracle DB インスタンスを設定して、ログデータを Amazon CloudWatch Logs のロググループに発行することができます。CloudWatch Logs を使用すると、ログデータの分析や、CloudWatch を使用したアラームの作成、メトリクスの表示を行うことができます。CloudWatch Logs を使用して、耐久性の高いストレージにログレコードを格納できます。

Amazon RDS は、Oracle データベースログを、ロググループの別のデータストリーミングとしてそれぞれ発行します。例えば、エクスポート機能を設定して、監査ログを作成すると、監査データは、`/aws/rds/instance/my_instance/audit` ロググループの監査ログストリーミングに保存されます。次の表は、RDS for Oracle が Amazon CloudWatch Logs にログを発行するための要件をまとめたものです。


| ログ名 | 要件 | デフォルト | 
| --- | --- | --- | 
|  アラートログ  |  なし。このログを無効にすることはできません。  |  有効  | 
|  トレースログ  |  `trace_enabled` パラメータを `TRUE` に設定するか、デフォルトのままにします。  |  `TRUE`  | 
|  監査ログ  |  `audit_trail` パラメータを次のいずれかの許可された値に設定します。 <pre>{ none | os | db [, extended] | xml [, extended] }</pre>  |  `none`  | 
|  リスナーログ  |  なし。このログを無効にすることはできません。  |  有効  | 
|  Oracle Management Agent ログ  |  なし。このログを無効にすることはできません。  |  有効  | 

この Oracle Management Agent ログは、次の表に示すロググループで構成されています。


****  

| ログ名 | CloudWatch ロググループ | 
| --- | --- | 
| emctl.log | oemagent-emctl | 
| emdctlj.log | oemagent-emdctlj | 
| gcagent.log | oemagent-gcagent | 
| gcagent\$1errors.log | oemagent-gcagent-errors | 
| emagent.nohup | oemagent-emagent-nohup | 
| secure.log | oemagent-secure | 

詳細については、Oracle ドキュメントの「[Management Agent ログとトレースファイルの検索](https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.4/emadm/locating-management-agent-log-and-trace-files1.html#GUID-9C710D78-6AA4-42E4-83CD-47B5FF4892DF)」を参照してください。

### コンソール
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.console"></a>

**AWS マネジメントコンソール から CloudWatch Logs に Oracle DB ログを公開するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択し、変更する DB インスタンスを選択します。

1. [**Modify**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

### AWS CLI
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.CLI"></a>

Oracle ログを発行するには、以下のパラメータを指定して [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを使用します。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下のコマンドを使用して Oracle ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
次の例では、CloudWatch Logs の発行を有効にした Oracle DB インスタンスを作成します。`--cloudwatch-logs-export-configuration` 値は、JSON 形式の文字列の配列です。この文字列は `alert`、`audit`、`listener` および `trace` の任意の組み合わせです。  
Linux、macOS、Unix の場合:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \
    --db-instance-class db.m5.large \
    --allocated-storage 20 \
    --engine oracle-ee \
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 \
    --license-model bring-your-own-license \
    --master-username myadmin \
    --manage-master-user-password
```
Windows の場合:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration trace alert audit listener oemagent ^
    --db-instance-class db.m5.large ^
    --allocated-storage 20 ^
    --engine oracle-ee ^
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 ^
    --license-model bring-your-own-license ^
    --master-username myadmin ^
    --manage-master-user-password
```

**Example**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の Oracle DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、値は `alert`、`audit`、`listener`、および `trace` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener","oemagent"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\",\"oemagent\"
```

**Example**  
次の例では、CloudWatch Logs への監査およびリスナーログファイルの発行が無効になるよう既存の Oracle DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `DisableLogTypes` であり、値は `alert`、`audit`、`listener`、および `trace` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'
```
Windows の場合:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"
```

### RDS API
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.API"></a>

Oracle DB ログは、RDS API を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) アクションを呼び出せます。
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注記**  
`CloudwatchLogsExportConfiguration` パラメータへの変更は常に DB インスタンスに即時適用されます。それで、`ApplyImmediately` パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで Oracle ログを発行することもできます。
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

実行する RDS オペレーションに応じて、他のパラメータが必要となる場合があります。

## アラートログとリスナーログへのアクセス
<a name="USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog"></a>

Amazon RDS コンソールを使用してアラートログを表示できます。次の SQL ステートメントを使用することもできます。

```
1. SELECT message_text FROM alertlog;
```

Amazon CloudWatch Logs を使用してリスナーログにアクセスします。

**注記**  
Oracle では、アラートログとリスナーログは 10 MB を超えるとローテーションされます。その時点で、Amazon RDS のビューからは使用できなくなります。

# RDS for PostgreSQL データベースログファイル
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

次の種類の ログファイルをモニタリングできます。
+ PostgreSQL ログ
+ アップグレードログ
+ IAM データベース認証エラーログ
**注記**  
IAM データベース認証エラーログを有効にするには、まず RDS for PostgreSQL DB インスタンスの IAM データベース認証を有効にする必要があります。IAM データベース認証の有効化の詳細については、「[IAM データベース認証の有効化と無効化](UsingWithRDS.IAMDBAuth.Enabling.md)」を参照してください。

 RDS for PostgreSQL では、データベースアクティビティをデフォルトの PostgreSQL ログファイルに記録します。オンプレミスの PostgreSQL DB インスタンスの場合、これらのメッセージは `log/postgresql.log` にローカルに保存されます。、RDS for PostgreSQL DB インスタンスの場合、ログファイルは Amazon RDS インスタンスにあります。これらのログには、AWS マネジメントコンソール 経由でアクセスすることもできます。ここでは、ログを表示またはダウンロードできます。デフォルトのロギングレベルは、ログインの失敗、致命的なサーバーエラー、デッドロック、およびクエリエラーをキャプチャします。

ファイルベースのデータベースログの表示、ダウンロード、モニタリングの方法の詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。PostgreSQL ログの詳細については、「[Amazon RDS および Aurora PostgreSQL ログの操作: パート 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)」および「[Amazon RDS および Aurora PostgreSQL ログの操作: パート 2](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/)」を参照してください。

このトピックで説明した標準の PostgreSQL ログに加えて、 RDS for PostgreSQL は PostgreSQL 監査エクステンション (`pgAudit`) もサポートしています。規制対象の業界や政府機関のほとんどは、法的要件に準拠するために、データに加えられた変更の監査ログまたは監査証跡を維持する必要があります。pgAudit のインストールおよび使用の詳細については、「[pgAudit を使用してデータベースのアクティビティを記録する](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)」を参照してください。

**Topics**
+ [RDS for PostgreSQL でのログ記録のパラメータ](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [Amazon CloudWatch Logs への PostgreSQL ログの発行](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# RDS for PostgreSQL でのログ記録のパラメータ
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

さまざまなパラメータを変更することで、 RDS for PostgreSQL DB インスタンスのロギング動作をカスタマイズできます。次のテーブルには、ログの保存期間、ログをローテーションするタイミング、ログを CSV (カンマ区切り値) 形式で出力するかどうかなどに影響するパラメータがあります。他の設定の中でも、STDERR に送信されたテキスト出力を確認できます。変更可能なパラメータの設定を変更するには、のカスタム DB パラメータグループを使用します。RDS for PostgreSQL インスタンス。詳細については、「[Amazon RDS DB インスタンスの DB パラメータグループ](USER_WorkingWithDBInstanceParamGroups.md)」を参照してください。


| パラメータ  | デフォルト | 説明  | 
| --- | --- | --- | 
| log\$1destination | stderr | ログの出力形式を設定します。デフォルトは `stderr` ですが、設定に `csvlog` を追加してカンマ区切り値 (CSV) を指定することもできます。詳細については、「[ログの送信先の設定 (`stderr`、`csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)」を参照してください。 | 
| log\$1filename |  postgresql.log.%Y-%m-%d-%H  | ログファイル名のパターンを指定します。デフォルトに加えて、このパラメータはファイル名パターンの `postgresql.log.%Y-%m-%d` と `postgresql.log.%Y-%m-%d-%H%M` をサポートします。 | 
| log\$1line\$1prefix | %t:%r:%u@%d:[%p]: | 時間 (%t)、リモート ホスト (%r)、ユーザー (%u)、データベース (%d)、およびプロセス ID (%p) を記録するために、`stderr` に書き込まれる各ログ行のプレフィックスを定義します。 | 
| log\$1rotation\$1age | 60 | ログファイルが自動的にローテーションされるまでの分数。この値は、1～1,440 分の間で変更できます。詳細については、「[ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)」を参照してください。 | 
| log\$1rotation\$1size | – | ログが自動的にローテーションされるサイズ (kB)。ログは `log_rotation_age` パラメータに基づいてローテーションされるため、デフォルトではこのパラメータは使用されません。詳細については[ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)を参照してください。 | 
| rds.log\$1retention\$1period | 4320 | 指定した時間 (分) より古い PostgreSQL ログは削除されます。デフォルト値の 4,320 分では、3 日後にログファイルが削除されます。詳細については、「[ログの保持期間の設定](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)」を参照してください。 | 

アプリケーションの問題を特定するには、ログでクエリの失敗、ログインの失敗、デッドロック、および致命的なサーバーエラーを探すことができます。例えば、従来のアプリケーションを Oracle から Amazon RDS PostgreSQL に変換したが、一部のクエリは正しく変換されなかったとします。これらの誤った形式のクエリは、ログにエラーメッセージを生成し、ログから問題を特定することができます。クエリログの詳細については、「[ RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)」参照してください。

次のトピックでは、PostgreSQL ログの基本的な詳細を制御するさまざまなパラメータの設定方法について説明します。

**Topics**
+ [ログの保持期間の設定](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)
+ [ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)
+ [ログの送信先の設定 (`stderr`、`csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)
+ [log\$1line\$1prefix パラメータの概要](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)

## ログの保持期間の設定
<a name="USER_LogAccess.Concepts.PostgreSQL.log_retention_period"></a>

`rds.log_retention_period` パラメータは、 RDS for PostgreSQL DB インスタンスがログファイルを保持する期間を指定します。デフォルトの設定は 3 日 (4,320 分) ですが、この値を 1 日 (1,440 分) から 7 日 (10,080 分) までの任意の時間に設定できます。 RDS for PostgreSQL DB インスタンスに、一定期間ログファイルを保持するのに十分なストレージがあることを確認してください。

ログを定期的に Amazon CloudWatch Logs に公開することをお勧めします。これにより、ログが から削除された後も、システムデータを表示して分析できます。RDS for PostgreSQL DB インスタンス。詳細については、「[Amazon CloudWatch Logs への PostgreSQL ログの発行](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)」を参照してください。

## ログファイルのローテーションの設定
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

 Amazon RDS は、デフォルトで 1 時間ごとに新しいログファイルを作成します。このタイミングは、`log_rotation_age` パラメータによって制御されます。このパラメータのデフォルト値は 60 (分) ですが、1 分から 24 時間 (1,440 分) までの任意の時間に設定できます。ローテーションの時期になると、新しい個別のログファイルが作成されます。ファイルには、`log_filename` パラメータによって指定されたパターンに従って名前が付けられます。

ログファイルは、`log_rotation_size` パラメータで指定されたサイズに従ってローテーションすることもできます。このパラメータは、ログが指定されたサイズ (キロバイト単位) に達したときにローテーションされるように指定します。RDS for PostgreSQL DB インスタンスの場合、`log_rotation_size` は未設定です。つまり、値が指定されていません。ただし、このパラメータは 0～2,097,151 KB (キロバイト) の範囲で設定できます。

ログファイル名は、`log_filename` パラメータで指定されたファイル名のパターンに基づきます。このパラメータに使用できる設定は次のとおりです。
+ `postgresql.log.%Y-%m-%d` — ログファイル名のデフォルトフォーマット。年、月、日をログファイルの名前に含めます。
+ `postgresql.log.%Y-%m-%d-%H` — ログファイル名形式に時間を含めます。

詳細については、PostgreSQL ドキュメントの「[https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE)」と「[https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE)」を参照してください。

## ログの送信先の設定 (`stderr`、`csvlog`)
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format"></a>

デフォルトでは、 Amazon RDS PostgreSQL はスタンダードエラー (stderr) 形式でログを生成します。この形式は、`log_destination` パラメータのデフォルト設定です。各メッセージには、`log_line_prefix` パラメータで指定したパターンを使用してプレフィックスが付きます。詳細については、「[log\$1line\$1prefix パラメータの概要](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)」を参照してください。

 RDS for PostgreSQL は、`csvlog` フォーマットでログを生成することもできます。`csvlog` は、ログデータをカンマ区切り値 (CSV) データとして分析する場合に便利です。例えば、`log_fdw` 拡張機能を使用して外部テーブルとしてログを使用するとします。`stderr` ログファイルについて作成された外部テーブルには、ログイベントデータを含む 1 つの列が含まれます。`log_destination` パラメータに `csvlog` を追加すると、外部テーブルの複数の列の区切りを含む CSV 形式のログファイルが取得できます。ログをより簡単に分類して分析できるようになりました。`log_fdw` を `csvlog` を指定して使用する方法については、「[SQL を使用した DB ログのアクセスのための log\$1fdw 拡張機能の使用](CHAP_PostgreSQL.Extensions.log_fdw.md)」を参照してください。

このパラメータに `csvlog` を指定する場合、`stderr` ファイル と `csvlog` ファイルの両方が生成されることに注意してください。ログのストレージと回転率に影響する `rds.log_retention_period` とその他の設定を考慮し、ログによって消費されるストレージに注意してください。`stderr` と `csvlog` を使用すると、ログで消費されるストレージが 2 倍以上になります。

`log_destination` に `csvlog` を追加して、`stderr` だけに戻す場合は、パラメータをリセットする必要があります。そのためには、Amazon RDS コンソールを開いて、インスタンスのカスタム DB パラメータグループを開きます。`log_destination` パラメータを選択し、**[Edit parameter]** (パラメータの編集) を選択し、**[Reset]** (リセット) を選択します。

ログの設定の詳細については、「[Amazon RDS および Aurora PostgreSQL ログの操作:パート 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)」を参照してください。

## log\$1line\$1prefix パラメータの概要
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix"></a>

`stderr` ログ形式では、各ログメッセージの先頭に `log_line_prefix` パラメータで指定した詳細が追加されます。デフォルト値は次のとおりです。

```
%t:%r:%u@%d:[%p]:t
```

Aurora PostgreSQL バージョン 16 以降では、以下を選択することもできます。

```
%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a
```

stderr に送信される各ログエントリには、選択した値に応じて次の情報が含まれます。
+ `%t` – ミリ秒なしのログエントリの時刻
+ `%m` – ミリ秒付きのログエントリの時刻
+  `%r` – リモートホストのアドレス。
+  `%u@%d` – ユーザー名 @ データベース名。
+  `[%p]` – プロセス ID (使用可能な場合)。
+  `%l` – セッションあたりのログ行数 
+  `%e` – SQL エラーコード 
+  `%s` – プロセス開始時間 
+  `%v` – 仮想トランザクション ID 
+  `%x` – トランザクション ID 
+  `%c` – セッション ID 
+  `%q` – セッション以外のターミネータ 
+  `%a` – アプリケーション名 

# RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

次のテーブルに示すパラメータの一部を設定することで、クエリ、ロック待ちのクエリ、チェックポイント、その他多くの詳細を含む、データベースアクティビティに関するより詳細な情報を収集できます。このトピックでは、クエリのログ記録に焦点を当てます。


| パラメータ  | デフォルト | 説明  | 
| --- | --- | --- | 
| log\$1connections | – | 成功した各接続をログに記録します。 | 
| log\$1disconnections | – | 各セッションの終了とその期間を記録します。 | 
| log\$1checkpoints | 1 | 各チェックポイントをログに記録します。 | 
| log\$1lock\$1waits | – | 長期間にわたるロックの待機をログに記録します。デフォルトでは、このパラメータは設定されていません。 | 
| log\$1min\$1duration\$1sample | – | (ms) ステートメントのサンプリングに関する最小実行時間を設定します。この値を超えるとステートメントがサンプリングされてログに記録されます。サンプルサイズは、log\$1statement\$1sample\$1rate パラメータを使用して設定されます。 | 
| log\$1min\$1duration\$1statement | – | 少なくとも指定された時間以上実行された SQL ステートメントはすべてログに記録されます。デフォルトでは、このパラメータは設定されていません。このパラメータを有効にすると、最適化されていないクエリを見つけるために役立ちます。 | 
| log\$1statement | – | ログに記録するステートメントのタイプを設定します。デフォルトでは、このパラメータは設定されていませんが、`all`、`ddl`、または `mod` に変更して、ログに記録する SQL ステートメントのタイプを指定できます。このパラメータの `none` 以外を指定する場合は、ログファイル内のパスワードが漏洩しないように、追加の手順も実行する必要があります。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。 | 
| log\$1statement\$1sample\$1rate | – | `log_min_duration_sample` で指定された時間を超えるステートメントがログに記録される割合で、0.0 から 1.0 の間の浮動小数点値で表されます。 | 
| log\$1statement\$1stats | – | 累積処理のパフォーマンスの統計情報をサーバーログに書き込みます。 | 

## ログ記録を使用してパフォーマンスの低いクエリを見つける
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.using"></a>

SQL ステートメントとクエリをログに記録すると、パフォーマンスの悪いクエリを見つけるのに役立ちます。この機能を有効にするには、このセクションで説明されているとおり、`log_statement` および `log_min_duration` パラメータの設定を変更します。 RDS for PostgreSQL DB インスタンス、のクエリログ記録を有効にする前に、ログにパスワードが漏洩する可能性と、そのリスクを軽減する方法について知っておく必要があります。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。

`log_statement` および `log_min_duration` のパラメータに関する参照情報は、以下を参照してください。log\$1statement

このパラメータは、ログに送信する SQL ステートメントのタイプを指定します。デフォルト値は `none` です。このパラメータを `all`、`ddl`、または `mod` に変更する場合は、ログにパスワードが漏洩するリスクを軽減するために、必ず推奨アクションを適用してください。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。

**すべて**  
すべてのステートメントを記録します。この設定はデバッグ目的での使用を推奨します。

**ddl**  
CREATE、ALTER、DROP などのすべてのデータ定義言語 (DDL) ステートメントをログに記録します。

**mod**  
データを変更する DDL ステートメントと、INSERT、UPDATE、DELETE などのデータ操作言語 (DML) ステートメントをすべてログに記録します。

**なし**  
SQL ステートメントはログに記録されません。ログにパスワードが漏れてしまうリスクを避けるため、この設定をお勧めします。log\$1min\$1duration\$1statement

少なくとも指定された時間以上実行された SQL ステートメントはすべてログに記録されます。デフォルトでは、このパラメータは設定されていません。このパラメータを有効にすると、最適化されていないクエリを見つけるために役立ちます。

**–1–2147483647**  
ステートメントがログに記録される実行時間のミリ秒 (ms) 数。

**クエリのログ記録を設定するには**

これらのステップは、RDS for PostgreSQL DB インスタンスはカスタム DB パラメータグループを使用します。

1. `log_statement` パラメータを `all` に設定します。以下の例に示しているのは、このパラメータ設定で `postgresql.log` ファイルに書き込まれる情報です。

   ```
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats:
   ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed
   ! [0.025146 s user, 0.000000 s system total]
   ! 36644 kB max resident size
   ! 0/8 [0/8] filesystem blocks in/out
   ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps
   ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent
   ! 19/0 [27/0] voluntary/involuntary context switches
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC;
   ----------------------- END OF LOG ----------------------
   ```

1. `log_min_duration_statement` パラメータを設定します。以下の例に示しているのは、パラメータを `postgresql.log` に設定したときに `1` ファイルに書き込まれる情報です。

   `log_min_duration_statement` パラメータで指定された期間を超えるクエリはログに記録されます。例を以下に示します。 RDS for PostgreSQL DB インスタンスのログファイルは Amazon RDS コンソールで表示できます。

   ```
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments;
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms
   2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time
   2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB
   ----------------------- END OF LOG ----------------------
   ```

### クエリのログ記録を使用する際のパスワード漏洩リスクの軽減
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk"></a>

パスワードが漏洩しないように、`log_statement` を `none` に設定したままにしておくことをお勧めします。`log_statement` を `all`、`ddl`、または `mod` に設定した場合は、次の手順を 1 つ以上実行することをお勧めします。
+ クライアントの場合は、機密情報を暗号化します。詳細については、PostgreSQL ドキュメントの「[暗号化オプション](https://www.postgresql.org/docs/current/encryption-options.html)」を参照してください。`CREATE` および `ALTER` ステートメントの `ENCRYPTED` (および`UNENCRYPTED`) オプションを使用してください。詳細については、PostgreSQL のドキュメントの「[CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)」を参照してください。
+  RDS for PostgreSQL DB インスタンスでは 、PostgreSQL 監査 (pgAudit) 拡張機能をセットアップして使用します。この拡張機能は、ログに送信された CREATE および ALTER ステートメントの機密情報を編集します。詳細については、「[pgAudit を使用してデータベースのアクティビティを記録する](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)」を参照してください。
+ CloudWatch ログへのアクセスを制限します。
+ IAM など、より強力な認証メカニズムを使用してください。

## Amazon CloudWatch Logs への PostgreSQL ログの発行
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

PostgreSQL ログレコードを高い耐久性の高いのストレージに保存するには、Amazon CloudWatch Logs を使用できます。CloudWatch Logs では、ログデータのリアルタイム分析を実行したり、CloudWatch を使用してメトリクスを表示したり、アラームを作成したりすることもできます。例えば、`log_statement` を `ddl` に設定した場合、DDL ステートメントが実行されるたびに警告するアラームを設定できます。RDS for PostgreSQL DB インスタンスの作成プロセス中に PostgreSQL が CloudWatch Logs のログをアップロードするように選択できます。その時点でログをアップロードしないことを選択した場合は、後でインスタンスを変更してその時点からログのアップロードを開始できます。つまり、既存のログはアップロードされません。変更した RDS for PostgreSQL DB インスタンスで作成された新しいログのみがアップロードされます。

現在の PostgreSQL バージョンで利用可能なすべての RDS は、CloudWatch Logs へのログファイルの発行をサポートしています。詳細については、「*Amazon RDS for PostgreSQL リリースノート*」の「[Amazon RDS for PostgreSQL の更新](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)」を参照してください。

CloudWatch Logs を操作するには、ログデータをロググループに発行するように PostgreSQL DB インスタンス用 RDS を設定します。

RDS for PostgreSQL では、次のログの種類を CloudWatch Logs に発行できます。
+ PostgreSQL ログ
+ アップグレードログ 
+ IAM データベース認証エラーログ

設定が完了すると、Amazon RDS はログイベントを CloudWatch ロググループのログストリーミングに発行します。例えば、PostgreSQL ログデータは `/aws/rds/instance/my_instance/postgresql` ロググループに保存されます。ログを表示するには、[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) で CloudWatch コンソールを開きます。

### コンソール
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CON"></a>

**コンソールを使用して CloudWatch Logs に PostgreSQL ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 変更する DB インスタンスを選択してから、[**変更**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

   [**ログのエクスポート**] セクションは、CloudWatch Logs への発行をサポートしている PostgreSQL バージョンでのみ使用できます。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

### AWS CLI
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CLI"></a>

PostgreSQL ログは、AWS CLI を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを呼び出せます。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下の CLI コマンドを呼び出すことで PostgreSQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

以下のオプションを使用して、これらの CLI コマンドの 1 つを実行します。
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

実行する CLI コマンドに応じて、他のオプションが必要となる場合があります。

**Example CloudWatch Logs にログを発行するようにインスタンスを変更する**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の PostgreSQL DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、値は `postgresql` と `upgrade` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
```
Windows の場合:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
```

**Example CloudWatch Logs にログを発行するようにインスタンスを作成する**  
次の例では、PostgreSQL DB インスタンスを作成してログファイルを CloudWatch Logs に発行します。`--enable-cloudwatch-logs-exports` 値は、JSON 形式の文字列の配列です。この文字列は `postgresql` と `upgrade` の任意の組み合わせです。  
Linux、macOS、Unix の場合:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \
4.     --db-instance-class db.m4.large \
5.     --engine postgres
```
Windows の場合:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine postgres
```

### RDS API
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.API"></a>

PostgreSQL ログは、RDS API を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) アクションを呼び出せます。
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注記**  
`CloudwatchLogsExportConfiguration` パラメータへの変更は常に DB インスタンスに即時適用されます。それで、`ApplyImmediately` パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで PostgreSQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

実行するオペレーションに応じて、他のパラメータが必要となる場合があります。

 