1. 错误日志
- 记录内容:mysqld 启动 / 停止信息、运行中严重错误
- 作用:数据库故障时优先排查的日志
- 默认状态:开启
- 默认存储:目录
/var/log/,文件名mysqld.log - 查看位置:
show variables like '%log_error%'
2. 二进制日志(BINLOG)
-
记录内容:DDL、DML 语句(不含 SELECT/SHOW 等查询)
-
作用:数据恢复、主从复制
-
默认状态:MySQL8 默认开启
-
查看参数:
show variables like '%log_bin%' -
日志格式:
格式 含义 statement 记录行修改的 SQL 语句 row 记录每一行的数据变更(默认) mixed 混合 statement 和 row,默认用 statement,特殊情况自动切 row -
查看格式:
show variables like '%binlog_format%' -
日志查看:需用
mysqlbinlog工具,语法:mysqlbinlog [参数] 日志文件名 参数:-d(指定数据库)、-o(忽略前n行)、-v(重构数据变更为SQL) -
日志清理:
指令 含义 reset master删除全部 binlog,从 binlog.000001 重新开始 purge master logs to 'binlog.***'删除 *** 编号前的所有日志 purge master logs before '时间'删除指定时间前的所有日志 -
自动过期:默认 30 天,查看参数:
show variables like '%binlog_expire_logs_seconds%'
3. 查询日志
-
记录内容:客户端所有操作语句(日志体积大)
-
默认状态:关闭
-
开启方式:修改
/etc/my.cnf,添加:general_log=1 # 1开启、0关闭 general_log_file=mysql_query.log # 日志文件名
4. 慢查询日志
-
记录条件:SQL 需同时满足
- 执行时间 >
long_query_time(默认 10 秒,最小 0,精度到微秒) - 扫描记录数 ≥
min_examined_row_limit
- 执行时间 >
-
默认状态:未开启
-
开启 / 配置方式:修改配置文件,添加:
slow_query_log=1 # 开启慢查询日志 long_query_time=2 # 执行时间阈值(示例设为2秒) log_slow_admin_statements=1 # 记录慢管理语句 log_queries_not_using_indexes=1 # 记录慢且未用索引的语句