zoukankan      html  css  js  c++  java
  • NoteOfMySQL-14-日志管理

    一、MySQL日志

      日志是MySQL数据库的重要组成部分,日志文件记录了MySQL数据库的日常操作和错误信息,可以通过分析这些日志文件了解MySQL数据库的运行情况。
      MySQL数据库常见的日志文件包括错误日志、二进制日志、慢查询日志、通用查询日志四种。

    日志文件类型 说明
    错误日志 记录服务器启动、关闭、运行错误及时间调度器运行事件的信息等
    二进制日志 二进制文件 的形式记录数据库中的操作,但不记录查询语句
    慢查询日志 记录执行时间超过指定时间的操作
    通用查询日志 记录用户所有的操作信息
    • 默认情况下,MySQL数据库只启动了错误日志功能。
    • 除二进制日志文件外,其他日志都是文本文件。
    • 日志文件通常存储在MySQL数据库的数据目录下。
    • 启动日志功能会降低MySQL数据库的执行速度。
    • 日志文件会占用较大的硬盘空。当用户量非常大、操作非常频繁时,日志问价的存储空间甚至比数据库文件的还要大。

    二、错误日志管理

    1. 启动错误日志

      在默认情况下,错误日志功能是默认开启的,且不能禁止。但可以通过修改my.ini文件来修改错误日志功能的配置。

    # 修改错误日志文件的存放位置
    log-error=file_name
    
    # 标识警告信息是否一并记录到错误日志中
    log-warnings=int_num
    

    在默认情况下,错误日志文件存放在安装路径的data目录下,文件名为hostname.err

    • 通过设置log-error可以修改错误日志文件的存放位置。
    • 设置log-warnings的具体值如下所示:
    int_num 说明
    0 不记录警告信息
    1 记录警告信息到日志文件中,mysql-5.5版本默认值为1
    大于1 "失败的连接"的信息和创建新连接时"拒绝访问"类的错误信息也会被记录到错误日志中,mysql-5.7版本默认值为2

    2. 查看错误日志

    用于错误日志文件是文本文件,可以直接打开文件进行查看,文件路径可以通过下面命令获取:

    -- 查看log-error: 下面两种方法都可
    show variables like 'log_error';
    select @@log_error;
    
    -- 查看log-warnings: 下面两种方法都可
    show variables like 'log_warnings';
    select @@log_warnings;
    

    查看信息

    3. 删除错误日志

    运行下面命令后,数据库系统会自动常见一个新的错误日志文件,并把旧的文件改名为hostname.err-old

    mysqladmin -u root -p flush-logs
    

    三、二进制日志管理

      二进制日志也叫变更日志(update log),用来记录所有用户对数据库的操作,若长时间开启,文件会占用较大的磁盘凯南。但当数据库发生故障时,可以通过此文件查看一段时间内用户所作的操作,结合数据库备份技术,即可在线用户的操作,使数据库恢复。

    1. 启动二进制日志

    1.1 查看二进制日志功能状态

    -- 查看二进制日志功能是否启用
    show variables like 'log_bin';
    
    -- 查看二进制日志文件列表
    show binary logs;
    
    -- 查看当前使用的二进制日志文件
    show master status;
    

    查看二进制日志功能状态

    1.2 启动二进制日志功能

    开启二进制日志功能同样是修改安装路径下的my.ini文件,之后重启mysql服务器即可。

    # 在[mysqld]下添加
    server-id=1
    log-bin[=dir_name[filename]]
    

    其中,dir_name表示二进制文件的存放路径,默认存放在安装路径的data目录下;filename表示二进制文件的文件名,默认值为hostname-bin.number,number的形式为000001、000002等。

    • 每次重启MySQL服务都会生成新的二进制文件,其中number会不断递增。
    • 二进制日志文件包括filename.number这类文件和filename.index文件,后者存储所有二进制日志文件的清单。

    特别注意:二进制日志文件最好不要与数据库的数据文件存放在同个硬盘上。

    2. 查看二进制日志

    查看二进制日志文件需要在cmd命令行下,且需要将切换到存放二进制日志文件所在的目录下,因为mysqlbinlog将在当前目录下查找指定的二进制日志文件。

    mysqlbinlog filename.number
    

    3. 删除二进制日志

    删除二进制日志文件需要登录mysql服务器后进行操作。

    3.1 删除所有二进制日志文件

    执行完下面语句后,会删除所有的文件,并创建新的二进制日志文件,number重置为00001。

    reset master;
    

    3.2 根据编号删除二进制日志文件

    执行完下面语句后,会删除编号小于number的所有文件。

    purge master logs to 'filename.number';
    

    3.3 根据创建时间删除二进制日志文件

    执行完下面语句后,会删除在指定时间之前的所有文件。

    purge master logs before 'yyyy-mm-dd hh:mm:ss';
    

    4. 关闭二进制日志

    关闭和开启的方法刚好相反,将my.ini文件中新增的两行代码删除,然后重启mysql服务器即可。

    5. 还原数据库

    mysqlbinlog filename.number | mysql -u root -p
    

    6. 实例 —— 启动二进制日志

    6.1 修改my.ini文件

    6.2 重启mysql服务器

    重启mysql服务器

    6.3 查看二进制日志功能状态

    查看二进制日志功能状态

    6.4 重启mysql服务

    重启mysql服务

    6.5 再查看二进制功能状态

    在此之前需要退出mysql重新登录>>>

    再查看二进制功能状态

    6.6 关闭二进制日志功能

    直接删除my.ini文件中刚刚添加的两行代码,重启服务器即可。

    四、慢查询日志管理

    慢查询日志会记录所有执行时间超过指定时间或未使用索引的语句。

    1. 启动慢查询日志

    1.1 查看慢查询日志的功能状态

    show variables like 'slow_%';
    

    查看慢查询日志的功能状态

    1.2 启动慢查询日志

    开启慢查询日志功能同样是修改安装路径下的my.ini文件,之后重启mysql服务器即可。

    # 在[mysqld]下添加
    
    # 开启慢查询日志功能
    slow_query_log=on
    # 设置慢查询日志文件路径
    slow_query_log_file[=dir_name[filename]]
    # 设置最大执行时间
    long_query_time[=num]
    

    其中,dir_name表示慢查询文件的存放路径,默认存放在安装路径的data目录下;filename表示慢查询文件的文件名,默认值为hostname-slow.loglong_query_time单位为秒,默认值为10秒。

    2. 修改慢查询日志配置

    -- 开启或关闭慢查询日志
    set global slow_query_log=on/off;
    -- 设置最长执行时间
    set global long_query_time=num;
    

    3. 查看慢查询日志

    用于慢查询日志文件是文本文件,可以直接打开文件进行查看。

    4. 删除慢查询日志

    4.1 命令行删除

    执行下面语句之后,会删除原来的慢查询日志文件并新建新的日志文件。

    mysqladmin -u root -p flush-logs
    

    4.2 手动删除

    手动删除日志文件后,重启mysql服务器即可。

    五、通用查询日志管理

    通用查询日志记录了用户所有的操作。

    1. 启动通用查询日志

    1.1 查看慢查询日志的功能状态

    show variables like 'general%';
    

    查看慢查询日志的功能状态

    1.2 开启通用查询日志

    开启通用查询日志功能同样是修改安装路径下的my.ini文件,之后重启mysql服务器即可。

    # 在[mysqld]下添加
    
    # 开启通用查询日志功能
    general_log=1
    # 设置通用查询日志文件路径
    general_log_file[=dir_name[filename]]
    

    其中,dir_name表示慢查询文件的存放路径,默认存放在安装路径的data目录下;filename表示慢查询文件的文件名,默认值为hostname.log

    2. 查看通用查询日志

    用于通用查询日志文件是文本文件,可以直接打开文件进行查看。

    3. 删除通用查询日志

    3.1 命令行删除

    执行下面语句之后,会删除原来的慢查询日志文件并新建新的日志文件。

    mysqladmin -u root -p flush-logs
    

    3.2 手动删除

    手动删除日志文件后,重启mysql服务器即可。

    注意

    用于mysqladmin -u root -p flush-logs是删除错误日志、慢查询日志、通用查询日志的命令,若只删除一个时,其他需要做好备份,以免错删。

    参考资料

    简书:错误日志
    付杰博客:MySQL二进制日志详解

  • 相关阅读:
    交换机的配置文件和系统映像文件备份与恢复(如果不小心损坏了,可以用这种方法恢复)
    交换机端口安全配置
    路由器密码重置(不是适用于所有有些启动顺序数字不一样)
    交换机的默认网关(跨网段telnet)
    思科交换机的初始配置(使用telnet登录)
    Linux命令集(第一部分共40个)
    Linux6.9安装
    javamail邮件发送报错解决方案
    isEmpty()与equals()、==“”区别
    eclipse svn 修改了类名之后提交
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/14147570.html
Copyright © 2011-2022 走看看