MySQL --- 日志(二进制日志、错误日志、慢日志、通用日志)

本文详细介绍了MySQL的四种主要日志类型:慢查询日志、通用查询日志、错误日志和二进制日志。慢查询日志用于优化长执行时间的SQL;通用查询日志记录所有操作,但可能消耗大量资源;错误日志记录服务器状态和问题;二进制日志用于数据同步和恢复。各日志的开启、配置及管理方法也进行了说明。
摘要由CSDN通过智能技术生成

日志的类型

MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志错误日志通用查询日志慢查询日志,这也是常用的4种。使用这些日志文件,可以查看MySQL内部发生的事情。

  • 慢查询日志(slow query log):记录所有执行时间超过long_query_time的sql语句,方便我们对查询进行优化。
  • 通用查询日志(general_log):记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数[据库操作的审计都有很大的帮助。
  • 错误日志(error log):记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
  • 二进制日志(bin log):记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据的无损失恢复。

存放路径:日志存放在数据目录下/data/mysql 目录下

日志的弊端

  • 日志功能会降低MySQL数据库的性能。
  • 日志会占用大量的磁盘空间。

慢查询日志(slow query log)

文件名:主机名-slow.log
作用:记录消耗时间比较长的SQL语句,为提升数据库性能提供了线索
在数据库里启用慢日志,找到运行时间较长的SQL语句,并对该语句进行优化,从而提升数据库性能。

show variables like "%long_query%"; 查看执行指令()时间较慢的设定标准时间,若超过该设定的时间,,则判定为慢SQL语句,会写入慢日志。(默认为10【毫秒】)

show variable like "slow";查看慢日志是否开启,默认关闭

开启慢日志

临时修改:set global slow_query_log = 1
永久修改:vim /etc/my.cnf

#slow  log
slow_query_log = 1   			# 设置开启
long_query_time = 0.01    		# 设置标准时间0.01秒
log_slow_admin_statements = 1   # 记录管理语句,默认情况管理语句超时是不记录的。

测试慢日志

select sleep(0.01); 
select sleep(0.0001);   

通用查询日志(general_log)

show variables like "%general%"; 查看通用日志是否开启,默认关闭,文件放在/data/mysql/主机名.log

作用:记录所有的SQL操作。
缺点:消耗大量的磁盘空间、cpu、内存、磁盘资源

开启通用日志

临时修改:set global general_log = 1
永久修改:vim /etc/my.cnf

general_log
# general_log_file=指定路径目录

错误日志(error log)

主机名.err ( 如:localhos t.err,wanglianfang.err)

错误日志是默认开启

记录内容:登录失败、配置文件出错、启动过程出现问题都会记录到错误日志

查看错误日志的路径 show variables like "log_error";

二进制日志(bin log)

路径:/data/mysql/主机名-bin.index文件
保存了有多少个二进制日志的文件名 (二进制文件索引)

作用:可以用来恢复数据和主从复制。记录了DML、DDL、DCL等修改了数据的操作

show variables like "%log_bin%"; 查看二进制日志是否开启,默认没有开启
show binary logs;查看所有的二进制文件及其大小
show master status; 查看当前正在使用哪个二进制日志
show variables like "%max_binlog_size%"; 查看二进制日志文件最大值,默认1G
show variables like "%binlog_format%"; 查看是二进制日志内容是什么格式

statment level 记录用户输入的每句SQL,MariaDB默认
row level 记录操作的每一行数据(表里面的哪些行的数据发生了变化) ==>mysql (这种格式更好)
mixed level 混合的

开启二进制日志
永久修改 vim /etc/my.cnf

log_bin
# server_id = 1       # id 用于主从复制时,区分主服务和从服务

service mysqld restart 刷新服务

产生新二进制日志的情况

  • service mysqld restart; 刷新服务
  • flush logs; 不会中断mysqld进程
  • 当日志达到最大值1G时。
    以上三种情况都可能产生新的二进制文件,因此开启二进制日志后,我们很容易在/data/mysql下看到很多个二进制文件(及时清理不需要的二进制内存,否则占大量内存)

删除二进制日志
reset master; 删除所有的二进制日志
purge binary logs before '2022-07-28 21:30:00'; 指定时间之前的日志清理
purge binary logs to 'wanglianfang-bin.000002'; 指定日志文件之前的日志清理
清理超过3天的日志(一次性) set global expire_logs_days = 3

配置自动清理

vim   /etc/my.cnf
expire_logs_days = 3      # 日志超过3天自动清理 

查看二进制日志
mysqlbinlog命令 , 在Linux里(不是mysql内)
mysqlbinlog wanglianfang-bin.00000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值