• MySQL数据库的日志管理


    前言

    备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。而备份、恢复中,日志起到了很重要的作用

    一、日志

    • MySQL 的日志默认保存位置为/usr/local/mysql/data
    • MySQL的配置文件在/etc/my.cnf

    1.mysql的日志类型

    编辑配置文件
    vim /etc/my.cnf
    
    • 1
    • 2
    1.1 错误日志
    • 用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
    [mysqld]	//添加
    log-error=/usr/local/mysql/data/mysql_error.log     #指定日志的保存位置和文件名
    
    • 1
    • 2
    1.2 通用查询日志
    • 用来记录MySQL的所有连接和语句,默认是关闭的
    [mysqld]	//添加
    general_log=ON
    general_log_file=/usr/local/mysql/data/mysql_general.log
    
    • 1
    • 2
    • 3
    1.3 二进制日志(binlog
    • 用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,是默认开启的,但要配合文件再配置一下,不然看不到
    [mysqld]	//添加
    log-bin=mysql-bin      
    或
    log_bin=mysql-bin
    
    • 1
    • 2
    • 3
    • 4
    1.4 中继日志
    • 一般情况下它在Mysql主从同步(复制)、读写分离集群的从节点开启。主节点一般不需要这个日志
    1.5 慢查询日志
    • 用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便提醒优化,默认是关闭的
    [mysqld]	//添加
    s1ow_query_log=ON
    slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
    long_query_time=5        #设置超过5秒执行的语句被记录,缺省时为10秒
    
    • 1
    • 2
    • 3
    • 4

    上述要开启的日志配置

    • 配置保存后,重启mysql systemctl restart mysqld
    ##可复制
    log-error=/usr/local/mysql/data/mysql_error.log
    general_log=ON
    general_log_file=/usr/local/mysql/data/mysql_general.log
    log-bin=mysql-bin
    slow_query_log=ON
    slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
    long_query_time=5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20220810155828418

    2. 查看错误日志是否开启

    [root@nginx1 ~]# cd /usr/local/mysql/data/
    [root@nginx1 data]# ll
    
    • 1
    • 2

    image-20220810160142998

    3.查看日志

    • 登陆mysql
    [root@nginx1 ~]# mysql -uroot -p123123
    
    • 1
    3.1 查看通用查询日志是否开启
    mysql> show variables like 'general%';
    +------------------+-----------------------------------------+
    | Variable_name    | Value                                   |
    +------------------+-----------------------------------------+
    | general_log      | ON         ##已开启                      |
    | general_log_file | /usr/local/mysql/data/mysql_general.log |
    +------------------+-----------------------------------------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3.2查看二进制日志是否开启
    mysql> show variables like 'log_bin%';
    +---------------------------------+---------------------------------------+
    | Variable_name                   | Value                                 |
    +---------------------------------+---------------------------------------+
    | log_bin                         | ON       ##已开启                      |
    | log_bin_basename                | /usr/local/mysql/data/mysql-bin       |
    | log_bin_index                   | /usr/local/mysql/data/mysql-bin.index |
    | log_bin_trust_function_creators | OFF                                   |
    | log_bin_use_v1_row_events       | OFF                                   |
    +---------------------------------+---------------------------------------+
    5 rows in set (0.01 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 二进制日志开启后,重启mysql 会在目录中查看到二进制日志
    • 启二进制日志时会产生一个索引文件及一个索引列表

    image-20220810161035956

    3.3 查看慢查询日功能是否开启
    mysql> show variables like '%slow%';
    +---------------------------+--------------------------------------------+
    | Variable_name             | Value                                      |
    +---------------------------+--------------------------------------------+
    | log_slow_admin_statements | OFF                                        |
    | log_slow_slave_statements | OFF                                        |
    | slow_launch_time          | 2                                          |
    | slow_query_log            | ON        ##已开启                          |
    | slow_query_log_file       | /usr/local/mysql/data/mysql_slow_query.log |
    +---------------------------+--------------------------------------------+
    5 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image-20220810161526991

    3.4查看慢查询时间设置
    mysql> show variables like 'long_query_time';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 5.000000 |
    +-----------------+----------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3.5在数据库中设置开启慢查询的方法
    mysql> set global slow_query_log=ON;
    
    • 1

    小知识

    PS: variables 表示变量 like 表示模糊查询

    #xxx(字段)

    xxx%: 以xxx为开头的字段

    %XXX :以xxx为结尾的字段

    %XXX%:只要出现xxx字段的都会显示出来

    XXX:精准查询

    索引文件:记录更新语句
    索引文件刷新方式:
    1、重启MySQL的时候会更新索引文件,用于记录新的更新语句
    2、刷新二进制日志
    mysql-bin.index:
    二进制日志文件的索引

  • 相关阅读:
    Qt QCustomPlot介绍
    深入理解Linux下的网络监控工具:iftop
    [联邦学习TFF]构建自己的联邦学习模型
    BIM、建筑机器人、隧道工程施工关键技术
    检测docker内存状态脚本
    从ORB-SLAM2到DynaSLAM的编译 v1.0版本
    模拟面试/面试题
    Docker的网络模式
    docker概念
    视觉SLAM十四讲学习笔记--第七讲视觉里程计学习笔记总结(1)
  • 原文地址:https://blog.csdn.net/H_YANG__/article/details/126924559