【译】MySQL – The Error Log

本文介绍了MySQL错误日志的功能及配置方法,包括日志的输出位置、如何通过命令刷新日志,以及不同版本中错误日志的详细程度控制等。

--by debugo 

档地址:http://dev.mysql.com/doc/refman/5.7/en/error-log.html

错误日志(error log)包含mysqld启动和关闭过程信息,影响服务器运行的严重的错误也会记录在其中。如果mysqld通知一个表需要自动检查并修复时,它也会将信息写到error log中。
当设了 --syslog选项, mysqld_safe arranges for the server’s stderr to be sent to the syslog facility, as described later.)
在Unix或者类Unix系统上, mysqld输出error log信息的规则如下:
不指定--log-error, mysqld 会将错误信息输出console上。”console”即stderr,标准错误输出。
当指定--log-error[=file_name], mysqld会将错误信息写到一个日志文件里。如果没有指定路径信息,将日志文件写到数据的目录中。如果没有指定任何文件名,则默认使用数据的目录下的host_name.err。
当设置mysqld将错误日志写到文件,执行FLUSH_LOGSmysqladmin flush_logs日志flush操作时,服务器会关闭并重新打开日志文件。所以如果需要保存日志,需要在flush日志前手动将错误日志文件改名,这样flush就会重新创建一个文件。例如, 可以使用下面命令保留旧日志。

如果使用mysqld_safe来启动mysqld时,mysqld_safe会将mysqld的错误信息写到错误文件或者syslog中。mysqld_safe有三个相关选项:
--syslog 使用syslog来记录日志。开启则写到–log-error中。
--skip-syslog 没有任何日志选项时的默认配置,将日志写入到错误日志中。
--log-error 将错误日志写到文件里(规则同上)。写到[mysqld], [server]和[mysqld_safe]组中的log-error选项,mysqld_safe都会使用。

当mysqld_safe重启异常结束的mysqld进程时,mysqld_safe也会将重启的信息写到错误日志中。
对于MySQL 5.7.2, log_error_verbosity 系统变量控制服务器在写入错误、警告和通知等信息的详细程度。可以使用下面的值:
1 (errors only)
2 (errors and warnings)
3 (errors, warnings, and notes) (default of 3).
log_error_verbosity为2或3时,异常终止的连接和新连接登录尝试被拒绝时会被写入错误日志中。
在5.7.2之前的版本,log_warnings系统变量用来控制是否将警告信息写到日子文件中。默认选项是开启(1),可以设置为0来关闭警告信息。
对于5.7.2版本,log_timestamps系统变量控制使用时间戳时区类型(同样对一般查询日志和慢查询日志有效),默认是UTC,可以使用SYSTEM(表示本地系统时区)。在5.7.2之前,消息只能使用本地系统时区。
对于5.7.2版本,错误日志中的ID是mysqld接到请求并写出错误日志的来源线程号。可以指出哪一个server产生了这条信息,这和一般查询日志和慢查询日志是一致的。在MySQL 5.7.2之前的版本, 错误日志中的ID是mysqld的进程PID.

Posted in  DatabaseMySQL.
MySQL 错误日志是用于记录 MySQL 服务器在运行过程中遇到的错误、警告和重要信息的日志文件。了解错误日志的位置和配置方法对于排查数据库问题至关重要。 ### MySQL 错误日志位置 MySQL 错误日志的默认位置取决于操作系统和安装方式。在大多数 Linux 系统中,默认路径通常位于 `/var/log/mysql/` 或 `/var/log/mysqld.log`。可以通过以下方式查找具体的错误日志路径: - 使用 MySQL 命令行工具查询当前错误日志的路径: ```sql SHOW VARIABLES LIKE 'log_error'; ``` - 如果启用了系统日志(syslog),MySQL 错误信息可能会被记录到系统日志中,而不是单独的错误日志文件中。可以通过以下命令查看: ```sql SHOW VARIABLES LIKE 'log_syslog'; ``` ### 配置 MySQL 错误日志 错误日志的路径和行为可以通过 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`)中的参数进行配置。主要涉及的参数如下: - `log_error`:指定错误日志文件的路径。例如: ```ini [mysqld] log_error = /var/log/mysql/error.log ``` - `log_warnings`:控制是否将警告信息也记录到错误日志中。此参数在较新版本中已被弃用,取而代之的是 `log_level` 参数。 - `log_error_services`:用于定义哪些类型的日志信息应该写入错误日志。例如,可以配置为记录所有错误、警告和通知: ```ini [mysqld] log_error_services = 'log_filter_internal; log_sink_file' ``` - `log_error_verbosity`:控制错误日志的详细程度。值为 1 表示只记录错误,值为 2 表示记录错误和警告,值为 3 表示记录错误、警告和通知。例如: ```ini [mysqld] log_error_verbosity = 2 ``` ### 示例:修改 MySQL 错误日志路径 假设需要将错误日志从默认路径修改为 `/data/logs/mysql/error.log`,则可以按照以下步骤操作: 1. 编辑 MySQL 配置文件 `my.cnf`: ```ini [mysqld] log_error = /data/logs/mysql/error.log ``` 2. 确保目标目录存在并具有适当的权限: ```bash mkdir -p /data/logs/mysql chown mysql:mysql /data/logs/mysql ``` 3. 重启 MySQL 服务以使配置生效: ```bash systemctl restart mysqld ``` ### 日志文件轮转 为了防止错误日志文件无限增长,建议配置日志轮转工具(如 `logrotate`)。以下是一个简单的 `logrotate` 配置示例: ```bash /data/logs/mysql/error.log { daily missingok rotate 7 compress delaycompress notifempty create 640 mysql mysql } ``` 通过以上配置,错误日志每天会被轮转一次,并保留最近 7 天的日志文件。 ### 总结 MySQL 错误日志是诊断数据库问题的重要工具。通过合理配置 `log_error`、`log_error_verbosity` 和 `log_error_services` 等参数,可以确保错误日志包含足够的信息[^1]。同时,结合日志轮转工具可以有效管理日志文件的大小和生命周期。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值