[2025.2.1 MySQL学习] 日志
日志
错误日志
- 记录了当MySQL启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,优先查看该日志
- 错误日志默认开启,默认目录
/var/log/
,默认日志文件名为mysqld.log
二进制文件
- 二进制日志记录了所有的DDL语句和DML语句(增删改),但不包括数据查询(SELECT、SHOW)语句
- 作用:
- 灾难时的数据恢复
- MySQL的主从复制,在MySQL8版本中,默认二进制日志开启
- 日志格式:MySQL中提供了如下格式来记录二进制日志:
- 日志查看:由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog来查看,具体语法:
- 日志删除:对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量的磁盘空间,可通过以下方式进行清理:
- 也可以在mysql配置文件中配置二进制文件过期时间,设置了以后,二进制日志会自动删除:
show variables like '%binlog_expire_logs_seconds%';
查询日志
- 查询日志中记录了客户端的所有操作语句,而二进制日志不包括查询数据的SQL语句。默认情况下,查询日志未开启,可以通过以下配置进行设置:
show variables like '%general%';
查看,而后修改MySQL的配置文件/etc/my.cnf
,添加如下内容:
#0关闭 1开启
general_log=1
#日志文件名,默认为host_name.log
general_log_file=mysql_query.log
慢查询日志
- 慢查询日志记录了所有执行时间超过参数
long_query_time
设置值并且扫描记录数不小于min_examined_row_limit的所有SQL语句的日志,默认未开启。long_query_time
默认为10s,最小为0,精度可以到微秒 - 设置如下:
slow_query=1
long_query_time=2
- 默认情况下 ,不会记录管理语句,也不会记录不使用索引进行查找的查询,可以使用如下语句进行行为更改:
log_slow_admin_statements=1
log_queries_not_using_indexes=1