

# Aurora MySQL 数据库日志记录
<a name="aurora-mysql-troubleshooting-logging"></a>

Aurora MySQL 日志提供有关数据库活动和错误的基本信息。通过启用这些日志，您可以识别和排查问题，了解数据库性能并审计数据库活动。我们建议您为所有 Aurora MySQL 数据库实例启用这些日志，来确保数据库的最佳性能和可用性。可以启用以下类型的日志记录。每个日志都包含特定的信息，这些信息可以揭示对数据库处理的影响。
+ 错误 – Aurora MySQL 仅在启动、关闭和遇到错误时，才向错误日志写入内容。数据库实例可以运行数小时或者数天，而不向错误日志中写入新项。如果看不到最近的条目，则原因是服务器未遇到导致生成日志条目的错误。默认情况下，启用错误日志记录。有关更多信息，请参阅 [Aurora MySQL 错误日志](USER_LogAccess.MySQL.LogFileSize.md#USER_LogAccess.MySQL.Errorlog)。
+ 常规 - 常规日志提供有关数据库活动的详细信息，包括数据库引擎执行的所有 SQL 语句。有关启用常规日志记录和设置日志记录参数的更多信息，请参阅 [Aurora MySQL 慢速查询日志和一般日志](USER_LogAccess.MySQL.LogFileSize.md#USER_LogAccess.MySQL.Generallog)和 MySQL 文档中的 [The general query log](https://dev.mysql.com/doc/refman/8.0/en/query-log.html)。
**注意**  
常规日志可能会增长到非常大，并占用您的存储空间。有关更多信息，请参阅 [Aurora MySQL 的日志轮换和保留](USER_LogAccess.MySQL.LogFileSize.md#USER_LogAccess.AMS.LogFileSize.retention)。
+ 慢速查询 – 慢速查询日志包含运行时间超过 [long\$1query\$1time](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_long_query_time) 秒且需要至少检查 [min\$1examined\$1row\$1limit](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_min_examined_row_limit) 行的 SQL 语句。您可以使用慢速查询日志来查找运行时间长、因而适合进行优化的查询。

  `long_query_time` 的默认值是 10 秒。我们建议您从较高的值开始来确定最慢的查询，然后逐渐向下进行微调。

  您也可以使用相关参数，例如 `log_slow_admin_statements` 和 `log_queries_not_using_indexes`。将 `rows_examined` 与 `rows_returned` 进行比较。如果 `rows_examined` 比 `rows_returned` 大得多，则这些查询可能会被阻止。

  在 Aurora MySQL 版本 3 中，您可以启用 `log_slow_extra` 来获取更多详细信息。有关更多信息，请参阅 MySQL 文档中的 [Slow query log contents](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html#slow-query-log-contents)。您还可以在会话级别修改 `long_query_time`，以便以交互方式调试查询执行，这在全局启用 `log_slow_extra` 时尤其有用。

  有关启用慢速查询日志记录和设置日志记录参数的更多信息，请参阅 [Aurora MySQL 慢速查询日志和一般日志](USER_LogAccess.MySQL.LogFileSize.md#USER_LogAccess.MySQL.Generallog)和 MySQL 文档中的 [The slow query log](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html)。
+ 审计 - 审计日志监控并记录数据库活动。Aurora MySQL 的审计日志记录称为高级审计。要启用高级审计，应设置某些数据库集群参数。有关更多信息，请参阅 [在 Amazon Aurora MySQL 数据库集群中使用高级审计](AuroraMySQL.Auditing.md)。
+ 二进制 – 二进制日志（binlog）包含描述数据库更改的事件，例如表创建操作和对表数据的更改。它还包含可能已进行更改的语句的事件（例如，不匹配任何行的 [DELETE](https://dev.mysql.com/doc/refman/8.0/en/delete.html)），除非使用基于行的日志记录。二进制日志还包含有关更新数据的每条语句所花时间的信息。

  在启用了二进制日志记录的情况下运行服务器会使性能稍微下降。但是，二进制日志使您能够设置复制和执行还原操作，所带来的好处通常会超过这一轻微的性能下降。
**注意**  
Aurora MySQL 不需要使用二进制日志记录来执行还原操作。

  有关启用二进制日志记录和设置二进制日志格式的更多信息，请参阅[为单可用区数据库配置 Aurora MySQL 二进制日志记录](USER_LogAccess.MySQL.BinaryFormat.md)以及 MySQL 文档中的 [The binary log](https://dev.mysql.com/doc/refman/8.0/en/binary-log.html)。

您可以将错误日志、常规日志、慢速日志、查询日志和审计日志发布到 Amazon CloudWatch Logs。有关更多信息，请参阅 [将数据库日志发布到 Amazon CloudWatch Logs](USER_LogAccess.Procedural.UploadtoCloudWatch.md)。

另一个用于汇总慢速日志文件、常规日志文件和二进制日志文件的有用工具是 [pt-query-digest](https://docs.percona.com/percona-toolkit/pt-query-digest.html)。