MySQL的日志记录了数据库的变更历史,对于数据库的运维和问题排查至关重要。MySQL提供了多种日志,包括错误日志、查询日志、慢查询日志、二进制日志(binlog)、中继日志等。
- 错误日志:记录MySQL服务器启动、运行或停止时出现的问题。
- 查询日志:记录所有MySQL执行的语句。
- 慢查询日志:记录执行时间超过指定时长的查询。
- 二进制日志(binlog):记录所有更改数据的语句,用于复制和数据恢复。
- 中继日志:在复制中记录二进制日志中的事件,在从服务器上应用事件。
错误日志配置
错误日志的配置参数是log_error
,它指定日志文件的位置。
-- 查看错误日志位置
SHOW VARIABLES LIKE 'log_error';
-- 设置错误日志位置
SET GLOBAL log_error = '/var/log/mysql/error.log';
查询日志配置
查询日志的配置参数是general_log
和general_log_file
。
-- 开启查询日志
SET GLOBAL general_log = 1;
-- 设置查询日志文件位置
SET GLOBAL general_log_file = '/var/log/mysql/query.log';
慢查询日志配置
慢查询日志的配置参数包括slow_query_log
、slow_query_log_file
和long_query_time
。
-- 开启慢查询日志
SET GLOBAL slow_query_log = 1;
-- 设置慢查询日志文件位置
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log';
-- 设置慢查询的阈值时间(例如,10秒)
SET GLOBAL long_query_time = 10;
二进制日志配置
二进制日志的配置参数是log_bin
,它指定日志文件的前缀名。
-- 查看二进制日志状态和位置
SHOW VARIABLES LIKE 'log_bin';
-- 开启二进制日志
SET GLOBAL log_bin = '/var/log/mysql/mysql-bin';
以上配置可以在my.cnf
或my.ini
配置文件中永久生效。
[mysqld]
# 错误日志配置
log_error = /var/log/mysql/error.log
# 查询日志配置
general_log = 1
general_log_file = /var/log/mysql/query.log
# 慢查询日志配置
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 10
# 二进制日志配置
log_bin = /var/log/mysql/mysql-bin
配置文件中的配置会在MySQL服务启动时加载,并持久生效。