MySQL在Debian系统中的日志文件位置及管理
Debian系统中,MySQL的日志文件默认集中存储在/var/log/mysql/目录下,不同日志类型的默认路径如下:
/var/log/mysql/error.log(记录MySQL启动、运行及关闭过程中的错误信息,是排查数据库问题的核心日志)。/var/log/mysql/query.log(记录所有客户端执行的SQL语句,包括连接、断开及语句内容,需手动启用)。/var/log/mysql/slow-query.log(记录执行时间超过long_query_time阈值(默认10秒)的SQL语句,用于性能优化,需手动启用)。/var/lib/mysql/mysql-bin.XXXXXX(记录所有更改数据库的操作(如INSERT、UPDATE、DELETE),用于数据复制、备份及恢复,无需手动启用,默认开启)。MySQL的日志配置主要通过/etc/mysql/mysql.conf.d/mysqld.cnf(Debian默认配置文件)或/etc/mysql/my.cnf(全局配置文件)实现。配置文件中[mysqld]部分的参数决定了日志的位置、类型及行为。
在配置文件中添加或修改以下参数,可自定义错误日志路径:
[mysqld]
log_error = /var/log/mysql/error.log
启用查询日志并指定路径:
[mysqld]
general_log = 1 # 开启查询日志(1=开启,0=关闭)
general_log_file = /var/log/mysql/query.log # 查询日志路径
log_output = FILE # 日志输出到文件(TABLE=输出到表,NONE=不记录)
启用慢查询日志并设置阈值:
[mysqld]
slow_query_log = 1 # 开启慢查询日志
slow_query_log_file = /var/log/mysql/slow-query.log # 慢查询日志路径
long_query_time = 2 # 慢查询阈值(单位:秒,默认10秒)
log_output = FILE # 日志输出到文件
配置二进制日志的路径及大小:
[mysqld]
log_bin = /var/log/mysql/mysql-bin # 二进制日志前缀(默认生成mysql-bin.000001等文件)
max_binlog_size = 100M # 单个二进制日志文件最大大小(超过则自动轮转)
expire_logs_days = 10 # 日志保留天数(超过则自动删除)
mysql用户,避免未授权访问:sudo chown mysql:mysql /var/log/mysql/*.log
sudo chmod 640 /var/log/mysql/*.log
logrotate工具自动管理日志轮转,配置文件位于/etc/logrotate.d/mysql,可自定义轮转周期、大小及保留数量。general_log、slow_query_log)可通过SQL命令动态修改,无需重启MySQL服务:SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
但永久生效仍需修改配置文件并重启服务。