

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

# 数据库日志
<a name="database-logs"></a>

MySQL 和 MariaDB 数据库会生成日志，您可以访问这些日志进行审计和问题排查。这些日志是：
+ [审计](https://mariadb.com/kb/en/mariadb-audit-plugin-log-format/)：审计跟踪记录是一组记录服务器活动的记录。对于每个客户端会话，它都会记录谁连接到服务器（用户名和主机）、运行了哪些查询、访问了哪些表以及更改了哪些服务器变量。
+ [错误](https://dev.mysql.com/doc/refman/8.0/en/error-log.html)：此日志包含服务器的（`mysqld`）启动和关闭时间，以及诊断消息，例如在服务器启动和关闭期间以及服务器运行时发生的错误、警告和注意事项。
+ [常规](https://dev.mysql.com/doc/refman/8.0/en/query-log.html)：此日志记录 `mysqld` 的活动，包括每个客户端的连接和断开连接活动，以及从客户端接收的 SQL 查询。当您怀疑出现错误并想确切了解客户端向 `mysqld` 发送了什么内容时，常规查询日志可能非常有用。
+ [慢速查询](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html)：此日志记录了花费很长时间才执行的 SQL 查询。

作为最佳实践，您应该[将数据库日志从 Amazon RDS 发布到 Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.UploadtoCloudWatch.html)。通过 CloudWatch Logs，您可以对日志数据进行实时分析，将数据存储在高持久性存储中，并使用 CloudWatch Logs 代理管理数据。您可以从 Amazon RDS 控制台[访问和查看您的数据库日志](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Procedural.Watching.html)。您还可以使用 CloudWatch Logs Insights，通过交互方式搜索并分析 CloudWatch Logs 中的日志数据。以下示例说明了对审计日志的查询，该查询会检查 `CONNECT` 事件在日志中出现的次数、谁连接以及这些事件是从哪个客户端（IP 地址）连接的。审计日志中的摘录可能如下所示：

```
20221201 14:07:05,ip-10-22-1-51,rdsadmin,localhost,821,0,CONNECT,,,0,SOCKET
20221201 14:07:05,ip-10-22-1-51,rdsadmin,localhost,821,0,DISCONNECT,,,0,SOCKET
20221201 14:12:20,ip-10-22-1-51,rdsadmin,localhost,822,0,CONNECT,,,0,SOCKET
20221201 14:12:20,ip-10-22-1-51,rdsadmin,localhost,822,0,DISCONNECT,,,0,SOCKET
20221201 14:17:35,ip-10-22-1-51,rdsadmin,localhost,823,0,CONNECT,,,0,SOCKET
20221201 14:17:35,ip-10-22-1-51,rdsadmin,localhost,823,0,DISCONNECT,,,0,SOCKET
20221201 14:22:50,ip-10-22-1-51,rdsadmin,localhost,824,0,CONNECT,,,0,SOCKET
20221201 14:22:50,ip-10-22-1-51,rdsadmin,localhost,824,0,DISCONNECT,,,0,SOCKET
```

示例 Log Insights 查询显示，`rdsadmin` 每 5 分钟从 `localhost` 连接到数据库一次，总共连接了 22 次，如下图所示。这些结果表明，该活动源自内部 Amazon RDS 流程，例如监控系统本身。

![\[Log Insights 报告\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/log-insights.png)


日志事件通常包含您想要统计的重要消息，例如有关与 MySQL 和 MariaDB 数据库实例关联的操作的警告或错误。例如，如果操作失败，则可能会发生错误并将其记录到错误日志文件中，如下所示：`ERROR 1114 (HY000): The table zip_codes is full`。您可能需要监控这些条目以了解错误发生趋势。您可以[使用筛选条件从 Amazon RDS 日志创建自定义 CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html)，以启用对 Amazon RDS 数据库日志的自动监控，从而监控特定日志中的特定模式，并在出现违反预期行为时生成告警。[例如](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CountOccurrencesExample.html)，为日志组 `/aws/rds/instance/database-1/error` 创建一个指标筛选条件，用于监控错误日志并搜索[特定模式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)，例如 `ERROR`。将**筛选模式**设置为 `ERROR`，将**指标值**设置为 `1`。筛选条件将检测每条包含关键字 `ERROR` 的日志记录，并会将每个包含“ERROR”的日志事件的计数增加 1。创建筛选条件后，您可以设置告警，以在 MySQL 或 MariaDB 错误日志中检测到错误时通知您。

要详细了解如何通过创建 CloudWatch 控制面板并使用 CloudWatch Logs Insights 来监控慢速查询日志和错误日志，请参阅博客文章 [Creating an Amazon CloudWatch dashboard to monitor Amazon RDS and Amazon Aurora MySQL](https://aws.amazon.com/blogs/database/creating-an-amazon-cloudwatch-dashboard-to-monitor-amazon-rds-and-amazon-aurora-mysql/)。