码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL 8.0 架构 之 通用查询日志(General Query Log)


    文章目录

    • MySQL 8.0 架构 之通用查询日志(General Query Log)
      • MySQL通用查询日志(General Query Log)
      • 通用查询日志相关参数
        • general_log
        • general_log_file
        • log_output
        • 1.设置通用查询日志例 (输出到文件)
          • 1.1.启用前确认变量的设置状态。
          • 1.2.启用通用查询日志
          • 1.3.执行操作
          • 1.4.查看通用查询日志
          • 1.5.禁用通用查询日志
          • 1.6. 关闭后确认变量的设置状态。
      • 参考

    【声明】文章仅供学习交流,观点代表个人,与任何公司无关。
    来源|Walt@SQL和数据库技术(ID:SQLplusDB)

    MySQL 8.0 OCP (1Z0-908) 考点概要

    MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
    【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量
    【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
    【MySQL】MySQL系统变量(system variables)列表(SHOW VARIABLES 的结果例)
    MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要

    MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图
    MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认

    MySQL 8.0 性能优化之 EXPLAIN ANALYZE
    MySQL 8.0 性能优化之 慢速查询日志(slow query log)
    MySQL 8.0 性能优化之 表连接算法(join algorithm)
    MySQL 8.0 性能优化之 MySQL Enterprise Monitor之Query Analyzer

    MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)

    MySQL 8.0 架构 之数据字典(Data Dictionary)

    MySQL 8.0 InnoDB Tablespaces之System Tablespace(系统表空间)
    MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)
    MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)
    MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces(临时表空间)
    MySQL 8.0 InnoDB Tablespaces之Undo Tablespaces(UNDO表空间)

    【MySQL】在数据目录之外创建InnoDB 表(Creating Tables Externally)

    MySQL 8.0 InnoDB 架构之 日志缓冲区(Log Buffer)和重做日志(Redo Log)

    MySQL 8.0 架构 之错误日志文件(Error Log)(1)
    MySQL 8.0 架构 之错误日志文件(Error Log)(2)

    MySQL 8.0 架构 之通用查询日志(General Query Log)

    MySQL中有多种类型的日志文件,这些日志可用于故障排除、性能调整和审计等目的,帮助找出正在发生的活动。

    常见的日志文件包括:

    日志类型写入日志的信息
    错误日志(Error log)启动、运行或停止mysqld时遇到的问题
    二进制日志(Binary log)更改数据的语句(也用于复制)
    中继日志(Relay log)从复制源服务器接收到的数据更改
    通用查询日志(General query log)已建立的客户端连接和从客户端接收到的语句
    慢查询日志(Slow query log)执行时间超过long_query_time秒的查询
    DDL日志(元数据日志)(DDL log)DDL语句执行的元数据操作

    MySQL通用查询日志(General Query Log)

    通用查询日志(General Query Log)用于记录MySQL服务器(mysqld)正在执行的操作。当客户端连接或断开连接时,服务器会将信息写入此日志,并记录从客户端接收到的SQL语句。

    默认情况下,一般查询日志是禁用的。当启用后,MySQL服务器会按照接收顺序将SQL语句写入查询日志,这可能会与执行顺序有所不同。

    通用查询日志(General Query Log)一般用在怀疑客户端存在错误或者希望了解客户端发送给服务器的详细内容的场景。

    通用查询日志相关参数

    通用查询日志(General Query Log)相关的变量主要包括如下内容:

    mysql> SHOW VARIABLES LIKE '%general%';
    +------------------+-----------------------------+
    | Variable_name    | Value                       |
    +------------------+-----------------------------+
    | general_log      | OFF                         |
    | general_log_file | /var/lib/mysql/mysql-vm.log |
    +------------------+-----------------------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • general_log 变量用于控制是否启用通用查询日志。
    • general_log_file变量用于控制通用查询日志的文件名。

    general_log

    general_log 变量用于控制是否启用通用查询日志。默认值为禁用。
    另外,通用查询日志输出的目标还和log_output系统变量有关,如果log_output值为NONE,则即使启用通用查询日志,也不会写入任何日志信息。

    启用和禁用的设定例:

    SET GLOBAL general_log = 'ON';
    SET GLOBAL general_log = 'OFF';
    
    • 1
    • 2

    参数详细:
    | Command-Line Format | --general-log[={OFF|ON}] |
    |------------------------|--------------------------|
    | System Variable | general_log |
    | Scope | Global |
    | Dynamic | Yes |
    | SET_VAR Hint Applies | No |
    | Type | Boolean |
    | Default Value | OFF |

    参考:
    general_log_file
    https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_general_log

    general_log_file

    general_log_file变量用于控制通用查询日志的文件名。默认值为host_name.log。

    Command-Line Format–general-log-file=file_name
    System Variablegeneral_log_file
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeFile name
    Default Valuehost_name.log

    参考:
    general_log_file
    https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_general_log_file

    log_output

    log_output用于控制通用查询日志(General Query Log)和慢查询日志(slow query log)输出的格式。

    TABLE:将日志记录到表中。通用查询日志(General Query Log)和慢查询日志(slow query log)分别对应mysql.general_log和mysql.slow_log表
    FILE:将日志记录到文件中。(默认值)
    NONE :禁用日志记录(优先于其他设置)。
    
    • 1
    • 2
    • 3

    参数详细:

    Command-Line Format–log-output=name
    System Variablelog_output
    ScopeGlobal
    DynamicYes
    SET_VAR Hint AppliesNo
    TypeSet
    Default ValueFILE
    Valid ValuesTABLE, FILE, NONE

    参考:
    log_output
    https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_log_output

    log_output的值为TABLE时,输出目标通用查询日志(General Query Log)的表定义如下。

    mysql> SHOW CREATE TABLE mysql.general_log\G
    *************************** 1. row ***************************
           Table: general_log
    Create Table: CREATE TABLE `general_log` (
      `event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
      `user_host` mediumtext NOT NULL,
      `thread_id` bigint unsigned NOT NULL,
      `server_id` int unsigned NOT NULL,
      `command_type` varchar(64) NOT NULL,
      `argument` mediumblob NOT NULL
    ) ENGINE=CSV DEFAULT CHARSET=utf8mb3 COMMENT='General log'
    1 row in set (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    1.设置通用查询日志例 (输出到文件)

    下面演示一下如何设置通用查询日志。

    1.1.启用前确认变量的设置状态。
    mysql> SHOW VARIABLES LIKE '%general%';
    +------------------+-----------------------------+
    | Variable_name    | Value                       |
    +------------------+-----------------------------+
    | general_log      | OFF                         |
    | general_log_file | /var/lib/mysql/mysql-vm.log |
    +------------------+-----------------------------+
    2 rows in set (0.00 sec)
    
    mysql> SHOW VARIABLES LIKE 'log_output';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    1.2.启用通用查询日志
    mysql> SET GLOBAL general_log = 'ON';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    1.3.执行操作
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | employees          |
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | testdb             |
    | world              |
    | world_x            |
    +--------------------+
    9 rows in set (0.00 sec)
    
    mysql> use employees;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +----------------------+
    | Tables_in_employees  |
    +----------------------+
    | current_dept_emp     |
    | departments          |
    | dept_emp             |
    | dept_emp_latest_date |
    | dept_manager         |
    | employees            |
    | employees_t          |
    | salaries             |
    | titles               |
    +----------------------+
    9 rows in set (0.01 sec)
    
    mysql> select count(*) from employees;
    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    1 row in set (0.14 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    1.4.查看通用查询日志

    通过OS命令查看通用查询日志。

    ubuntu@mysql-vm:~$ sudo more /var/lib/mysql/mysql-vm.log
    /usr/sbin/mysqld, Version: 8.0.35-0ubuntu0.22.04.1 ((Ubuntu)). started with:
    Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
    Time                 Id Command    Argument
    2023-12-31T14:32:02.135073Z        10 Query     show databases
    2023-12-31T14:32:19.343316Z        10 Query     SELECT DATABASE()
    2023-12-31T14:32:35.743159Z        10 Init DB   employees
    2023-12-31T14:32:35.744393Z        10 Query     show databases
    2023-12-31T14:32:35.745216Z        10 Query     show tables
    2023-12-31T14:32:35.747175Z        10 Field List        current_dept_emp
    2023-12-31T14:32:35.764138Z        10 Field List        departments
    2023-12-31T14:32:35.766528Z        10 Field List        dept_emp
    2023-12-31T14:32:35.766667Z        10 Field List        dept_emp_latest_date
    2023-12-31T14:32:35.766935Z        10 Field List        dept_manager
    2023-12-31T14:32:35.767356Z        10 Field List        employees
    2023-12-31T14:32:35.770947Z        10 Field List        employees_t
    2023-12-31T14:32:35.772111Z        10 Field List        salaries
    2023-12-31T14:32:35.772519Z        10 Field List        titles
    2023-12-31T14:32:38.751537Z        10 Query     show tables
    2023-12-31T14:32:53.823039Z        10 Query     select count(*) from employees
    ubuntu@mysql-vm:~$
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    1.5.禁用通用查询日志
    mysql> SET GLOBAL general_log = 'OFF';
    Query OK, 0 rows affected (0.00 sec)
    
    
    • 1
    • 2
    • 3
    1.6. 关闭后确认变量的设置状态。
    mysql> SHOW VARIABLES LIKE '%general%';
    +------------------+-----------------------------+
    | Variable_name    | Value                       |
    +------------------+-----------------------------+
    | general_log      | OFF                         |
    | general_log_file | /var/lib/mysql/mysql-vm.log |
    +------------------+-----------------------------+
    2 rows in set (0.00 sec)
    
    mysql> SHOW VARIABLES LIKE 'log_output';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    mysql>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    参考

    7.4.3 The General Query Log
    https://dev.mysql.com/doc/refman/8.0/en/query-log.html

    7.4.1 Selecting General Query Log and Slow Query Log Output Destinations
    https://dev.mysql.com/doc/refman/8.0/en/log-destinations.html

  • 相关阅读:
    【鸿蒙应用ArkTS开发系列】- 灌水区,鸿蒙ArkTs开发有问题可以在该帖中反馈
    中国首个《发行NFT数字藏品合规操作指引》正式发布
    《TCPIP网络编程》课后练习答案第一部分6~10章 尹圣雨
    边端融合系统安全风险分析及评估方法
    博物馆预约管理系统的设计与实现(论文+源码)_kaic
    每日五问(java)
    OpenCV图像加载、显示与保存
    利用tensorflow.js在线实现图像要素识别提取
    【漏洞库】Fastjson_1.2.24_rce
    spring全家桶
  • 原文地址:https://blog.csdn.net/lukeUnique/article/details/135731214
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号