访问 MySQL 错误日志
MySQL 错误日志写入 mysql-error.log
文件。您可以通过使用 Amazon RDS 控制台或者通过使用 Amazon RDS API、Amazon RDS CLI 或 AWS 软件开发工具包检索日志来查看 mysql-error.log
。mysql-error.log
每 5 分钟刷新一次,其内容附加到 mysql-error-running.log
。mysql-error-running.log
文件每小时轮换一次,保留过去 24 小时内每小时生成的文件。每个日志文件的名称上都会附有生成时间的信息(以 UTC 时间标记)。日志文件还会拥有时间戳,帮助您确定日志项的写入时间。
MySQL 仅在启动、关闭和遇到错误时向错误日志写入内容。数据库实例可以运行数小时或者数天,而不向错误日志中写入新项。如果看不到最近的条目,则原因是服务器未遇到导致生成日志条目的错误。
访问 MySQL 慢查询和常规日志
通过设置数据库参数组中的参数,可以将 MySQL 慢查询日志和常规日志写入文件或者数据库表中。有关创建和修改数据库参数组的信息,请参阅使用数据库参数组。您必须先设置这些参数,然后才能在 Amazon RDS 控制台中或使用 Amazon RDS API、Amazon RDS CLI 或 AWS 软件开发工具包查看慢速查询日志或一般日志。
可通过使用下面列表中的参数来控制 MySQL 日志记录:
-
slow_query_log
:要创建慢速查询日志,请设置为 1。默认值为 0。 -
general_log
:要创建一般日志,请设置为 1。默认值为 0。 -
log_output
:要将一般日志和慢速查询日志写入文件系统,请设置为FILE
。默认值为TABLE
,这会将一般查询写入mysql.general_log
表,将慢速查询写入mysql.slow_log
表。要禁用日志记录,请设置为NONE
。 -
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
参数值,只要它们不使用索引,就会被系统记录。
要通过 Amazon RDS 控制台、Amazon RDS API、Amazon RDS CLI 或 AWS 软件开发工具包使用日志,请将 log_output
参数设置为 FILE。就像 MySQL 错误日志一样,这些日志文件也每小时轮换一次。将保留过去 24 小时内生成的日志文件。
如果满足以下条件之一,Amazon RDS 会自动轮换慢速日志和一般日志,以降低日志过大造成数据库无法使用或影响性能的可能性:
-
磁盘空间使用率大于分配空间的 90%,并且单个日志的分配存储空间使用率大于 10% 或日志使用的存储空间大于 5 GB。
-
单个日志的分配存储空间使用率大于 20% 或日志使用的存储空间大于 10 GB,无论总磁盘使用情况如何。
无论哪种情况下,Amazon RDS 都将在 Amazon RDS 事件中记录日志轮换并向您发送通知。请注意,Amazon RDS 将来可能会在出现自动日志轮换时更改逻辑。
有关慢速查询日志和一般日志的更多信息,请参阅 MySQL 文档中的以下主题:
访问基于文件的 MySQL 日志
您可以使用 Amazon RDS 的日志处理功能访问基于文件的 MySQL 日志,如一般日志或慢速查询日志:
-
有关列出日志文件和查看日志内容的信息,请参阅 查看和列出数据库日志文件。
-
有关下载日志文件的信息,请参阅 下载数据库日志文件。
-
有关监视日志文件实时更新的信息,请参阅 监视数据库日志文件。
管理基于表的 MySQL 日志
可通过创建数据库参数组并将 log_output
服务器参数设置为 TABLE
,将一般日志和慢速查询日志引向数据库实例上的表。系统随后会将一般查询记录到 mysql.general_log
表,并将慢速查询记录到mysql.slow_log
表。可以查询表来访问日志信息。启用此日志记录功能会增加写入数据库的数据量,导致性能降低。
默认情况下,一般日志和慢速查询日志处于禁用状态。要启用将日志记录到表的功能,必须将 general_log
和 slow_query_log
服务器参数设置为 1
。
直到通过将相应参数重置为 0
而关闭相应日志记录活动,日志表才不再增大。随着时间的推移,通常会累积大量的数据,这些数据会占用相当大比例的分配存储空间。Amazon RDS 不允许您截断日志表,但您可以移动其中的内容。表的交替会将表的内容保存到备份表,然后创建一个新的空日志表。可用以下命令行过程手动轮换日志表,其中 PROMPT>
表示命令提示符:
PROMPT> CALL mysql.rds_rotate_slow_log; PROMPT> CALL mysql.rds_rotate_general_log;