首页 > 数据库 >MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志

MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志

时间:2023-05-09 20:34:30浏览次数:59  
标签:二十二 log MySQL mysqld mysql var 日志

MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志


1 MySQL支持的日志


1.1 日志类型
  • 慢查询日志:记录执行时间超过long_query_time的所有查询,方便我们对查询进行优化
  • 通用查询日志:记录所有连接的起始和终止时间,以及连接发送给数据库的所有指令,对复原操作的实际场景、发现问题甚至是对数据库操作的审计都有很大的作用
  • 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便了解服务器的状态,从而对服务器进行维护
  • 二进制日志:记录所有更新数据的语句,可以用于主从服务器之间的数据同步以及服务器遇到故障的时候数据的无损失恢复
  • 中继日志(MySQL8.0新增):用于主从服务器架构中,从服务器用来存放主服务器二进制文件内容的一个中间文件,从服务器通过读取中继日志的内容,来同步主服务器上的操作
  • 数据定义语句日志(MySQL8.0新增):记录数据定义语句执行的元数据操作

除了二进制日志外,其他的文件都是文本文件。默认情况下,所有的日志文件都创建于MySQL数据目录中。

1.2 日志的弊端
  • 日志功能会降低MySQL的性能。例如在查询频繁的数据库中开启通用查询日志和慢查询日志,MySQL数据库会花费很多时间去记录日志
  • 日志文件会占据大量的磁盘空间

2 慢查询日志


​ 详见MySQL(十三)MySQL性能分析工具:慢查询日志与PROFILE查询成本

3 通用查询日志


​ 通用查询日志记录所有连接的起始和终止时间,以及连接发送给数据库的所有指令,对复原操作的实际场景、发现问题甚至是对数据库操作的审计都有很大的作用

3.1 问题场景
image-20230509143607789
3.2 查看当前状态
mysql> show variables like '%general%';
+------------------+---------------------------------+
| Variable_name    | Value                           |
+------------------+---------------------------------+
| general_log      | OFF                             |
| general_log_file | /var/lib/mysql/89d64201156e.log |
+------------------+---------------------------------+
2 rows in set (0.00 sec)

general_log:通用日志状态,默认是关闭的

general_log_file:通用日志生成路径,没有开启通用日志是查不到的

3.3 启动日志
  • 永久修改,在my.conf配置文件中的[mysqld]组下加入log选项,并重启MySQL服务

    [mysqld]
    genral_log = on
    genral_log_file = xxx # 如果不指定,默认为hostname.log
    
  • 临时性方式

    mysql> set global general_log = on;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> cat /var/lib/mysql/89d64201156e.log;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cat /var/lib/mysql/89d64201156e.log' at line 1
    mysql> show variables like '%general%';
    +------------------+---------------------------------+
    | Variable_name    | Value                           |
    +------------------+---------------------------------+
    | general_log      | ON                              |
    | general_log_file | /var/lib/mysql/89d64201156e.log |
    +------------------+---------------------------------+
    2 rows in set (0.01 sec)
    

    设置完成后即可查看:

    bash-4.4# cat /var/lib/mysql/89d64201156e.log
    /usr/sbin/mysqld, Version: 8.0.31 (MySQL Community Server - GPL). started with:
    Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
    Time                 Id Command    Argument
    2023-05-09T06:38:42.730222Z      3596 Query     show variables like '%general%'
    
3.4 停止日志
  • 永久修改,在my.conf配置文件中的[mysqld]组下加入log=off选项或者注释掉,并重启MySQL服务

    [mysqld]
    general_log = off
    #general_log = off
    
  • 临时性方式

    SET GLOBAL general_log = off;
    
3.5 删除、刷新日志

​ 如果数据使用特别频繁,那么通用查询日志会占用服务器特别大的磁盘空间,数据管理员可以删除很长时间之前的通用查询日志,以保证MySQL服务器上的磁盘空间。

​ 然后使用下面的命令重新生成通用查询日志文件,前提是一定要开启通用日志

mysqladmin -uroot -p flush-logs;

​ 如果希望备份原文件:

bash-4.4# cd /var/lib/mysql/                
bash-4.4# ls
'#ib_16384_0.dblwr'   89d64201156e.log   binlog.000007   binlog.000011   binlog.000015   ca.pem            dbtest2         grainmall_sms    ibdata1     mysql.sock           public_key.pem    sys
'#ib_16384_1.dblwr'   atguigudb          binlog.000008   binlog.000012   binlog.index    client-cert.pem   document        grainmall_ums    ibtmp1      mysqlTest            renren_fast       undo_001
'#innodb_redo'        atguigudb1         binlog.000009   binlog.000013   blog            client-key.pem    grainmall_oms   grainmall_wms    mysql       performance_schema   server-cert.pem   undo_002
'#innodb_temp'        auto.cnf           binlog.000010   binlog.000014   ca-key.pem      dbtest1           grainmall_pms   ib_buffer_pool   mysql.ibd   private_key.pem      server-key.pem
# 备份日志文件
bash-4.4# mv /var/lib/mysql/89d64201156e.log /var/lib/mysql/89d64201156e.log.bak

# 重新生成
bash-4.4# mysqladmin -uroot -p flush-logs;
Enter password: 

bash-4.4# cat /var/lib/mysql/89d64201156e.log;
/usr/sbin/mysqld, Version: 8.0.31 (MySQL Community Server - GPL). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
2023-05-09T06:53:27.135253Z      3613 Quit

4 错误日志


