首页 > 数据库 >Mysql中关于查询日志的配置详解

Mysql中关于查询日志的配置详解

时间:2023-02-26 14:04:45浏览次数:40  
标签:log mysql general 详解 Mysql MySQL 日志 查询


查询日志

MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。


开启查询日志

MySQL默认情况下没有开启查询日志,如果需要开启查询日志,则需要在 ​​my.cnf​​​ 文件或者 ​​my.ini​​​ 文件的 ​​[mysqld]​​ 选项下进行配置。例如,配置开启 MySQL 的查询日志:


[mysqld]
general_log = 1
general_log_file = /data/mysql/log/general_log/general_statement.log
log_output = FILE

各种配置说明如下:

·​​general_log​​​:表示是否开启查询日志。此项设置为 ​​1​​​ 或者不带任何值,都可以开启查询日志;设置为0或者在 ​​my.cnf​​​ 文件或 ​​my.ini​​ 文件中没有配置此项,则不会开启查询日志。

·​​general_log_file​​:查询日志的文件目录,笔者这里配置的是日志的完整路径。

·​​log_output​​:表示日志的存储方式,可以有 3 种取值,​​TABLE​​​ 表示将查询日志存储到数据表中;​​FILE​​ 表示将查询日志保存到文件中;NONE表示不保存日志信息到数据表和文件中。

注意:开启查询日志时,如果没有显示指定 ​​general_log_file​​​ 选项和 ​​log_output​​​ 选项的值,则 MySQL 会将查询日志保存到 DATADIR 选项指定的目录下(也就是数据库中的数据目录),默认的文件名称为 ​​host_name.log​​ ,其中,host_name 为 MySQL 的主机名。

配置开启查询日志之前,首先查看 ​​/data/mysql/log/general_log​​ 目录下的文件信息。

[root@binghe150 ~]# 
[root@binghe150 ~]# ll /data/mysql/log/general_log/
total 0

当未配置 MySQL 的查询日志时,​​/data/mysql/log/general_log/​​ 目录下不存在任何文件。

开启查询日志配置完成后,需要重启MySQL服务才能生效。

[root@binghe150 ~]# service mysqld restart
Shutting down MySQL..... SUCCESS!
Starting MySQL........ SUCCESS!

也可以在MySQL命令行中指定开启MySQL的查询日志。

mysql> SET GLOBAL general_log = 1;
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL general_log_file = '/data/mysql/log/general_log/general_statement.log';
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL log_output = 'file';
Query OK, 0 rows affected (0.00 sec)

此时,再次查看 ​​/data/mysql/log/general_log/​​目录下的文件。

[root@binghe150 ~]# ll /data/mysql/log/general_log/
total 4
-rw-r----- 1 mysql mysql 547 Jan 17 11:39 general_statement.log

当开启查询日志配置完成后,MySQL会自动创建general_log_file选项指定的日志文件。

查看查询日志

如果log_output选项配置的是将查询日志保存到文件中,则日志文件的格式为纯文本格式,可以直接查看日志文件中的内容。


cat /data/mysql/log/general_log/general_statement.log

Mysql中关于查询日志的配置详解_MySQL


查询日志中记录了所有的SQL语句的信息。

删除查询日志

  1. 直接找到日志目录即可删除日志记录。
rm -rf /data/mysql/log/general_log/general_statement.log
  1. 刷新日志
  • 刷新前日志记录如下:
  • Mysql中关于查询日志的配置详解_MySQL_02

  • 刷新查询日志
  • 可以在MySQL命令行中执行如下命令刷新日志。
mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.02 sec)
  • 也可以在服务器命令行中执行如下命令刷新日志。
[root@binghe150 ~]# mysqladmin -uroot -p flush-logs
Enter password:

日志刷新成功,再次查看 ​​/data/mysql/log/general_log​​ 目录下的文件。

  • 执行刷新命令后日志记录如下:

关闭查询日志

关闭查询日志就比较简单了,只需要在 ​​my.cnf​​​ 文件或者 ​​my.ini​​​ 文件的 ​​[mysqld]​​​ 选项下,将 ​​general_log​​​ 选项配置为 0 ,或者删除 ​​general_log​​ 选项。

[mysqld]
general_log = 0

配置完成后,重启 MySQL 才能生效。

也可以在 MySQL 命令行中执行如下命令关闭查询日志。

mysql> SET GLOBAL general_log = 0;
Query OK, 0 rows affected (0.00 sec)

当关闭查询日志后删除查询日志,再执行刷新日志的操作,MySQL 将不再重新创建查询日志文件。


标签:log,mysql,general,详解,Mysql,MySQL,日志,查询
From: https://blog.51cto.com/zhaoyanfei/6086433

相关文章

  • stm32f407探索者开发板(十八)——串口通信实验讲解(USART_RX_STA流程图详解)
    文章目录​​一、uart_init(串口初始化)​​​​二、USART1_IRQHandler(串口1中断服务程序)​​​​三、main.c(主函数)​​​​四、关于printf的支持​​一、uart_init(串口初始化......
  • 双绞线详解
    双绞线一般由两根22~26号绝缘铜导线相互缠绕而成,“双绞线”的名字也是由此而来。双绞线内部介质也是铜线,内部传输为电信号,根据电磁原理,变化的电流会产生磁场。所以,缠绕的目......
  • pymysql的使用
    1.查询_字典形式输出:   2.查询_元组形式输出:   3.插入:   4.删除:   5.修改:  ......
  • 综合布线系统(结构化布线系统)详解
    综合布线七大子系统:进线间子系统设备间子系统管理间子系统垂直子系统水平子系统工作区子系统建筑群子系统1、进线间子系统进线间是建筑物外部通信和信息管线的入......
  • MariaDB MaxScale实现mysql8读写分离
    1.MaxScale是干什么的?MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。......
  • MySQL
    MySQLMySQL执行流程客户端向MySQL发起请求(一般使用数据库连接池减少线程的开关)MySQLServer开始执行连接器:控制用户的连接分析器:词法分析,语法分析优化......
  • Golang基于Mysql分布式锁实现集群主备
    背景集群中如果需要主备,可以基于Redis、zk的分布式锁等实现,本文将介绍如何利用Mysql分布式锁进行实现。原理数据库中包含数据字段(此处为Master的主机名)、版本号和上......
  • 7.mysql索引失效
       失效的七字口诀:模型数空运最快模:模糊查询以%开始索引失效;型:数据类型转换函数:函数的索引空:索引列为空不走索引,运:对索引列进行加减乘除会失效最:不按聚合索......
  • pymysql操作
    1、首相导入模块pymysql importpymysql2、创建连接 conn=pymysql.connect( host='远程数据库IP地址', port=远程数据库端口, user='数据库账号', password......
  • gorm日志输出到文件
    日志原理分析gorm手册上写着,如果需要自定义logger,则需要实现如下接口:typeInterfaceinterface{LogMode(LogLevel)InterfaceInfo(context.Context,string,......