MySQL日志
Log Type | Information Written to Log |
---|---|
Error log | Problems encountered starting, running, or stopping mysqld |
General query log | 客户端执行的所有(成功)SQL记录 |
Binary log | Statements that change data (also used for replication) |
Relay log | Data changes received from a replication source server |
Slow query log | 慢SQL记录,取决于 long_query_time 系统变量 |
DDL logs | Atomic DDL operations performed by DDL statements |
一、General log 和 Slow log
1、日志存储位置
支持如下存储方式:
FILE
:文件,默认存储方式TABLE
: 数据表NONE
:不存储
1.1 查看当前日志存储方式
1 |
|
1 |
|
1.2 全局修改日志存储方式
1 |
|
1.3 设置持久化
通过global
设置的系统变量,在mysql
服务重启后会重新还原为默认值,需要在my.cnf
中修改进行持久化
1 |
|
2、General Log
记录客户端执行的所有SQL
2.1 查看当前日志记录开启以及文件保存位置
1 |
|
如果log_output
支持TABLE
时,日志信息会记录在 mysql.general_log
数据表中
2.2 日志文件日志内容
1 |
|
2.3 数据表日志内容
1 |
|
默认情况下,general_log
数据表中存储SQL
语句的字段(argument
)进行了编码,需要通过convert(argument using utf8)
函数进行解码
2.4 设置持久化
通过global
设置的系统变量,在mysql
服务重启后会重新还原为默认值,需要在my.cnf
中修改进行持久化
1 |
|
修改完成后通过sudo systemctl restart mysqld
重启mysql
服务让配置生效
3、Slow Query Log
记录执行时间超过long_query_time
变量定义的值时会记录慢SQL
日志
3.1 查看慢SQL日志开启以及文件保存位置
1 |
|
3.2 查看慢SQL时间阈值
1 |
|
1 |
|
3.3 修改慢SQL时间阈值
1 |
|
通过global
修改慢SQL阈值的需要连接重新建立后才生效
System Variable | long_query_time |
---|---|
生效范围 | Global, Session |
动态修改 | Yes |
数据类型 | Numeric |
默认值 | 10 |
最小值 | 0 |
最大值 | 31536000 (365天) |
单位 | 秒 |
如果log_output
支持TABLE
时,日志信息会记录在 mysql.slow_log
数据表中
3.4 慢SQL日志文件内容
1 |
|
3.5 慢SQL数据表日志内容
1 |
|
默认情况下,slow_log
数据表中存储SQL
语句的字段(sql_text
)进行了编码,需要通过convert(sql_text using utf8)
函数进行解码
3.6 设置持久化
通过global
设置的系统变量,在mysql
服务重启后会重新还原为默认值,需要在my.cnf
中修改进行持久化
1 |
|
修改完成后通过sudo systemctl restart mysqld
重启mysql
服务让配置生效
二、Bin Log
默认启用 log_bin=[base_name]
系统变量,不指定默认为binlog
新文件创建:
- 服务启动或者重启
- 服务刷新日志
- 日志文件达到
max_binlog_size
设置(采用大事物时,文件大小可能会超过max_binlog_size
的限制)
mysqld
采用索引文件记录当前使用的binlog
文件,默认情况和binlog
保持一直的文件名(扩展名为.index
),可以通过 --log-bin-index=[file_name]
命令选项修改
binlog
文件和binlog
索引文件默认存储在数据目录中,可以通过--log-bin
选项指定为其他目录
文件加密