错误日志

本节讨论如何配置MySQL服务器以将诊断消息记录到错误日志中。有关选择错误消息字符集或语言的信息,请参见 第10.6节“错误消息字符集”或 第10.12节“设置错误消息语言”

错误日志包含mysqld 启动和关闭时间的记录。它还包含诊断消息,例如错误,警告和注释,它们在服务器启动和关闭期间以及服务器运行期间发生。例如,如果mysqld注意到需要自动检查或修复表,它将向错误日志中写入一条消息。

在某些操作系统上,如果mysqld异常退出,则错误日志包含堆栈跟踪 。该跟踪可用于确定mysqld退出的位置。请参见 第28.5节“调试和移植MySQL”

如果用于启动mysqld,则 mysqld_safe可能会将消息写入错误日志。例如,当mysqld_safe注意到异常的mysqld退出时,它将重新启动 mysqld并将mysqld restarted消息写入错误日志。

以下各节讨论配置错误日志记录的各个方面。在讨论中,“ 控制台 ”是指 stderr,标准错误输出。除非标准错误输出已重定向到其他目标,否则这是您的终端或控制台窗口。

服务器解释的选项决定Windows和Unix系统在何处写入错误消息。确保使用适合您平台的信息配置错误日志记录。

Windows上的错误记录

在Windows上,mysqld的使用 --log-error, --pid-file和 --console选项,以确定是否mysqld的写入错误日志到控制台或文件,并且,如果到一个文件,文件名:

  • 如果--console给出,则 mysqld将错误日志写入控制台。( 如果同时提供--console--log-error两者,则优先于,并且以下各项 --log-error均不适用。在MySQL 5.7之前,这是相反的: --log-error优先于--console。)

  • 如果--log-error未给出,或者给出时未命名文件 ,则除非指定了该选项,否则mysqld 会将错误日志写入host_name.err数据目录中 命名的文件 --pid-file。在这种情况下,文件名是PID文件的基本名称,.err在数据目录中带有后缀。

  • 如果--log-error给定一个文件名,则mysqld会将错误日志写入.err数据目录下的该文件(如果后缀名不带后缀,则添加后缀),除非给出绝对路径名以指定其他位置。

如果服务器将错误日志写入控制台,则会将 log_error系统变量设置为 stderr。否则,服务器将错误日志写入文件并设置 log_error为文件名。

另外,服务器默认情况下会将事件和错误消息写入应用程序日志中的Windows事件日志:

  • 标记为Error, Warning和的条目Note将写入事件日志,但不会写入消息(例如来自各个存储引擎的信息语句)。

  • 事件日志条目的来源MySQL

  • 使用log_syslog系统变量控制写入事件日志的信息,该 系统变量在Windows上默认为启用。请参见 第5.4.2.3节“错误记录到系统日志”

在Unix和类似Unix的系统上记录错误

在Unix和类似Unix的系统上,mysqld使用该--log-error选项来确定mysqld是否将错误日志写入控制台或文件,如果写入文件,则写入文件名:

  • 如果--log-error未给出,则 mysqld将错误日志写入控制台。

  • 如果--log-error给出时未命名文件,则mysqld将错误日志写入host_name.err 数据目录中命名的文件 。

  • 如果--log-error给定一个文件名,则mysqld会将错误日志写入.err数据目录下的该文件(如果后缀名不带后缀,则添加后缀),除非给出绝对路径名以指定其他位置。

  • 如果--log-error在选项文件中给出的[mysqld], [server]或 [mysqld_safe]部分, mysqld_safe的查找并使用的选项,并将其传递到mysqld的​​​​​​​

注意

在Yum或APT软件包安装中,通常/var/log 使用诸如log-error=/var/log/mysqld.log服务器配置文件中的选项 来配置错误日志文件位置。从选项中删除文件名将导致host_name.err 使用数据目录中的 文件。

如果服务器将错误日志写入控制台,则会将 log_error系统变量设置为 stderr。否则,服务器将错误日志写入文件并设置 log_error为文件名。

错误记录到系统日志

可能mysqld将错误日志写入系统日志(Windows,syslogUnix和类似Unix的系统上的事件日志 )。为此,请使用以下系统变量:

  • log_syslog:启用此变量可将错误日志发送到系统日志。(在Windows上,log_syslog默认情况下启用。)

    如果log_syslog启用,则以下系统变量也可以用于更好的控制。

  • log_syslog_facilitysyslog消息的默认功能是 daemon。设置此变量以指定其他功能。

  • log_syslog_include_pid:是否在每行syslog输出中包括服务器进程ID 。

  • log_syslog_tag:此变量定义了一个标签,该标签将添加到 消息中的服务器标识符(mysqld)中syslog。如果已定义,则标签将以前导连字号附加到标识符。

注意

错误记录到系统日志中可能需要其他系统配置。请查阅所用平台的系统日志文档。

在Unix和类似Unix的系统上,syslog也可以使用 mysqld_safe控制对to的输出 ,它可以捕获服务器错误输出并将其传递给syslog

注意

不建议使用mysqld_safe进行 syslog错误记录。您应该改用服务器系统变量。

mysqld_safe的有三个错误日志选项, --syslog, --skip-syslog,和--log-error。没有日志选项或带有 --skip-syslog 日志的默认值是使用默认日志文件。要明确指定使用的错误日志文件中,指定 给 mysqld_safe的,然后进行整理 mysqld的消息写入日志文件。要使用,请指定 选项。对于 输出,可以使用;指定标签 。这会附加到服务器标识符前,并带有连字符。 --log-error=file_namesyslog--syslogsyslog--syslog-tag=tag_valmysqld

错误日志过滤

log_error_verbosity系统变量控制服务器详细程度,以便将错误,警告和注释消息写入错误 log。允许的值为 1(仅错误),2(错误和警告),3(错误,警告和注释),默认值为 3.如果 value 大于 2,则服务器会记录中止的连接和拒绝尝试新链接的错误。

错误日志消息格式

错误日志消息中包含的ID是mysqld中负责编写消息的线程的ID 。这表明服务器的哪一部分产生了该消息,并且与常规查询日志和慢速查询日志消息(包括连接线程ID)一致。

log_timestamps系统变量控制在写入错误日志消息时间戳的时区(以及一般查询日志和慢查询日志文件)。允许的值为 UTC(默认值)和 SYSTEM(本地系统时区)。

错误日志文件刷新和重命名

如果使用FLUSH ERROR LOGSFLUSH LOGS或 mysqladmin flush-logs刷新日志,则服务器将关闭并重新打开它正在写入的任何错误日志文件。要重命名错误日志文件,请在刷新前手动进行重命名。刷新日志,然后使用原始文件名打开一个新文件。例如,假设日志文件名为 host_name.err,以重命名该文件并创建一个新文件,请使用以下命令: 

mv host_name.err host_name.err-old
mysqladmin flush-logs
mv host_name.err-old backup-directory

在Windows上,请使用 rename而不是 mv

如果错误文件的位置不可由服务器写入,则日志刷新操作将无法创建新的日志文件。例如,在Linux上,服务器可能将错误日志写入/var/log/mysqld.log其中/var/logroot拥有,写不进去 。有关处理这种情况的信息,请参见第5.4.7节“服务器日志维护”

如果服务器未写入命名的错误日志文件,则刷新日志时不会发生错误日志文件重命名。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值