MySQL日志
MySQL包含四种日志:
1.错误日志
2.二进制日志
3.查询日志
4.慢查询日志
一、错误日志
错误日志是MySQL最重要的日志之一,主要记录MySQL启动、运行、停止过程中发生的错误相关信息。
错误日志默认开启,默认存放目录(linux):/var/log/,默认的日志文件名为mysqld.log。查看错误日志位置:SHOW VARIABLES LIKE ‘%LOG_ERROR%’;
若查询结果为:stderr,则代表错误日志默认输出到命令行,而不是保存到日志文件,需要手动开启:
① 找到 MySQL 的配置文件 my.cnf,通常位于 /etc/mysql/ 目录下。如果没有该文件,可以查找并编辑 my.cnf 的其他可能位置,如 /etc/my.cnf、$MYSQL_HOME/my.cnf 等,也可以创建一个新的 my.cnf 文件。
② 在 my.cnf 文件中,添加或修改以下配置项:
log-error=/path/to/error.log
/path/to/error.log 是你指定的错误日志文件的完整路径。
二、二进制日志
MySQL 的二进制日志(Binary Log)是一个重要的功能,主要用于记录所有更改数据库的操作(DDL语句和DML语句),但不包含数据查询操作(select、show)。
二进制日志的作用:
① 灾难时数据恢复;
② 主从复制;
③ 数据审计;
可以用以下SQL语句查看二进制日志相关数据:
SHOW VARIABLES LIKE ‘%log_bin%’;
MySQL包含三种二进制日志格式:
可以通过以下SQL语句查询当前使用的日志格式:
SHOW VARIABLES LIKE “%binlog_format%”;
二进制日志是不能够直接查阅的,需要通过sql指令进行查阅:
mysqlbinlog [ 参数选项 ] logfilename;
也可以通过设置二进制的过期时间让MySQL自动删除日志(默认30天):
SHOW VARIABLES LOKE ‘%binlog_expire_logs_seconds%’;
三、查询日志
MySQL 的查询日志(Query Log)用于记录所有执行的 SQL 语句(包括查询)。默认情况下,查询日志不开启,需要手动开启。
SHOW VARIABLES LIKE ‘%general%’;
开启查询日志在MySQL配置文件/etc/my.cnf中添加如下内容:
general_log = 1
general_log_file = /path/to/your/mysql_query.log
general_log: 设置为 1 启用查询日志。
general_log_file: 指定日志文件的路径以及文件名。
四、慢查询日志
慢查询日志是 MySQL 用于记录执行时间超过指定阈值long_query_time的 SQL 查询以及扫描记录数不小于min_examined_row+limit的所有SQL语句。慢查询日志默认未开启,long_query_time默认为10秒,最小为0,精度可以到微秒。
slow_query_log = 1
slow_query_log_file = /path/to/your/mysql_slow_query.log
long_query_time = 2 # 设置阈值,单位为秒
log_slow_admin_statements=1 # 记录执行较慢的管理语句
log_queries_not_using_indexes=1 # 记录执行较慢的未使用索引的语句