日志
这里讲述的日志是Server层的日志,
1.错误日志
记录了当mysql启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。
错误日志默认开启,存放在/var/log/,默认日志名为mysql.log
当我们更改了mysql的uuid,并进行重启mysql时,会报错,但是报错信息不会告诉你,是哪里有了问题,但是在报错日志中,我们可以知道是哪个文件有问题
2.二进制日志
记录了所有DDL语句和DML语句,但不包括数据查询语句(select、show)
2.1作用
1.灾难时的数据恢复:可以使用 mysqlbinlog对二进制日志文件进行重构
2.MySQL的主从复制(后面会重点学习):主从复制主要是基于二进制日志
2.2日志格式
日志格式主要有三种:
1.statement:基于sql语句的日志记录,记录的是sql语句,对数据库进行修改的sql都会记录在日志文件中。
2. row:基于行的日志记录,记录的是每一行的数据变更
3.mixd:混合了ststement和row两种格式,默认采用statememnt,在某种特殊情况下会自动切换为row进行记录
通过此系统变量来查看二进制日志相关的参数配置
show varitables like '%binlog_format%';
2.3 查看二进制日志文件
mysqlbinlog 参数选项 二进制日志文件名
参数选项:-d 指定数据库
-v 将行事件重构为sql语句
-w 将行数据重构为sql语句,并输出注释信息
2.4日志删除
清理二进制日志文件
- reset master 删除全部binlog日志
- purge master logs to 'binlog.***' 删除***编号之前的所有日志
- purge master logs before '时间' 删除时间之前生产的所有日志
3.查询日志
记录了客户端的所有操作语句,而二进制日志不包含查询数据的sql语句,查询日志默认未开启。
3.1注意
- 1.查询日志由于记录客户端的所有操作语句,会产生额外的I/O开销,建议在生产环境中慎重考虑
- 2.长时间运行后,该日志文件将会非常大,所以用不上此日志文件,我们可以把它关上
- 3.优化数据库性能时,查询日志是一个有力的工具
3.2开启查询日志配置
流程如下:
1.找到对应参数show variables like '%general%';
2.修改MySQL的配置文件 /etc/my.cnf
3.添加
general_log = 1 开启查询日志
general_log_file = /var/lib/mysql/mysql_query.log 设置日志文件名
进行配置/etc/my.cnf
如图可见,我们的查询日志就开启啦
这是查询日志的内容,可以看到SQL语句
4.慢查询日志
记录了所有执行时间超过参数long_query_time设置值并且扫描记录不小于min_examined_row_limit的所由sql语句,默认未开启。
long_query_time默认为10秒1,最小为0,精度可以到微秒
4.1作用
- 1.发现性能问题
- 2.优化查询语句
- 3.监控数据库健康状态
4.2开启慢查询日志
流程如下:
1.修改MySQL的配置文件 /etc/my.cnf
2.添加
slow_query_log = 1 开启慢查询日志
long_query_time = 2 调整为两秒
3.默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。
但是可以更改此行为:
log_slow_admin_statements = 1
#记录执行较慢的管理语句
log_queries_not_using_indexes = 1
#记录执行较慢的未使用索引的语句
进行配置/etc/my.cnf
慢查询日志开启