

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 監控 Amazon RDS 日誌檔案
<a name="USER_LogAccess"></a>

每個 RDS 資料庫引擎都會產生日誌，供您存取以進行稽核和疑難排解。日誌檔類型視您的資料庫引擎而定。

您可以使用 AWS 管理主控台、AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 來存取資料庫執行個體的資料庫日誌。您無法檢視、觀看或下載交易日誌。

**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 資料庫執行個體的日誌檔案清單，請重新開啟執行個體以檢視清單。

## 主控台
<a name="USER_LogAccess.CON"></a>

**檢視資料庫日誌檔案**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。

1. 向下捲動至 **Logs (日誌)** 區段。

1. (選用) 輸入搜尋詞來篩選結果。

1. 選擇您想要檢視的日誌，然後選擇 **View (檢視)**。

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

若要檢視資料庫執行個體的可用執行個體日誌檔案，請使用 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) 命令。

下列範例會回傳名為 `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>

若要列出資料庫執行個體的可用資料庫日誌檔案，請使用 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. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。

1. 向下捲動至 **Logs (日誌)** 區段。

1. 在 **Logs (日誌)** 區段中，選擇您想要下載的日誌旁的按鈕，然後選擇 **Download (下載)**。

1. 開啟提供之連結的內容 (右鍵) 功能表，然後選擇 **Save Link As** (另存連結為)。輸入您要儲存日誌檔案的位置，然後選擇 **Save (儲存)**。  
![\[檢視日誌檔案\]](http://docs.aws.amazon.com/zh_tw/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. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。  
![\[選擇 Logs & events (日誌與事件) 標籤\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_logsEvents.png)

1. 在 **Logs (日誌)** 區段中，選擇日誌檔案，然後選擇 **Watch (監看)**。  
![\[選擇日誌\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch.png)

   RDS 會顯示日誌檔的尾端，如下列 MySQL 範例所示。  
![\[日誌檔的尾部\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch_content.png)

# 將資料庫日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Procedural.UploadtoCloudWatch"></a>

在內部部署資料庫中，資料庫日誌位於檔案系統上。Amazon RDS 不提供對資料庫執行個體的檔案系統上資料庫日誌的主機存取。因此，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 持續將您的資料庫執行個體日誌串流至日誌群組。例如，您所發佈每種類型的日誌都有一個日誌群組 `/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 資料庫引擎都支援自己的日誌集。若要瞭解資料庫引擎適用的選項，請檢閱下列主題：
+ [將 Db2 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.Db2.md#USER_LogAccess.Db2.PublishtoCloudWatchLogs)
+ [將 MariaDB 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [將 MySQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [將 Oracle 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)
+ [將 SQL Server 日誌發佈至 Amazon CloudWatch Logs](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. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 執行下列任何一項：
   + 選擇 **Create database** (建立資料庫)。
   + 從清單中，選擇您的資料庫，然後選擇 **Modify** (修改)。

1. 在 **Logs exports** (日誌匯出) 中，選擇要發佈的日誌。

   下列範例指定稽核日誌、錯誤日誌、一般日誌、，以及 RDS for MySQL 資料庫執行個體的慢速查詢日誌。  
![\[選擇要發佈到 CloudWatch logs 的日誌類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/AddCWLogs.png)

## 在 CloudWatch Logs 中搜尋和篩選您的日誌
<a name="accessing-logs-in-cloudwatch"></a>

您可以使用 CloudWatch Logs 主控台搜尋與指定條件相符的日誌項目。您可以透過導向 CloudWatch Logs 主控台的 RDS 主控台存取日誌，或從 CloudWatch Logs 主控台直接存取。

**若要使用 RDS 主控台搜尋 RDS 日誌**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇一個資料庫執行個體。

1. 選擇 **Configuration (組態)**。

1. 在 **Published logs** (發佈日誌) 下方，選擇您要檢視的資料庫日誌。

**使用 CloudWatch Logs 主控台搜尋 RDS 日誌**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Log groups** (日誌群組)。

1. 在篩選方塊中，輸入 **/aws/rds**。

1. 針對 **Log Groups** (日誌群組)，輸入包含要搜尋之日誌串流的日誌群組名稱。

1. 對於 **Log Streams** (日誌串流)，選擇要搜尋的日誌串流名稱。

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 提供允許存取資料庫執行個體日誌檔案的 REST 端點。若您需要編寫應用程式來串流 Amazon RDS 日誌檔案內容，此操作非常有幫助。

語法是：

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

下列是必要參數：
+ `DBInstanceIdentifier` — 含有您想要下載之日誌檔案的資料庫執行個體名稱。
+ `LogFileName` — 要下載的日誌檔案名稱。

回應包括要求之日誌檔案的內容，做為串流形式。

下列範例下載名為 *log/ERROR.6* 的日誌檔案供名為 *sample-sql* 的資料庫執行個體使用，位於 *us-west-2* 區域中。

```
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
```

若您指定不存在的資料庫執行個體，回應會包含下列錯誤：
+ `DBInstanceNotFound` —`DBInstanceIdentifier` 不代表現有的資料庫執行個體。(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)
+ [將 Db2 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Db2.PublishtoCloudWatchLogs)

## 保留排程
<a name="USER_LogAccess.Concepts.Db2.Retention"></a>

不論您的資料庫執行個體何時重新啟動，日誌檔案都會每日輪換。下列為 Amazon RDS 上的 RDS for Db2 日誌的保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  診斷日誌  |  Db2 會在執行個體層級組態的保留設定之外刪除日誌。Amazon RDS 會將 `diagsize` 參數設定為 1000。  | 
|  通知日誌  |  Db2 會在執行個體層級組態的保留設定之外刪除日誌。Amazon RDS 會將 `diagsize` 參數設定為 1000。  | 

## 將 Db2 日誌發佈至 Amazon CloudWatch Logs
<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 即時處理日誌資料。如需詳細資訊，請參閱《適用於 SQL 應用程式的 Amazon Managed Service 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>

**從 將 RDS for Db2 日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

   您可以選擇 **diag.log**、 **notify.log** 或兩者。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

### 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 RDS for Db2 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值是 JSON 字串陣列，可包含 `diag.log`、`notify.log` 或兩者。  
針對 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**  
下列範例修改現有的 RDS for Db2 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--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**  
下列範例修改現有的 RDS for Db2 資料庫執行個體，以停用將診斷日誌檔案發佈至 CloudWatch Logs。`--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 錯誤記錄，您可以透過在資料庫參數群組中設定參數，來產生慢查詢記錄和一般記錄。Amazon RDS 會輪換所有 MariaDB 記錄檔案；每種類型的間隔如下。

您可以透過 Amazon RDS 主控台、Amazon RDS API、Amazon RDS CLI 或 AWS SDK 來直接監控 MariaDB 記錄。您可以將日誌指向主要資料庫中的資料庫資料表並查詢該資料表，以存取 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` 檔案接著會於每個小時輪換，而過去 24 小時間產生的每小時檔案將會保留。每個日誌檔案的產生時間 (UTC 時區) 皆會附加於檔案名稱中。日誌檔案也有時間戳記，可協助您判定日誌項目寫入的時間。

MariaDB 只會在啟動、關機和發生錯誤時寫入錯誤日誌。資料庫執行個體可在未寫入新項目到錯誤日誌的情況下持續執行數小時或數日。若您沒有看到最近的項目，是因為伺服器未遇到需寫入日誌項目的錯誤。

# 存取 MariaDB 慢查詢日誌及一般日誌
<a name="USER_LogAccess.MariaDB.Generallog"></a>

您可在資料庫參數群組中設定參數，將 MariaDB 慢查詢日誌與一般日誌寫入至檔案或資料庫表格。如需建立和修改資料庫參數群組的詳細資訊，請參閱[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** – 同時將一般與慢查詢日誌寫入檔案系統中。日誌檔案每小時輪換。
  + **NONE**– 停用日誌記錄。

記錄啟用時，Amazon RDS 輪換表格日誌或以規律間隔來刪除日誌檔案。此方法為預防措施，可降低大型日誌檔封鎖資料庫使用或影響效能的可能性。`FILE` 與 `TABLE`​ 日誌記錄運用以下方式執行輪換與刪除：
+ 當 `FILE` 日誌記錄啟用時，每個小時將檢視日誌檔，而早於 24 小時前的日誌檔將會刪除。在部分情況下，刪除後剩餘的總日誌檔大小可能超過資料庫執行個體配得之空間的 2% 閾值。在這些情況中，最大的日誌檔將被刪除，直到日誌檔大小不再超過閾值。
+ 當 `TABLE` 日誌記錄啟用時，在某些情況下，日誌資料表每 24 小時會輪換一次。在表格日誌使用的空間超過所配置儲存空間的 20% 時，就會發生輪換。如果所有日誌合併後的大小超過 10 GB 時，也會發生這種情況。若資料庫執行個體使用的空間總量高於資料庫執行個體配得之儲存空間的 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 會在 Amazon RDS 中同時記錄 `TABLE` 與 `FILE` 日誌輪換，並傳送通知給您。

若要從 Amazon RDS 主控台、Amazon RDS API、Amazon RDS CLI 或 AWS SDK 使用記錄，請將 `log_output` 參數設為 FILE。如同 MariaDB 錯誤日誌，這些日誌檔案也會每小時輪換一次。前 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 資料庫執行個體，以將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以執行日誌資料的即時分析，並使用 CloudWatch 來建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高耐用性的儲存裝置中。

Amazon RDS 將每個 MariaDB 資料庫日誌發佈為日誌群組中獨立的資料庫流。例如，假設您設定匯出函數來包含慢查詢日誌。然後，慢查詢資料會存放在 `/aws/rds/instance/my_instance/slowquery` 日誌群組的慢查詢日誌串流中。

錯誤日誌預設為啟用。下表摘要說明其他 MariaDB 日誌的要求。


| 日誌 | 要求 | 
| --- | --- | 
|  稽核日誌  |  資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。  | 
|  一般日誌  |  資料庫執行個體必須使用含有參數設定 `general_log = 1` 的自訂參數群組，以啟用一般日誌。  | 
|  慢查詢日誌  |  資料庫執行個體必須使用含有參數設定 `slow_query_log = 1` 或 `log_slow_query = 1` 的自訂參數群組，以啟用慢查詢日誌。  | 
|  IAM 資料庫身分驗證錯誤日誌  |  您必須透過建立或修改資料庫執行個體來啟用資料庫執行個體的日誌類型 `iam-db-auth-error`。  | 
|  記錄輸出  |  資料庫執行個體必須使用含有參數設定 `log_output = FILE` 的自訂參數群組，以將日誌寫入到檔案系統，並發佈到 CloudWatch Logs。  | 

## 主控台
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CON"></a>

**從主控台發佈 MariaDB 日誌到 CloudWatch Logs**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

## 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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 命令：
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

視您執行的 AWS CLI 命令而定，可能需要其他選項。

**Example**  
下列範例修改現有的 MariaDB 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--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 資料庫執行個體並將日誌檔案發佈至 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>

您可以使用 RDS API 來發佈 MariaDB 日誌。您可以搭配下列參數呼叫 [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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 操作：
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

視您執行的 AWS CLI 命令而定，可能需要其他參數。

# MariaDB 的日誌輪換和保留
<a name="USER_LogAccess.MariaDB.LogFileSize"></a>

記錄啟用時，Amazon RDS 輪換表格日誌或以規律間隔來刪除日誌檔案。此方法為預防措施，可降低大型日誌檔封鎖資料庫使用或影響效能的可能性。

MariaDB 慢查詢日誌、錯誤日誌以及一般日誌檔案大小限制為不超過資料庫執行個體配得之儲存空間的 2%。為保持此閾值，日誌會每小時輪換，而超過 24 小時的日誌檔案將會移除。若在移除舊日誌檔案後總日誌檔案大小仍超過閾值，將會從最大的日誌檔案開始刪除，直到日誌檔案大小不再超過閾值為止。

Amazon RDS 會輪換大於 10 MB 的 IAM 資料庫身分驗證錯誤日誌檔案。Amazon RDS 會移除超過五天或大於 100 MB 的 IAM 資料庫身分驗證錯誤日誌檔案。

# 管理表格式 MariaDB 日誌
<a name="Appendix.MariaDB.CommonDBATasks.Logs"></a>

您可以將一般與慢查詢日誌導向至資料庫執行個體上的表格。若要這樣做，請建立資料庫參數群組，並將 `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;
```

 為完全移除舊資料並重新取得磁碟空間，請連續呼叫兩次適用的程序。

# 設定 MariaDB 二進位記錄
<a name="USER_LogAccess.MariaDB.BinaryFormat"></a>

*二進位日誌*是一組日誌檔案，其中包含對 MariaDB 伺服器執行個體所做資料修改的相關資訊。二進位日誌包含的資訊如下：
+ 描述資料庫變更的事件 (如建立資料表或修改資料列)
+ 有關更新了資料的每個陳述式持續時間的資訊
+ 本應更新資料但未更新的陳述式事件

二進位日誌會記錄複寫過程中傳送的陳述式。某些復原操作也需要這些日誌。如需詳細資訊，請參閱 MariaDB 文件中的[二進位日誌](https://mariadb.com/kb/en/binary-log/)。

自動備份功能會決定 MariaDB 要開啟還是關閉二進位日誌記錄功能。您有下列選項：

開啟二進位日誌記錄功能  
將備份保留期設定為正的非零值。

關閉二進位日誌記錄功能  
將備份保留期間設定為 0。

如需詳細資訊，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

Amazon RDS 上的 MariaDB 支援*基於列*、*基於陳述式*和*混合式*二進位日誌記錄格式。預設二進位日誌格式為*混合式*。如需不同 MariaDB 二進位日誌格式的詳細資訊，請參閱 MariaDB 文件中的[二進位日誌格式](http://mariadb.com/kb/en/mariadb/binary-log-formats/)。

如果您打算使用複寫，二進位記錄格式很重要。這是因為其決定資料變更的記錄，而此記錄會記錄在來源中並傳送到複寫目標。如需有關複寫時各種二進位日誌記錄格式的優缺點的資訊，請參閱 MySQL 文件中的[基於陳述式和基於列的複寫的優缺點](https://dev.mysql.com/doc/refman/5.7/en/replication-sbr-rbr.html)。

**重要**  
將二進位日誌格式設為行形式可能導致非常大的二進位日誌檔案。大型二進位日誌檔會減少資料庫執行個體可用的儲存空間數量。它們還會增加執行資料庫執行個體還原操作的時間量。  
基於陳述式的複寫可能會造成來源資料庫執行個體與僅供讀取複本不一致。如需詳細資訊，請參閱 MariaDB 文件中的[在基於陳述式的複寫中不安全的陳述式](https://mariadb.com/kb/en/library/unsafe-statements-for-statement-based-replication/)。  
啟用二進位記錄會增加資料庫執行個體的寫入磁碟 I/O 操作次數。您可以使用 `WriteIOPS` CloudWatch 指標來監控 IOPS 使用情況。

**設定 MariaDB 二進位日誌格式**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇您要修改的資料庫執行個體所使用的參數群組。

   您無法修改預設參數群組。如果資料庫執行個體使用預設參數群組，請建立新的參數群組，並將它與資料庫執行個體建立關聯。

   如需資料庫參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 針對 **Parameter group actions (參數群組動作)**，選擇 **Edit (編輯)**。

1. 將 `binlog_format` 參數設為您選擇的二進位日誌記錄格式 (**ROW**、**STATEMENT** 或 **MIXED**)。

   您可以將資料庫執行個體的備份保留期間設定為零來關閉二進位記錄，但這會停用每日自動備份。停用自動備份會關閉或停用 `log_bin` 工作階段變數。這會停用 RDS for MariaDB 資料庫執行個體上的二進位記錄，進而在資料庫中將 `binlog_format` 工作階段變數重設為 `ROW` 的預設值。我們建議您不要停用備份。如需**備份保留期間**設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

1. 選擇 **Save changes (儲存變更)** 來儲存對資料庫參數群組的更新。

由於 `binlog_format` 參數在 RDS for MariaDB 中是動態的，因此您不需要將資料庫執行個體重新開機即可套用變更。

**重要**  
變更資料庫參數群組會影響使用該參數群組的所有資料庫執行個體。如果您想要為 AWS 區域中的不同 MariaDB 資料庫執行個體指定不同的二進位記錄格式，則資料庫執行個體必須使用不同的資料庫參數群組。這些參數群組會識別不同的記錄格式。將適當的資料庫參數群組指派給每個資料庫執行個體。

# 存取 MariaDB 二進位日誌
<a name="USER_LogAccess.MariaDB.Binarylog"></a>

您可以使用 mysqlbinlog 公用程式，自 MariaDB 資料庫執行個體下載文字格式的二進位日誌。二進位日誌已下載到您的本機電腦。如需使用 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`：指定接收輸出的本機檔案。
+ 指定一個或一個以上的二進位日誌檔案名稱。若要取得可用日誌清單，請使用 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` 預存程序。指定具有足夠時間供您下載日誌的期間。設定保留期間之後，請監控資料庫執行個體的儲存體用量，確定保留的二進位日誌沒有佔用太多儲存空間。

下列範例將保留期間設定為 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 資料庫執行個體中，您可以使用會導致行事件之含有 SQL 查詢副本的 `Annotate_rows` 事件來對行事件做註釋。此方法提供類似的功能，可啟用 RDS for MySQL 資料庫執行個體上的 `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>

不論您的資料庫執行個體何時重新啟動，日誌檔案都會每日輪換。下列為 Amazon RDS 上的 Microsoft SQL Server 日誌保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  錯誤日誌  |  最多會保留 30 個錯誤記錄。Amazon RDS 可能會刪除超過 7 日的錯誤記錄。  | 
|  代理程式日誌  |  最多會保留 10 個代理程式記錄。Amazon RDS 可能會刪除超過 7 日的代理程式記錄。  | 
|  追蹤檔案  |  追蹤檔案會依據您資料庫執行個體的追蹤檔案保留期間進行保存。預設的追蹤檔案保留期間為 7 天。若要修改您資料庫執行個體的追蹤檔案保留期間，請參閱 [設定追蹤和傾印檔案的保留期間](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)。  | 
|  傾印檔案  |  傾印檔案會依據您資料庫執行個體的傾印檔案保留期間進行保存。預設的傾印檔案保留期間為 7 天。若要修改您資料庫執行個體的傾印檔案保留期間，請參閱 [設定追蹤和傾印檔案的保留期間](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)。

## 將 SQL Server 日誌發佈至 Amazon CloudWatch Logs
<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 即時處理日誌資料。如需詳細資訊，請參閱《適用於 SQL 應用程式的 Amazon Managed Service 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` 日誌群組中。

對於多可用區域資料庫執行個體，Amazon RDS 會在日誌群組中以兩個獨立的串流形式發佈資料庫日誌。例如，如果您發佈錯誤日誌，錯誤資料會分別存放在錯誤日誌串流 `/aws/rds/instance/my_instance.node1/error` 和 `/aws/rds/instance/my_instance.node2/error` 中。日誌串流在容錯移轉期間不會變更，而且每個節點的錯誤日誌串流可能包含來自主要或次要執行個體的錯誤日誌。使用多可用區域時，會自動為 `/aws/rds/instance/my_instance/rds-events` 建立日誌串流，以存放資料庫執行個體容錯移轉等事件資料。

**注意**  
預設不會將 SQL Server 日誌發佈至 CloudWatch Logs。不支援發佈追蹤檔案和傾印檔案。所有區域都支援將 SQL Server 日誌發佈至 CloudWatch Logs。

### 主控台
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.console"></a>

**從 將 SQL Server 資料庫日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

   您可以選擇 **Agent log (代理程式日誌)**、**Error log (錯誤日誌)**，或兩者皆選。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

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

若要發佈 SQL Server 日誌，您可搭配下列參數使用 [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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 SQL Server 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值是 JSON 字串陣列，可包含 `error`、`agent` 或兩者。  
針對 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**  
下列範例修改現有的 SQL Server 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--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 資料庫執行個體，以停用將代理程式日誌檔案發佈至 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>

您可以透過 Amazon RDS 主控台、Amazon RDS API AWS CLI或 AWS SDKs 直接監控 MySQL 日誌。您可以將日誌指向主要資料庫中的資料庫表並查詢該表格，藉此存取 MySQL 日誌。您可以使用 mysqlbinlog 公用程式來下載二進位日誌。

如需關於檢視、下載與查看資料庫日誌檔案的資訊，請參閱[監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。

**Topics**
+ [RDS for MySQL 資料庫日誌概觀](USER_LogAccess.MySQL.LogFileSize.md)
+ [將 MySQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [將 MySQL日誌輸出傳送至資料表](Appendix.MySQL.CommonDBATasks.Logs.md)
+ [為單一可用區資料庫設定 RDS for MySQL 二進位記錄](USER_LogAccess.MySQL.BinaryFormat.md)
+ [為多可用區域資料庫叢集設定 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 錯誤日誌。透過在資料庫參數群組中設定參數，產生慢查詢日誌和一般日誌。

**Topics**
+ [RDS for MySQL 錯誤日誌](#USER_LogAccess.MySQL.Errorlog)
+ [RDS for MySQL 慢查詢與一般查詢](#USER_LogAccess.MySQL.Generallog)
+ [MySQL 稽核日誌](#USER_LogAccess.MySQL.Auditlog)
+ [MySQL RDS 的日誌輪換和保留](#USER_LogAccess.MySQL.LogFileSize.retention)
+ [重做日誌的大小限制](#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 才會寫入錯誤日誌。資料庫執行個體可在未寫入新項目到錯誤日誌的情況下持續執行數小時或數日。若您沒有看到最近的項目，這是因為伺服器未遇到需寫入日誌項目的錯誤。

根據設計，系統會篩選錯誤日誌，以僅顯示未預期的事件，例如錯誤。不過，錯誤日誌還包含一些其他未顯示的資料庫資訊，例如查詢進度。因此即使沒有任何實際錯誤，但錯誤日誌的大小可能會因為在進行的資料庫活動而增加。雖然您可能會在 中看到錯誤日誌的特定位元組或 KB 大小 AWS 管理主控台，但當您下載它們時，它們可能會有 0 個位元組。

RDS for MySQL 每 5 分鐘將 `mysql-error.log` 寫入磁碟一次。這會將日誌的內容追加到 `mysql-error-running.log`。

RDS for MySQL 每小時會輪換 `mysql-error-running.log` 檔案。它會保留最近兩週產生的日誌。

**注意**  
Amazon RDS 和 Aurora 的日誌保留期間不同。

## RDS for MySQL 慢查詢與一般查詢
<a name="USER_LogAccess.MySQL.Generallog"></a>

您可以將 RDS for MySQL 慢查詢日誌與一般日誌寫入至檔案或資料庫表格。若要這樣做，請在您的資料庫參數群組中設定參數。如需建立和修改資料庫參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。您必須先設定這些參數，才能在 Amazon RDS 主控台或使用 Amazon RDS API、Amazon RDS CLI 或 AWS SDKs來檢視慢查詢日誌或一般日誌。

您可以使用清單中的參數來控制 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>

若要存取稽核記錄，資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。如需詳細資訊，請參閱[MariaDB 稽核外掛程式支援 MySQL](Appendix.MySQL.Options.AuditPlugin.md)。

## MySQL RDS 的日誌輪換和保留
<a name="USER_LogAccess.MySQL.LogFileSize.retention"></a>

記錄啟用時，Amazon RDS 輪換表格日誌或以規律間隔來刪除日誌檔案。此方法為預防措施，可降低大型日誌檔封鎖資料庫使用或影響效能的可能性。RDS for MySQL 會處理輪流與刪除，如下所示：
+ MySQL 慢查詢日誌、錯誤日誌以及一般日誌檔案大小限制為不超過資料庫執行個體所配置之儲存空間的 2%。為保持此閾值，日誌會每小時自動輪換。MySQL 會移除兩週以上的日誌檔。若在移除舊日誌檔案後總日誌檔案大小仍超過閾值，將會從最舊的日誌檔案開始刪除，直到日誌檔案大小不再超過閾值為止。
+ 啟用 `FILE` 日誌記錄時，系統會每小時檢查日誌檔案，並刪除超過兩週的日誌檔案。在部分情況下，刪除後剩餘的總日誌檔大小可能超過資料庫執行個體配得之空間的 2% 閾值。於這些狀況中，最舊的日誌檔將遭刪除，直到日誌檔大小不再超過閾值。
+ 當 `TABLE` 日誌記錄啟用時，在某些情況下，日誌資料表每 24 小時會輪換一次。在表格日誌使用的空間超過所配置儲存空間的 20% 時，就會發生輪換。如果所有日誌合併後的大小超過 10 GB 時，也會發生這種情況。若資料庫執行個體使用的空間總量高於資料庫執行個體配得之儲存空間的 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 SDKs日誌，請將 `log_output` 參數設定為 FILE。如同 MySQL 錯誤日誌，這些日誌檔案也會每小時輪換。系統會保留在過去兩週內產生的日誌檔案。請注意，Amazon RDS 和 Aurora​ 的保留期間不同。

## 重做日誌的大小限制
<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)。如需詳細資訊，請參閱[設定 Amazon RDS for MySQL 參數的最佳實務，第一部分：效能相關參數](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_redo_log_capacity` 參數，而不是 `innodb_log_file_size` 參數。`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 中設定緩衝集區大小和重做日誌容量](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md)。

# 將 MySQL 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs"></a>

您可以設定 MySQL 資料庫執行個體，以將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以執行日誌資料的即時分析，並使用 CloudWatch 來建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高耐用性的儲存裝置中。

Amazon RDS 將每個 MySQL 資料庫日誌發佈為日誌群組中獨立的資料庫流。例如，若您設定匯出功能以包含慢查詢日誌，則慢查詢資料會存放在 `/aws/rds/instance/my_instance/slowquery` 日誌群組內的慢查詢日誌串流中。

錯誤日誌預設為啟用。下表摘要說明其他 MySQL 日誌的要求。


| 日誌 | 要求 | 
| --- | --- | 
|  稽核日誌  |  資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。  | 
|  一般日誌  |  資料庫執行個體必須使用含有參數設定 `general_log = 1` 的自訂參數群組，以啟用一般日誌。  | 
|  慢查詢日誌  |  資料庫執行個體必須使用含有參數設定 `slow_query_log = 1` 的自訂參數群組，以啟用慢查詢日誌。  | 
|  IAM 資料庫身分驗證錯誤日誌  |  您必須透過建立或修改資料庫執行個體來啟用資料庫執行個體的日誌類型 `iam-db-auth-error`。  | 
|  記錄輸出  |  資料庫執行個體必須使用含有參數設定 `log_output = FILE` 的自訂參數群組，以將日誌寫入到檔案系統，並發佈到 CloudWatch Logs。  | 

## 主控台
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.CON"></a>

**使用主控台將 MySQL 日誌發佈到 CloudWatch Logs**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

## 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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 命令並指定下列選項：
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

視您執行的 AWS CLI 命令而定，可能需要其他選項。

**Example**  
下列範例修改現有的 MySQL 資料庫執行個體後，即可將日誌檔案發佈至 CloudWatch Logs。`--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 資料庫執行個體並將日誌檔案發佈至 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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 操作：
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

視您執行的 AWS CLI 命令而定，可能需要其他參數。

# 將 MySQL日誌輸出傳送至資料表
<a name="Appendix.MySQL.CommonDBATasks.Logs"></a>

您可以建立資料庫參數群組，並將 `log_output` 伺服器參數設為 `TABLE`，將一般與慢查詢日誌導向資料庫執行個體上的表格。一般查詢會記錄於 `mysql.general_log` 表格，而慢查詢會記錄至 `mysql.slow_log` 表格。您可以查詢表格來存取日誌資訊。啟用此日誌記錄會增加寫入至資料庫的資料總數量，可能造成效能降低。

一般日誌和慢查詢日誌根據預設將會停用。為啟用日誌記錄至表格，您也必須將 `general_log` 與 `slow_query_log` 伺服器參數設為 `1`。

日誌表格將持續擴增，直到重設適用參數為 `0` 時，各日誌記錄活動才會關閉。大量資料通常會隨時間累積，可能會佔用配得之儲存空間的大量比例。Amazon RDS Amazon RDS ​不允許截斷記錄資料表，但是您可以移動其中的內容。輪換表格可將其內容儲存至備份表格，然後建立新的空白日誌表格。您可以透過以下命令列程序來手動輪換日誌表格，命令提示由 `PROMPT>` 表示：

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

為完全移除舊資料並重新取得磁碟空間，請連續呼叫兩次適用的程序。

# 為單一可用區資料庫設定 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。

如需詳細資訊，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

Amazon RDS 上的 MySQL 支援 *row-based* (列型)、*statement-based* (陳述式型)，和 *mixed* (混和式) 二進位記錄格式。除非需要特定的 binlog 格式，否則我們建議混合使用。如需各種 MySQL 二進位日誌格式的詳細資訊，請參閱 MySQL 說明文件中的[二進位記錄格式](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)。

如果您打算使用複寫，二進位日誌記錄格式很重要，因為這決定資料變更的記錄，而此記錄會記錄在來源中並傳送到複寫目標。如需有關複寫時各種二進位日誌記錄格式的優缺點的資訊，請參閱 MySQL 文件中的[基於陳述式和基於列的複寫的優缺點](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)。

**重要**  
使用 MySQL 8.0.34 時，MySQL 已棄用 `binlog_format` 參數。在較新的 MySQL 版本中，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`。  
基於陳述式的複寫可能會造成來源資料庫執行個體與僅供讀取複本不一致。如需詳細資訊，請參閱 MySQL 文件中的[二進位日誌記錄中安全和不安全陳述式的判定](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)。  
啟用二進位記錄會增加資料庫執行個體的寫入磁碟 I/O 操作次數。您可以使用 `WriteIOPS``` CloudWatch 指標來監控 IOPS 使用情況。

**設定 MySQL 二進位記錄格式**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇您想要修改的與資料庫執行個體相關聯的資料庫參數群組。

   您無法修改預設參數群組。如果資料庫執行個體使用預設參數群組，請建立新的參數群組，並將它與資料庫執行個體建立關聯。

   如需參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 在**動作**中選擇**編輯**。

1. 將 `binlog_format` 參數設為您選擇的二進位日誌記錄格式 (`ROW`、`STATEMENT` 或 `MIXED`)。

   您可以將資料庫執行個體的備份保留期間設定為零來關閉二進位記錄，但這會停用每日自動備份。停用自動備份會關閉或停用 `log_bin` 工作階段變數。這會停用 RDS for MySQL 資料庫執行個體上的二進位記錄，進而在資料庫中將 `binlog_format` 工作階段變數重設為 `ROW` 的預設值。我們建議您不要停用備份。如需**備份保留期間**設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

1. 選擇 **Save changes (儲存變更)** 來儲存對資料庫參數群組的更新。

由於 `binlog_format` 參數在 RDS for MySQL 中是動態的，因此您不需要將資料庫執行個體重新開機即可套用變更。(請注意，在 Aurora MySQL 中，此參數是靜態的。如需詳細資訊，請參閱[設定 Aurora MySQL 二進位記錄](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)。)

**重要**  
變更資料庫參數群組會影響使用該參數群組的所有資料庫執行個體。如果您想要為 AWS 區域中的不同 MySQL 資料庫執行個體指定不同的二進位記錄格式，則資料庫執行個體必須使用不同的資料庫參數群組。這些參數群組會識別不同的記錄格式。將適當的資料庫參數群組指派給每個資料庫執行個體。

# 為多可用區域資料庫叢集設定 MySQL 二進位記錄
<a name="USER_Binlog.MultiAZ"></a>

Amazon RDS for MySQL 多可用區域資料庫叢集中的二進位記錄會記錄所有資料庫變更，以支援複寫、時間點復原和稽核。在多可用區域資料庫叢集中，二進位日誌會同步次要節點與主節點，確保可用區域之間的資料一致性，並啟用無縫容錯移轉。

為了最佳化二進位記錄，Amazon RDS 支援二進位日誌交易壓縮，可減少二進位日誌的儲存要求並改善複寫效率。

**Topics**
+ [多可用區域資料庫叢集的二進位日誌交易壓縮](#USER_Binlog.MultiAZ.compression)
+ [設定多可用區域資料庫叢集的二進位日誌交易壓縮](#USER_Binlog.MultiAZ.configuring)

## 多可用區域資料庫叢集的二進位日誌交易壓縮
<a name="USER_Binlog.MultiAZ.compression"></a>

二進位日誌交易壓縮使用 zstd 演算法來減少二進位日誌中存放的交易資料大小。啟用時，MySQL 資料庫引擎會將交易承載壓縮為單一事件，將 I/O 和儲存額外負荷降至最低。此功能可改善資料庫效能、減少二進位日誌大小，並最佳化在多可用區域資料庫叢集中管理和複寫日誌的資源使用。

Amazon RDS 透過下列參數為 RDS for MySQL 多可用區域資料庫叢集提供二進位日誌交易壓縮：
+ `binlog_transaction_compression` – 啟用時 (`1`)，資料庫引擎會壓縮交易承載，並將其做為單一事件寫入二進位日誌。這可減少儲存用量和 I/O 額外負荷。參數預設為停用。
+ `binlog_transaction_compression_level_zstd` – 設定二進位日誌交易的 zstd 壓縮層級。較高的值會增加壓縮比率，進一步減少儲存要求，但增加壓縮的 CPU 和記憶體用量。預設值為 3，範圍為 1-22。

這些參數可讓您根據工作負載特性和資源可用性微調二進位日誌壓縮。如需詳細資訊，請參閱 MySQL 文件中的[二進位日誌交易壓縮](https://dev.mysql.com/doc/refman/8.4/en/binary-log-transaction-compression.html)。

二進位日誌交易壓縮具有下列主要優點：
+ 壓縮會減少二進位日誌的大小，特別是對於具有大型交易或大量寫入的工作負載。
+ 較小的二進位日誌可減少網路和 I/O 額外負荷，增強複寫效能。
+ `binlog_transaction_compression_level_zstd` 參數提供壓縮比率與資源耗用量之間的權衡控制。

## 設定多可用區域資料庫叢集的二進位日誌交易壓縮
<a name="USER_Binlog.MultiAZ.configuring"></a>

若要設定 RDS for MySQL 多可用區域資料庫叢集的二進位日誌交易壓縮，請修改相關的叢集參數設定，以符合您的工作負載要求。

### 主控台
<a name="USER_Binlog.MultiAZ.configuring-console"></a>

**啟用二進位日誌交易壓縮**

1. 修改資料庫叢集參數群組，將 `binlog_transaction_compression` 參數設定為 `1`。

1. (選用) 根據您的工作負載要求和資源可用性調整 `binlog_transaction_compression_level_zstd` 參數的值。

如需詳細資訊，請參閱[在 中修改資料庫叢集參數群組中的參數](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 資料庫執行個體下載或串流二進位日誌。二進位日誌會下載至您的本機電腦，您可於此執行動作，例如使用 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` – 接收列輸出的本機檔案。
+ `--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)。
+ 指定一個或一個以上的二進位日誌檔案名稱。若要取得可用日誌清單，請使用 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 公用程式才能存取它們。若要確保其可用性，請使用 [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$` 資料表且可由 `DBA_FGA_AUDIT_TRAIL` 檢視的 FGA 事件，將無法由日誌存取。

[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) API 操作會列出可供資料庫執行個體使用的 Oracle 日誌檔案，並忽略 `MaxRecords` 參數，且最多回傳 1,000 筆記錄。呼叫傳回 `LastWritten` 作為 POSIX 日期，以毫秒為單位。

**Topics**
+ [保留排程](#USER_LogAccess.Concepts.Oracle.Retention)
+ [使用 Oracle 追蹤檔案](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)
+ [將 Oracle 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [存取警示日誌和接聽程式日誌](#USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog)

## 保留排程
<a name="USER_LogAccess.Concepts.Oracle.Retention"></a>

若日誌檔案變得過大，Oracle 資料庫引擎可能會輪換這些檔案。欲保留稽核或追蹤檔案，請下載這些檔案。如果您將檔案儲存在本機，可降低 Amazon RDS 的儲存成本，並為資料騰出更多可用空間。

下列資料表顯示 Amazon RDS 上的 Oracle 提醒日誌、稽核檔案及追蹤檔案的保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  提醒日誌  |   文字提醒記錄每日輪換，其 30 天的保留則由 Amazon RDS 管理。XML 提醒日誌至少會保留七天。您可使用 `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>

您可使用這兩個程序之一來存取 `background_dump_dest` 路徑上的檔案。第一個程序會重新整理畫面，其中內含 `background_dump_dest` 中現有的所有檔案。

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

重新整理畫面後，請查詢下列畫面來存取結果。

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

上述程序的替代做法是使用 `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 資料庫執行個體使用。需要更多存取權限的追蹤檔案，可參考下列程序。


****  

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

您可使用許多標準方法來追蹤連接至 Amazon RDS 中 Oracle 資料庫執行個體的個別工作階段。若要啟用工作階段的追蹤功能，您可以在 Oracle 提供的 PL/SQL 套件中執行子程式，例如 `DBMS_SESSION` 和 `DBMS_MONITOR`。如需詳細資訊，請參閱 Oracle 文件中的[為工作階段啟用追蹤](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` 手動移除檔案。下列範例說明如何清除超過五分鐘的所有檔案。

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

您亦可清除符合特定模式的所有檔案 (如果這樣做，請勿包含副檔名，例如 .trc)。下列範例說明如何清除以 `SCHPOC1_ora_5935` 為開頭的所有檔案。

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

## 將 Oracle 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs"></a>

您可以設定 RDS for Oracle 資料庫執行個體，以將日誌資料發佈至 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>

**從 將 Oracle 資料庫日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

### 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 Oracle 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--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**  
下列範例修改現有的 Oracle 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--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**  
下列範例修改現有的 Oracle 資料庫執行個體，以停止將稽核與接聽程式日誌檔案發佈至 CloudWatch Logs。`--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>

您可以使用 RDS API 來發佈 Oracle 資料庫日誌。您可以使用下列參數來呼叫 [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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 操作：
+ `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 資料庫執行個體啟用 IAM 資料庫身分驗證。如需啟用 IAM 資料庫身分驗證的詳細資訊，請參閱 [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)。

RDS for PostgreSQL 會將資料庫活動記錄到預設的 PostgreSQL 日誌檔。對於內部部署 PostgreSQL 資料庫執行個體，這些訊息會在本機存放於 `log/postgresql.log` 中。對於 RDS for PostgreSQL 資料庫執行個體)，日誌檔可在 Amazon RDS 執行個體上取得。這些日誌也可以透過 存取 AWS 管理主控台，您可以在其中檢視或下載。預設的記錄層級會擷取登入失敗、嚴重的伺服器錯誤、死鎖和查詢失敗。

如需有關如何檢視、下載和監看檔案型資料庫日誌的詳細資訊，請參閱 [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。若要進一步了解 PostgreSQL 日誌，請參閱 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/) (使用 Amazon RDS 和 Aurora PostgreSQL 日誌：第 1 部分) 以及 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 2](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/) (使用 Amazon RDS 和 Aurora PostgreSQL 日誌：第 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 資料庫執行個體的查詢記錄](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# 用於在 RDS for PostgreSQL 中進行記錄的參數
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

您可以修改各種參數，為 RDS for PostgreSQL 資料庫執行個體自訂記錄行為。在下表中，您可以找到影響日誌檔存放時間、何時輪換日誌，以及是否以 CSV (逗號分隔值) 格式輸出日誌。您也可以找到已傳送至 STDERR 的文字輸出，以及其他設定。若要變更可修改之參數的設定，請將自訂資料庫參數群組用於 。RDS for PostgreSQL 執行個體。如需詳細資訊，請參閱 [Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)。


| 參數 | 預設 | Description | 
| --- | --- | --- | 
| 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]: | 定義寫入至 `stderr` 的每個日誌行的字首，以記錄時間 (%t)、遠端主機 (%r)、使用者 (%u)、資料庫 (%d) 和程序 ID (%p)。 | 
| log\$1rotation\$1age | 60 | 日誌檔會多少分鐘後自動轉換。您可以在 1 到 1440 分鐘的範圍內變更此值。如需詳細資訊，請參閱[設定日誌檔案輪換](#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 日誌將遭到刪除。預設值 4320 分鐘將在 3 天後刪除日誌檔案。如需詳細資訊，請參閱[設定日誌保留期間](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)。 | 

如要識別應用程式問題，您可在日誌中尋找查詢失敗、登入失敗、鎖死和致命的伺服器錯誤。例如，假設您已將舊版應用程式從 Oracle 轉換為 Amazon RDS PostgreSQL，但並非所有查詢都已正確轉換。這些格式不正確的查詢會產生您可在日誌中尋找的錯誤訊息，以協助識別問題。如需記錄查詢的詳細資訊，請參閱 [開啟 RDS for PostgreSQL 資料庫執行個體的查詢記錄](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 資料庫執行個體保留其日誌檔的時間長度。預設設定為 3 天 (4,320 分鐘)，但您可以將此值設為 1 天 (1,440 分鐘) 至 7 天 (10,080 分鐘)。請確定您的 RDS for PostgreSQL 資料庫執行個體具有足夠的儲存空間來保留日誌檔一段時間。

我們建議您定期將日誌發佈至 Amazon CloudWatch Logs 中，如此，您便可在日誌從 中移除後的很長時間內檢視並分析系統資料。RDS for PostgreSQL 資料庫執行個體。如需詳細資訊，請參閱 [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)。

## 設定日誌檔案輪換
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

依預設，Amazon RDS 每小時都會建立新的日誌檔。時間由 `log_rotation_age` 參數控制。此參數的預設值為 60 (分鐘)，但您可以將其設為從 1 分鐘至 24 小時 (1,440 分鐘) 的任何時間。在輪換時，會建立一個新的不同日誌檔案。該檔案的命名是依據 `log_filename` 參數所指定的模式。

日誌檔案也可依其大小進行旋轉，如 `log_rotation_size` 參數中所指定。此參數指定當日誌達到指定大小 (以 KB 為單位) 時應輪換日誌。若為 RDS for PostgreSQL 資料庫執行個體，`log_rotation_size` 未設定，即並未指定任何值。不過，您可以設定從 0-2097151 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` 格式產生日誌檔。將日誌資料當作逗號分隔值 (CSV) 進行分析時，`csvlog` 很有用。例如，假設您使用 `log_fdw` 延伸模組，將日誌作為外部資料表處理。在 `stderr` 日誌檔案上建立的外部資料表包含一個具日誌事件資料的單一欄。透過將 `csvlog` 新增至 `log_destination` 參數，您可以取得 CSV 格式的日誌檔，其中包含外部資料表的多個資料欄的分界。您現在可以更輕鬆地排序和分析日誌。如要進一步了解如何使用 `log_fdw` 和 `csvlog`，請參閱 [使用 log\$1fdw 擴充功能存取使用 SQL 的資料庫日誌](CHAP_PostgreSQL.Extensions.log_fdw.md)。

如果您為此參數指定 `csvlog`，請注意會同時產生 `stderr` 和 `csvlog` 檔案。請務必監控日誌所使用的儲存體，同時考慮 `rds.log_retention_period` 及影響日誌儲存體和更換的其他設定。使用 `stderr` 和 `csvlog` 會使日誌所使用的儲存體空間增加一倍以上。

如果您將 `csvlog` 新增至 `log_destination`，並且想要單獨還原為 `stderr`，則需要重設參數。若要這麼做，請開啟 Amazon RDS 主控台，然後您的執行個體開啟自訂資料庫參數群組。選擇 `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 資料庫執行個體的查詢記錄
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

您可以設定下表中列出的一些參數，來收集有關資料庫活動的詳細資訊，包括查詢、等待鎖定的查詢、檢查點，以及許多其他詳細資訊。本主題著重於記錄查詢。


| 參數 | 預設 | Description | 
| --- | --- | --- | 
| log\$1connections | – | 記錄每個成功連線。 | 
| log\$1disconnections | – | 記錄每個工作階段的結束及其持續時間。 | 
| log\$1checkpoints | 1 | 記錄每個檢查點。 | 
| log\$1lock\$1waits | – | 記錄長鎖定等待。根據預設，不會設定此參數。 | 
| log\$1min\$1duration\$1sample | – | (毫秒) 設定執行時間下限，超出此時間就會記錄陳述式樣本。使用 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 資料庫執行個體 開啟查詢記錄之前，您應該注意到日誌檔中可能暴露密碼，以及如何降低風險。如需詳細資訊，請參閱[降低使用查詢記錄時密碼暴露的風險降低密碼暴露風險](#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**  
記錄所有資料定義語言 (DDL) 陳述式，例如 CREATE、ALTER、DROP 等。

**MOD**  
記錄所有 DDL 陳述式和資料操作語言 (DML) 陳述式，例如 INSERT、UPDATE 和 DELETE)，這些陳述式會修改資料。

**無**  
不會記錄任何 SQL 陳述式。建議您使用此設定，以避免在日誌中暴露密碼的風險。log\$1min\$1duration\$1statement

至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設，不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。

**–1–2147483647**  
記錄陳述式之執行時間的毫秒數。

**設定查詢記錄**

這些步驟假設您的 RDS for PostgreSQL 資料庫執行個體使用自訂資料庫參數群組。

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` 參數中所指定持續時間的查詢。下列顯示一個範例。您可以在 Amazon RDS 主控台中檢視 RDS for PostgreSQL 資料庫執行個體的日誌檔。

   ```
   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`，建議您採取下列一或多個步驟。
+ 對於用戶端，請加密敏感資訊。如需的詳細資訊，請參閱 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 資料庫執行個體，請設定並使用 PostgreSQL 稽核 (pgAudit) 擴充功能。此擴充功能會刪減傳送至日誌的 CREATE 和 ALTER 陳述式中的敏感資訊。如需詳細資訊，請參閱[使用 PgAudit 記錄資料庫活動](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)。
+ 限制對 CloudWatch 日誌的存取。
+ 使用更強大的身分驗證機制，例如 IAM。

## 將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

若要將 PostgreSQL 記錄檔記錄儲存在高耐用性的儲存體中，您可以使用 Amazon CloudWatch Logs。使用 CloudWatch Logs，您也可以執行日誌資料的即時分析，並使用 CloudWatch 來檢視指標和建立警示。例如，如果您將 `log_statement` 設定為 `ddl`，您可以設定警示，以便在執行 DDL 陳述式時發出提醒。您可以選擇在建立 RDS for PostgreSQL 資料庫執行個體的過程中將 PostgreSQL 日誌上傳至 CloudWatch Logs。如果您當時選擇不上傳日誌，您可以稍後修改執行個體，從該點開始上傳日誌。換言之，不會上傳現有日誌。只會上傳新的日誌，因為它們是在修改後的 RDS for PostgreSQL 資料庫執行個體上建立的。

所有目前可用的 RDS for PostgreSQL 版本都支援將日誌檔發佈至 CloudWatch Logs。如需詳細資訊，請參閱《Amazon RDS for PostgreSQL 版本備註》** 中的 [Amazon RDS for PostgreSQL 更新](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)。

若要使用 CloudWatch Logs，設定 RDS for PostgreSQL 資料庫執行個體，將日誌資料發佈至日誌群組。

您可以將下列日誌類型發佈到 CloudWatch Logs for RDS for PostgreSQL：
+ 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>

**使用主控台將 PostgreSQL 日誌發佈到 CloudWatch Logs**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要修改的資料庫執行個體，然後選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

   **Log exports (日誌匯出)** 區段僅適用於支援發佈至 CloudWatch Logs 的 PostgreSQL 版本。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

### 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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 命令並指定下列選項：
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

視您執行的 CLI 命令而定，可能需要其他選項。

**Example 修改執行個體將日誌發佈到 CloudWatch Logs**  
下列範例修改現有的 PostgreSQL 資料庫執行個體，將日誌檔案發佈至 CloudWatch Logs。`--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 資料庫執行個體並將日誌檔案發佈至 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>

您可以使用 RDS API 來發佈 PostgreSQL 日誌。您可以使用下列參數來呼叫 [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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 操作：
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

視您執行的操作而定，可能需要其他參數。

 