mysql日志

1.错误日志

记录 MySQL 服务器在启动、运行和停止过程中发生的错误和警告信息,对于排查和诊断问题非常有用。

可以通过此命令获取当前MySQL配置的错误日志路径:

SHOW VARIABLES LIKE 'log_error';

SHOW VARIABLES LIKE '%log_error%';    ---更多地展示相关的变量及对应的值

例子:

修改了MySQL中的auto.cnf文件中的UUID,报错日志为:

2023-09-12T09:52:09.009009Z 0 [ERROR] The server_uuid stored in auto.cnf file is not a valid UUID.
2023-09-12T09:52:09.009026Z 0 [ERROR] Initialization of the server's UUID failed because it could not be read from the auto.cnf file. If this is a new server, the initialization failed because it was not possible to generate a new UUID.
可以看到日志中给我们指明了错误所在的文件,和具体错误的信息

2.二进制日志

binlog记录所有对数据库进行更改的操作,包括数据修改和结构变更。它可以用于数据恢复、复制和故障恢复。 记录所有DDL(数据定义语言)语句和DML(数据操纵语言)语句,不包括数据查询(SELECT、SHOW)语句。

通过此命令获取二进制日志相关信息及存放路径:

show variables like '%log_bin%';
作用:1.灾难时数据恢复

           2.MySQL主从复制

格式:

  1. Statement:记录 SQL 语句的原始文本,对数据进行修改的sql都会记录在日志文件中
  2. Row:记录对行的更改,记录每一行的数据变更
  3. Mixed:结合了 Statement 和 Row 两种格式,默认为Statement ,根据情况选择合适的记录方式,,某些特殊情况下会自动切换为row进行记录

mysql>show variables like 'binlog_format';    查看日志格式为ROW
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)
 

修改/etc/my.cnf,添加binlog_format=STATEMENT,可以把日志格式改为STATEMENT

清除二进制日志的方式:

reset master 删除全部的binlog日志,删除之后日志编号从000001开始

purge master logs to ‘binlog.000002'; 删除binlog.000002日志之前的所有日志

purge master logs before ‘yyyy-mm-dd hh24:mi:ss’ 删除日志为yyy-mm-dd hh24:mi:ss之前产生的所有日志

也可以设置二进制日志过期自动删除:

在/etc/my.cnf中设置

binlog_expire_logs_seconds=2592000      ---以秒为单位,默认30天

3.查询日志

查询日志默认关闭

show variables like '%general%';
+------------------+--------------------+
| Variable_name    | Value              |
+------------------+--------------------+
| general_log      | OFF                |
| general_log_file | /data/mysql/lb.log |
+------------------+--------------------+
2 rows in set (0.01 sec)
修改my.cnf,增加:

general_log=1
general_log_file=/data/mysql/query.log
 

重启mysqld:

service mysqld restart

查看查询日志:

tail -f /data/mysql/query.log
/usr/local/mysql/bin/mysqld, Version: 5.7.43-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /data/mysql/mysql.sock
Time                 Id Command    Argument
2023-09-13T03:24:01.321877Z        2 Connect    root@localhost on yunwei using Socket
2023-09-13T03:24:01.323028Z        2 Query    show databases
2023-09-13T03:24:01.323361Z        2 Query    show tables
2023-09-13T03:24:01.323613Z        2 Field List    lq 
2023-09-13T03:24:01.327137Z        2 Query    show tables

4.慢查询日志

慢查询日志(Slow Query Log)是 MySQL 数据库中一种记录执行时间超过一定阈值的查询语句的功能。它记录了执行时间超过预设阈值(通常以秒为单位)的查询语句,以帮助开发人员和数据库管理员识别和优化性能较差的查询。

记录了所有执行时间超过参数long_query_time设置值并且扫描记录数不小于min_examined_row_limit的所有sql语句的日志,默认不开启。

long_query_time默认值为10秒,最小为0,精确可以到微秒。

slow_query_log=1         ---开启慢查询日志

long_query_time=2       ---设置参数为2秒,超过2秒则为慢sql

默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。可以使用log_slow_admin_statements和 log_queries_not_using_indexes

如果需要开启,可以在my.cnf添加配置如下:

   log_slow_admin_statements=1    ---记录执行较慢的管理语句

   log_queries_not_using_indexes = 1     记录执行较慢的未使用索引的语句


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值