错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便了解服务器的状态,从而对服务器进行维护。如果MySQL服务出现异常,错误日志是发现问题解决问题的首选

4.1 启动日志

​ 在MySQL中错误日志功能是默认开启的,并且无法关闭。默认情况下错误日志存储在mysql数据目录下的mysqld.log(linux系统)或hostname.err(mac系统)。如果需要更改可以在my.cnf配置文件中进行配置:

[mysqld]
log-error=xxxx
4.2 查看日志
mysql> show variables like 'log_err%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| log_error           | /var/log/mysqld.log |
| log_error_verbosity | 3                   |
+---------------------+---------------------+
2 rows in set (0.02 sec)

image-20230509151455128

​ 可以看到错误日志中记录了服务器启动的时间,以及存储引擎InnoDB启动和停止的时间,最初在做初始化的时候生成的数据库初始密码也是放在mysqld.log文件中的。

4.3 删除、刷新日志

​ 和上面通用日志差不多,但是这里可能会报错,这是由于flush-logs的更新:

  • MySQL5.5.7以前的版本,flush-logs会将错误日志重命名为filename.err_old,并创建新的日志

  • MySQL5.5.7开始,flush-logs只是重新打开日志文件,并不会做日志的备份和创建工作,所以需要自行创建新日志文件

    install -omysql -gmysql -m0644 /dev/null /var/log/mysqld.log
    
mysqladmin -uroot -p flush-logs;
MySQL 8新特性
image-20230509152235466

标签:二十二,log,MySQL,mysqld,mysql,var,日志
From: https://www.cnblogs.com/tod4/p/17386178.html

相关文章

  • yolov5训练栏杆检测模型日志记录
    yolov5训练栏杆检测模型日志记录 (wind_2021)H:\PytorchProject\yolov5_train_xinru_2023050901>(wind_2021)H:\PytorchProject\yolov5_train_xinru_2023050901>(wind_2021)H:\PytorchProject\yolov5_train_xinru_2023050901>(wind_2021)H:\PytorchProject\yol......
  • Method com/mysql/jdbc/JDBC4ResultSet.getObject(Ljava/lang/String;Ljava/lang/Clas
      mybatis-plus生成的日期类型默认是localdatetime,数据库是datetime,按道理转换应该可以,我又不想把实体类转换成date查看依赖<--locadate/locadatetime的时间依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-ty......
  • KingbaseES V8R6运维案例之---MySQL和KingbaseES字符串排序规则对比
    案例说明:相同数据排序后查询,在MySQL和KingbaseES下得到的排序顺序不一致,本案例从MySQL和KingbaseES的排序规则分析,两种数据库排序的异同点。适用版本:KingbaseESV8R6、MySQL8.0一、MySQL的排序规则1、排序规则(collation)排序规则是依赖于字符集,字符集是用来定义MySQL存储不......
  • KingbaseES 实现 MySQL 函数 last_insert_id
    用户从mysql迁移到金仓数据库过程中,应用中使用了mysql函数last_insert_id()来获取最近insert的那行记录的自增字段值。mysql文档中关于函数的说明和例子:LAST_INSERT_ID()如果没有参数,则LAST_INSERT_ID()返回一个BIGINTUNSIGNED(64位)值,表示AUTO_INCREMENT由于最近执行的INSERT语......
  • 单例模型中懒汉模型,饿汉模型,枚举与日志等级
    1.单例模型将构造器私有化,控制创建对象的个数懒汉模型时间换空间符合单线程多线程不可以synchronized同步锁使单例可以一直用但效率不行单例模型一般使用在一台机器Asynchronized异步锁饿汉模型空间换时间可以解决安全利用JVM利用static只初始化一次......
  • MySQL实现树形查询
    需要mysql8以上,5.7不支持  https://www.jianshu.com/p/f908aa35d448  CREATETABLE`perm_resource`(`resource_id`varchar(50)NOTNULLCOMMENT'资源ID',`resource_name`varchar(100)DEFAULTNULLCOMMENT'资源名称',`resource_parent_id`var......
  • mysql 去重分组后取每组时间最新的一条记录
    mysql去重分组后取每组时间最新的一条记录第一步:先分组后取到分组的那个id以及每个组最新的数据--先根据课程分组,然后在取这组统计数据中最先的日期selectCourseID,MAX(CountDate)asCountDate fromRep_school_class_course_count_data_cod......
  • MySQL笔记之文件和日志
    一、存储文件1、存放位置MySQL数据库会在data目录下,以数据库为名,为每一个数据库建立文件夹,用来存储数据库中的表文件数据。不同的数据库引擎,每个表的扩展名也不一样,例如:MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”等。 2、FRM表结构信息文件无论是哪种存储引擎,创建表之......
  • linux定时备份日志文件脚本,重启jar简易脚本
     1.编写脚本文件saveLogs.sh (备份文件到指定位置重命名,然后情况文件继续写入)  cp/opt/zcgl/zcgl.log/opt/zcgl/logs/zcgl-`date+%Y%m%d`.log&  sleep2  >zcgl.log2. 定时脚本crontab 打开设置:crontab-e 输入内容:5923***sh/opt/zcgl/saveLogs.......
  • php:7-cli-apline安装mysql redis mongo扩展模块
    apkadd--no-cachebuild-dependenciesbuild-baseopenssl-devautoconfg++libtoolmakecurl-devlibxml2-devlinux-headersdocker-php-ext-install-j2mysqlidocker-php-ext-installpdo_mysqlpeclinstallmongodb-1.2.2echo"extension=mongodb.so"......