

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Lightsail 中的常规查询日志和慢速查询日志监控 MySQL 查询性能
<a name="amazon-lightsail-enabling-mysql-general-and-slow-query-logs"></a>

默认情况下，Amazon Lightsail 中的 MySQL 数据库的[常规和慢速查询日志](amazon-lightsail-viewing-database-logs-and-history.md)处于禁用状态。您可以通过更新几个数据库参数来启用这些日志并开始收集数据。使用 Lightsail API、 AWS Command Line Interface (AWS CLI) 或更新数据库参数。 SDKs在本指南中，我们将向您展示如何使用更新数据库参数以及启用常规和慢速查询日志。 AWS CLI 此外，我们还提供了其他选项，用于控制一般查询日志和慢速查询日志以及如何处理日志数据保留。

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

如果尚未安装并配置 AWS CLI，请执行该操作。有关更多信息，请参阅[配置为与 Amazon Lightsail 配合使用](lightsail-how-to-set-up-and-configure-aws-cli.md)。 AWS Command Line Interface 

## 在 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}}用你的数据库的名字。
   + {{Region}}用 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}}用你的数据库的名字。
   + {{Region}}用 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}}用你的数据库的名字。
   + {{Region}}用 AWS 区域 你的数据库的。

1. 输入以下命令以重新引导数据库并使更改生效。

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

   在该命令中，将：
   + {{DatabaseName}}用你的数据库的名字。
   + {{Region}}用 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% 或所有日志的总体大小超过 10GB，则会执行此轮换。

  如果用于数据库的空间量大于数据库的分配存储空间的 90%，则减小日志轮换的阈值。

  随后，如果表日志使用的空间大于分配存储空间的 10% 或是所有日志的总体大小超过 5 GB，则轮换日志表。

  您可以订阅 `low_free_storage` 事件，在轮换日志表以释放空间时，会发送相关通知。
  + 轮换日志表时，会将当前日志表复制到备份日志表，随后删除当前日志表中的条目。如果备份日志表已存在，则先将其删除，然后将当前日志表复制到备份。您可以查询备份日志表。`mysql.general_log` 表的备份日志表名为 `mysql.general_log_backup`。`mysql.slow_log` 表的备份日志表名为 `mysql.slow_log_backup`。
  + 您可以通过调用 `mysql.rds_rotate_general_logprocedure` 来轮换 `mysql.general_log` 表。您可以通过调用 `mysql.rds_rotate_slow_logprocedure` 来轮换 `mysql.slow_log` 表。
  + 表日志在数据库版本升级期间会进行轮换。