MySQL服务器日志-Error Log(错误日志)

如何配置MySQL服务器以将诊断信息记录到错误日志。

  • 错误日志包含mysqld的开启和关闭时间的记录。

    也包含了诊断信息,包括发生在启动,关闭,运行服务器期间的错误,警告,注释。

    例如,如果mysqld注意到需要自动检查或修复表,会向错误日志中写入一条信息。

  • 在某些操作系统,当mysqld异常退出,错误日志包含堆栈跟踪。这个跟踪被用来确定mysqld退出的位置。

  • 如果用于启动mysqld,mysqld_safe会写信息到错误日志。

    例如,当mysqld_safe注意到mysqld异常退出,它会重启mysqld同时向错误日志写入一条mysqld restarted的信息

  • 下列节讨论了配置错误日志记录的各个方面。在讨论中,控制台意味着标准错误输出。

    除非标准错误输出被重定向到其他目标,否则这是你的终端或者控制台窗口。

  • 服务器解释的选项决定Windows和Unix系统将错误信息写入到何处的方式有所不同。

    确保使用适合你的平台信息配置错误日志记录。


1. Error Logging on Unix and Unix like Systems

在unix和类unix系统上, mysqld 使用–log-error选项去决定 mysqld 是否将错误日志写入到控制台还是文件中,

如果是文件,则输入文件名:

  • 如果–log-error没有给出,将错误日志写入控制台
  • 如果–log-error给出时未命名文件,mysqld 将错误日志写入到数据目录下的host_name.err的文件中
  • 如果–log-error给定一个文件名,mysqld 将错误日志写入到数据目录下的该文件(如果文件名后缀没有.err自动写入),除非给出绝对路径去指定不同的位置。
  • 如果–log-error在选项文件[mysqld],[server]和[mysqld_safe]中给定,mysqld_safe查找并使用的选项,同时传递给mysqld

注意: 对于用Yum或者APT软件包安装,通常在服务器配置文件中使用诸如log-err=/var/log/mysqld.log的选项来配置错误日志文件位置到/var/log下。从选项中移除文件名,会导致数据目录下的host_name.err文件被使用。

如果服务器将错误日志写到控制台中,它会将log_error系统变量设置为stderr。

否则,服务器将错误日志写入到文件中同时设置文件名为log_error。


2. Error Logging to System Log

错误日志记录到系统日志

mysqld写错误日志到系统日志,使用下列系统变量

(Windows上是the Event Log ,Unix和类Unix系统上是syslog)

  • log_syslog: 开启此变量去发送错误日志到系统日志中

    如果开启,下列系统变量可以用来更好地控制。

    • log_syslog_facility: syslog信息的默认功能是守护进程。设置这个变量去指定其他功能。
    • log_syslog_include_pid: 是否把服务器进程ID包含在syslog每一行的输出
    • log_syslog_tag: 此变量定义了一个标签,该标签将添加到syslog消息中的服务器标识符(mysqld)中。如果已定义,则标签将以前导连字号附加到标识符。

Note

Error logging to the system log may require additional system configuration.

错误日志记录到系统日志可能需要额外的系统配置。

Consult the system log documentation for your platform.

查阅所用平台的相关文档。

在Unix和类Unix系统,mysqld_safe可以用来控制syslog的输出,可以捕捉服务器错误输出并把它传递给syslog。

Note

Using mysqld_safe for syslog error logging is deprecated;

不推荐使用mysqld_safe来进行syslog错误记录

you should use the server system variables instead.

你应该改为使用服务器系统变量配置。

mysqld_safe的有三个错误日志选项, --syslog--skip-syslog,和--log-error

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

3. Error Log Message Flitering

错误日志过滤

log_err_verbosity系统变量控制服务器详细程度,写错误、警告、注释信息到错误日志。

log_err_verbosity允许值记录范围
3 (default)errors,warnings,notes
2erros and warnings
1errors

只要值大于2,服务器记录新连接尝试的中止连接和访问被拒绝的错误


4. Error Log Message Format

错误日志信息格式

The ID included in error log messages is that of the thread within mysqld responsible for writing the message.

错误日志信息中包含的ID是mysqld 服务中负责编写消息的线程id

This indicates which part of the server produced the message, and is consistent with general query log and slow query log ,which include the connection thread id

这表明服务器的哪部分生产消息,与常规查询日志和慢查询日志消息一致,包括连接线程id

The log_timestamps system variable control the time zone of timestamps in messages written to the error log(as well as to general query log and slow query log files).Permitted values are UTC(the default) and SYSTEM(local system time zone).

log_timestamps 系统变量控制了写入到错误日志的消息的时间戳的时区(对于常规查询日志和慢查询日志文件一样)

允许值为UTC(默认),SYSTEM(本地系统时区)

log_timestamps允许值代表功能
UTC默认
SYSTEM本地系统时区

5. Error Log File Flushing and Renaming

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

如果你使用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.

如果错误日志文件的位置不能被服务器写入,则日志刷新操作无法创建新的日志文件。

例如,在Linux上,服务器可能会将错误日志写入到/var/log/mysqld.log文件下,/var/log/目录所有者是root,不能被mysqld写入。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值