

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

# 使用 中的一般和慢查詢日誌監控 MySQL 查詢效能 Lightsail
<a name="amazon-lightsail-enabling-mysql-general-and-slow-query-logs"></a>

[一般與慢查詢日誌](amazon-lightsail-viewing-database-logs-and-history.md)在 Amazon Lightsail 中的 MySQL 資料庫預設為停用。藉由更新一些資料庫參數，您就可以啟用這些日誌，並開始收集資料。使用 Lightsail API、 AWS Command Line Interface (AWS CLI) 或 SDKs更新資料庫參數。在本指南中，我們會示範如何使用 AWS CLI 來更新資料庫參數，並啟用一般和慢查詢日誌。我們也會提供額外選項來控制一般與慢查詢日誌以及資料保留的處理方式。

## 先決條件
<a name="prerequisite-to-enable-general-and-slow-query-logs"></a>

如果您尚未安裝和設定 AWS CLI，請先執行這項動作。如需詳細資訊，請參閱[設定 AWS Command Line Interface 以搭配使用 Amazon Lightsail](lightsail-how-to-set-up-and-configure-aws-cli.md)。

## 在 Lightsail 主控台啟用一般與慢查詢日誌
<a name="enable-the-general-and-slow-query-logs"></a>

若要在 Lightsail 主控台啟用一般與慢查詢日誌，您必須以值 `general_log` 更新 `slow_query_log` 和 `1` 資料庫參數，並以 `log_output` 值更新 `FILE` 參數。

**若要在 Lightsail 主控台啟用一般與慢查詢日誌**

1. 開啟終端機或命令提示視窗。

1. 輸入下列命令將 `general_log` 參數更新為值 `1`，此為 true 或啟用。

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=general_log,parameterValue=1,applyMethod=pending-reboot"
   ```

   在命令中：
   + 將 {{DatabaseName}} 取代為您的資料庫名稱。
   + {{}} 具有資料庫 AWS 區域 的區域。

1. 輸入下列命令將 `slow_query_log` 參數更新為值 `1`，此為 true 或啟用。

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=slow_query_log,parameterValue=1,applyMethod=pending-reboot"
   ```

   在命令中：
   + 將 {{DatabaseName}} 取代為您的資料庫名稱。
   + {{}}具有資料庫 AWS 區域 的區域。

1. 輸入下列命令將 `log_output` 參數更新為值 `FILE`，這會將日誌資料寫入系統檔案並使其顯示於 Lightsail 主控台。

   ```
   aws lightsail update-relational-database-parameters --region {{Region}} --relational-database-name {{DatabaseName}} --parameters "parameterName=log_output,parameterValue=FILE,applyMethod=pending-reboot"
   ```

   在命令中：
   + 將 {{DatabaseName}} 取代為您的資料庫名稱。
   + {{}} 具有資料庫 AWS 區域 的區域。

1. 輸入下列命令重新啟動資料庫並使變更生效。

   ```
   aws lightsail reboot-relational-database --region {{Region}} --relational-database-name {{DatabaseName}}
   ```

   在命令中：
   + 將 {{DatabaseName}} 取代為您的資料庫名稱。
   + {{}} 具有資料庫 AWS 區域 的區域。

   此時，資料庫會重新啟動並無法使用。等待幾分鐘，接著登入 [Lightsail 主控台](https://lightsail.aws.amazon.com/)以檢視資料庫的一般和慢查詢日誌。如需詳細資訊，請參閱[在 Amazon Lightsail 中檢視您的資料庫日誌和歷程記錄](amazon-lightsail-viewing-database-logs-and-history.md)。
**注意**  
如需更新資料庫參數的詳細資訊，請參閱[在 Amazon Lightsail 中更新資料庫參數](amazon-lightsail-updating-database-parameters.md)。

## 控制其他資料庫日誌選項
<a name="control-additional-database-log-options"></a>

若要控制 MySQL 一般與慢查詢日誌的其他選項，請更新以下參數：
+ `log_output` — 將此參數設為 `TABLE`。這會將一般查詢寫入 `mysql.general_log` 表格，並將慢查詢寫入 `mysql.slow_log` 表格。您也可以將 `log_output` 參數設定為 `NONE` 以停用日誌記錄。
**注意**  
將 `log_output` 參數設為 `TABLE` 會停用一般與慢查詢日誌資料在 Lightsail 主控台顯示。反之，您必須參閱資料庫的 `mysql.general_log` 和 `mysql.slow_log` 表格以檢視日誌資料。
+ `long_query_time` - 若要避免快速執行查詢記錄於慢查詢日誌中，請為需記錄之最短查詢執行時間指定一個值，以秒為單位。預設為 10 秒，而下限為 0。若 `log_output` 參數設為 `FILE`，您可以指定以微秒解析度為單位的浮點值。若 `log_output` 參數設為 `TABLE`，您必須以秒解析度指定整數值。只有執行時間超過 `long_query_time` 參數值的查詢會記錄。例如，將 `long_query_time` 設為 0.1 可避免記錄任何在 100 毫秒內執行之查詢。
+ `log_queries_not_using_indexes` — 若要將所有不使用索引的查詢記錄於慢查詢日誌中，請設為 1。預設為 0。將會記錄不使用索引的查詢，即使其執行時間低於 `long_query_time` 參數的值。

## 日誌資料保留
<a name="log-data-retention"></a>

記錄啟用時，表格日誌會定期輪換或日誌檔案會定期刪除。此方法為預防措施，可降低大型日誌檔封鎖資料庫使用或影響效能的可能性。當 `log_output` 參數設為 `FILE` 或 `TABLE`，記錄會以下列方式處理：
+ 當 `FILE` 日誌記錄啟用時，每個小時將檢視日誌檔，而早於 24 小時前的日誌檔將會刪除。在某些情況下，刪除後剩餘的總日誌檔案大小可能會超過資料庫配得之空間的 2% 閾值。在這些情況中，最大的日誌檔將被刪除，直到日誌檔大小不再超過閾值。
+ `TABLE` 記錄啟用時，日誌表格在某些情況下會每 24 小時輪換。

  在表格日誌使用的空間超過配得之儲存空間的 20% 時，或者所有日誌的總容量高於 10 GB 時就會發生輪換。

  若資料庫使用的空間總量高於資料庫配置儲存空間的 90%，日誌輪換的閾值會降低。

  在表格日誌使用的空間超過配得之儲存空間的 10% 時，或者所有日誌的總容量高於 5 GB 時，日誌表格就會輪換。

  您可訂閱 `low_free_storage` 事件，日誌表格輪換以釋放空間時就會通知您。
  + 輪換日誌資料表時，目前日誌資料表會複製到備份日誌資料表，並移除目前日誌資料表中的項目。如果備份日誌資料表已存在，則其會在目前日誌資料表複製到備份之前刪除。您可以查詢備份日誌表格。`mysql.general_log` 資料表的備份日誌資料表名為 `mysql.general_log_backup`。`mysql.slow_log` 資料表的備份日誌資料表名為 `mysql.slow_log_backup`。
  + 您可以呼叫 `mysql.general_log` 以輪換 `mysql.rds_rotate_general_logprocedure` 資料表。您可以呼叫 `mysql.slow_log` 以輪換 `mysql.rds_rotate_slow_logprocedure` 資料表。
  + 表格日誌會在資料庫版本升級時輪換。