在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志、查询日志和慢查询日志。
错误日志
错误日志记录了 MySQL 启动和停止时以及服务器在运行过程中发生严重错误时的相关信息。
查看错误日志文件的路径
mysql> SHOW VARIABLES LIKE 'log_error%';
+---------------+---------------+
| Variable_name | Value |
+---------------+---------------+
| log_error | .\HUEY-PC.err |
+---------------+---------------+
修改错误日志文件的路径
编辑 my.ini,修改 log-error 参数:
# Error Logging.
log-error="HUEY-PC.err"
查看错误日志文件
错误文件为普通的文本文件,可直接查看。
二进制日志
二进制日志记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。
查看 log_bin 状态
mysql> SHOW VARIABLES LIKE 'log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+-------+
启用二进制日志功能
编辑 my.ini:
# Binary Logging.
log-bin="HUEY-PC-bin"
保存 my.ini 更改,重启 MySQL 服务。
查看二进制日志
使用 mysqlbinlog 工具来查看二进制日志的内容:
D:\ProgramData\MySQL\MySQL Server 5.6\data>mysqlbinlog HUEY-PC-bin.000001
清除二进制日志
清除所有日志(不存在主从复制关系):
mysql> RESET MASTER;
清除指定日志之前的所有日志:
mysql> PURGE MASTER LOGS TO 'HUEY-PC-bin.000005';
清除某一时间点前的所有日志:
mysql> PURGE MASTER LOGS BEFORE '2015-01-01 00:00:00';
清除 n 天前的所有日志:
mysql> PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL DAY;
expire_logs_days 参数
在 my.ini 中配置 expire_logs_days 参数指定二进制日志的有效天数,MySQL 会自动删除过期的二进制日志。expire_logs_days 设置在服务器启动或者 MySQL 切换二进制日志时生效,因此,如果二进制日志没有增长和切换,服务器不会清除老条目。
# 二进制日志的有效天数
expire_logs_days = 5
查询日志
默认情况下查询日志是关闭的。查询日志记录了客户端的所有操作,而二进制日志不记录只查询数据的语句。在并发环境易产生大量日志信息而导致大量磁盘 I/O,影响 MySQL 的性能,通常情况下不建议启用查询日志。
查看查询日志是否启用及查询日志的路径
mysql> SHOW VARIABLES LIKE 'general_log%';
+------------------+-------------+
| Variable_name | Value |
+------------------+-------------+
| general_log | ON |
| general_log_file | HUEY-PC.log |
+------------------+-------------+
启用查询日志和设置查询日志的路径
编辑 my.ini,修改 general-log 参数为 1,同时设定 log-output 参数(日志输出类型)和 general_log_file 参数(查询日志路径):
# General logging.:
log-output=FILE
general-log=1
general_log_file="HUEY-PC.log"
保存 my.ini 更改,重启 MySQL 服务。
关闭查询日志
编辑 my.ini,设置 general-log 参数为 0:
# General logging.
log-output=NONE
general-log=0
general_log_file="HUEY-PC.log"
保存 my.ini 更改,重启 MySQL 服务。
慢查询日志
慢查询日志记录了所有执行时间超过 long_query_time 秒的 SQL 语句。
查看慢查询日志是否启用及慢查询日志的路径
mysql> SHOW VARIABLES LIKE 'slow_query_log%';
+---------------------+------------------+
| Variable_name | Value |
+---------------------+------------------+
| slow_query_log | OFF |
| slow_query_log_file | HUEY-PC-slow.log |
+---------------------+------------------+
启用慢查询日志和设置慢查询日志的路径
编辑 my.ini,设置 slow-query-log 参数为 1,同时设定 log-output 参数(日志输出类型)、slow-query-log_file 参数(慢查询日志路径)和 long_query_time 参数:
# Slow logging.
log-output=FILE
slow-query-log=1
slow_query_log_file="HUEY-PC-slow.log"
long_query_time=10
保存 my.ini 更改,重启 MySQL 服务。
关闭慢查询日志
编辑 my.ini,设置 slow-query-log 参数为 0:
# Slow logging.
log-output=NONE
slow-query-log=0
slow_query_log_file="HUEY-PC-slow.log"
long_query_time=10