MySQL数据库之日志管理

128 阅读2分钟

MySQL的日志默认保存位置在: /usr/local/mysql/data

MySQL常用日志类型及开启

vim /etc/my.cnf
​
[mysqld]
....

1、错误日志

用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启

指定日志的保存位置和文件名
log-error=/usr/local/mysql/data/mysql_error.log     

2、通用查询日志

用来记录MySQL的所有连接和语句,默认是关闭的

general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

3、二进制日志(binlog)

用来记录所有当MySQL启动、停止或运行时发送的错误信息,默认是关闭的

log-bin=mysql-bin               
或
log_bin=mysql-bin

4、慢查询日志

用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的

slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2  ##设置超过2秒执行的语句被记录,默认的是10秒

Snipaste_2022-10-26_09-57-55.png

Snipaste_2022-10-26_10-06-47.png

查看日志状态

1、查看通用查询日志是否开启

mysql -u root -p
show variables like 'general%'; 

Snipaste_2022-10-26_10-08-17.png

2、查看二进制日志是否开启

show variables like 'log_bin%'; 

Snipaste_2022-10-26_10-09-32.png

3、查看慢查询日志功能是否开启

show variables like '%slow%';

Snipaste_2022-10-26_10-10-40.png

查看慢查询时间的设置

show variables like 'long_query_time';

Snipaste_2022-10-26_10-11-55.png

在数据库中设置开启慢查询的方法

set global slow_query_log=ON; ##临时有效 重启后失效

二进制日志三种格式

[mysqld]
log-bin=mysql-bin
binlog_format=MIXED
​
binlog_format=STATEMENT|ROW|MIXED
STATEMENT(基于SQL语句记录二进制日志,写入和恢复速度较快,在高并发情况中可能会出现SQL语句顺序记录偏差导致恢复时数据丢失) 老版本的默认模式
ROW(基于行记录记录二进制日志,写入和恢复速度较STATEMENT慢些,日志文件占用空间较大,但是准确性较高) 5.7默认模式
MIXED(混合模式,平时负载压力较小时使用SQL语句记录二进制日志,在高并发的情况会切换成基于记录二进制日志)