RDS for MySQL 数据库日志概览
您可以监控以下类型的 RDS for MySQL 日志文件:
-
错误日志
-
慢速查询日志
-
常规日志
-
审计日志
原定设置情况下,系统会生成 RDS for MySQL 错误日志。您可以通过在数据库参数组中设置参数来生成慢速查询日志和一般日志。
RDS for MySQL 错误日志
RDS for MySQL 在 mysql-error.log
文件中写入错误。每个日志文件的名称上都会附有生成时间的信息 (以 UTC 时间标记)。日志文件还会拥有时间戳,帮助您确定日志项的写入时间。
RDS for MySQL 仅在启动、关闭和遇到错误时才向错误日志写入内容。数据库实例可以运行数小时或者数天,而不向错误日志中写入新项。如果看不到最近的条目,则原因是服务器未遇到导致生成日志条目的错误。
根据设计,将筛选错误日志,以便仅显示错误等意外事件。但是,错误日志还包含一些未显示的其他数据库信息,例如查询进度。因此,即使没有任何实际错误,由于持续进行的数据库活动,错误日志的大小也可能会增加。虽然您可能会在 Amazon Web Services Management Console 中看到错误日志有一定大小(以字节或千字节为单位),但当您下载它们时,它们可能为 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 慢速查询日志和一般日志
可以将 RDS for MySQL 慢速查询日志和一般日志写入文件或数据库表中。为此,请设置数据库参数组中的参数。有关创建和修改数据库参数组的信息,请参阅 Amazon RDS 的参数组。您必须先设置这些参数,然后才能在 Amazon RDS 控制台中或使用 Amazon RDS API、Amazon RDS CLI 或Amazon软件开发工具包查看慢速查询日志或一般日志。
可通过使用下面列表中的参数来控制 RDS for MySQL 日志记录:
-
slow_query_log
:要创建慢速查询日志,请设置为 1。默认值为 0。 -
general_log
:要创建一般日志,请设置为 1。默认值是 0。 -
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。将记录不使用索引的查询,即使它们的运行时间小于long_query_time
参数的值。默认值是 0。 -
log_output
:您可为option
log_output
参数指定下列选项之一。-
TABLE (默认)— 将一般查询写入
mysql.general_log
表,将慢速查询写入mysql.slow_log
表。 -
FILE– 将一般查询日志和慢速查询日志写入文件系统。
-
NONE– 禁用日志记录。
-
有关慢速查询日志和一般日志的更多信息,请参阅 MySQL 文档中的以下主题:
MySQL 审计日志
若要访问审计日志,数据库实例必须使用具有 MARIADB_AUDIT_PLUGIN
选项的自定义选项组。有关更多信息,请参阅 MySQL 的 MariaDB 审计插件支持。
RDS for MySQL 的日志轮换和保留
启用了日志记录时,Amazon RDS 会定期轮换表日志或删除日志文件。这是一种预防措施,用于降低大型日志文件阻止数据库使用或影响性能的可能性。RDS for MySQL 按如下方式处理轮换和删除:
-
MySQL 慢速查询日志、错误日志和一般日志文件的大小限制为不超过为数据库实例分配的存储空间的 2%。为了维护此阈值,日志每小时自动轮换一次。MySQL 会删除超过两周的日志文件。如果在删除旧日志文件后,日志文件的总体大小超出此阈值,则将删除最早的日志文件,直到日志文件大小不再超出此阈值。
-
启用了
FILE
日志记录时,系统会每小时检查一次日志文件,并删除超过两周的日志文件。在一些情况下,删除之后的剩余日志文件的总体大小可能超过了数据库实例的分配空间的 2% 阈值。在这些情况下,将删除最旧的日志文件,直到日志文件大小不再超过此阈值。 -
启用了
TABLE
日志记录时,在某些情况下,日志表每 24 小时轮换一次。如果表日志使用的空间大于所分配存储空间的 20%,则会执行此轮换。如果所有日志的总体大小超过 10GB,也会执行此轮换。如果用于数据库实例的空间量大于数据库实例的分配存储空间的 90%,则减小日志轮换的阈值。如果表日志使用的空间大于分配存储空间的 10%,则轮换日志表。如果所有日志的总体大小超过 5GB,也会轮换这些日志表。您可以订阅low_free_storage
事件,在轮换日志表以释放空间时,会发送相关通知。有关更多信息,请参阅 使用 Amazon RDS 事件通知。轮换日志表时,首先将当前日志表复制到备份日志表。然后,删除当前日志表中的条目。如果备份日志表已存在,则先将其删除,然后将当前日志表复制到备份。如果需要,您可以查询备份日志表。
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 或 Amazon 开发工具包使用日志,请将 log_output
参数设置为 FILE。就像 MySQL 错误日志一样,这些日志文件也每小时轮换一次。将保留过去两周内生成的日志文件。请注意,Amazon RDS 和 Aurora 之间的保留期不同。
重做日志的大小限制
对于 RDS for MySQL 版本 8.0.32 及更低版本,此参数的默认值为 256MB。该数量是通过将 innodb_log_file_size
参数的默认值(128MB)乘以 innodb_log_files_in_group
参数的默认值(2)得出的。有关更多信息,请参阅为 Amazon RDS for MySQL 配置参数的最佳实践,第 1 部分:与性能相关的参数
从 RDS for MySQL 版本 8.0.33 开始,Amazon RDS 使用 innodb_redo_log_capacity
参数,而不是 innodb_log_file_size
参数。innodb_redo_log_capacity
参数的 Amazon RDS 默认值为 2GB。有关更多信息,请参阅 MySQL 文档中的 MySQL 8.0.30 中的更改