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;

NoteOfMySQL-14-日志管理

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;

NoteOfMySQL-14-日志管理

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 文件

NoteOfMySQL-14-日志管理

6.2 重启mysql服务器

NoteOfMySQL-14-日志管理

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

NoteOfMySQL-14-日志管理

6.4 重启mysql服务

NoteOfMySQL-14-日志管理

6.5 再查看二进制功能状态

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

NoteOfMySQL-14-日志管理

6.6 关闭二进制日志功能

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

四、慢查询日志管理

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

1. 启动慢查询日志

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

show variables like 'slow_%';

NoteOfMySQL-14-日志管理

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%';

NoteOfMySQL-14-日志管理

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二进制日志详解

Original: https://www.cnblogs.com/bpf-1024/p/14147570.html
Author: 步平凡
Title: NoteOfMySQL-14-日志管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612027/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 用powershell脚本,检测cpu100%,并触发sqlserver主备切换。

    我为园子设计的脚本大致如下:1慢检测:任务计划每分钟运行。发现cpu高于95%后,触发2。2快检测:每隔5秒钟运行,发现cpu高于95%,连续6次后,触发3。3报警n次。超出5分钟…

    Linux 2023年6月14日
    097
  • Linux之Nginx入门

    一、Nginx介绍 Nginx是一个开源且高性能、可靠的http web服务、代理服务。 开源:直接获取源代码 高性能:支持海量并发 可靠:服务稳定 高性能,高并发 Nginx支持…

    Linux 2023年5月27日
    086
  • K8s-小型综合实验(k8s+keeplived+nginx+iptables)

    K8S小型综合实验(k8s+keeplived+nginx+iptables) 实验目的 1.Kubernetes 区域可采用 Kubeadm 方式进行安装。 2.要求在 Kube…

    Linux 2023年6月13日
    095
  • Linux专项之Apache

    1.虚拟机上网 1.安装软件(httpd) yum search ht…

    Linux 2023年5月27日
    086
  • Redis 通过 RDB 方式进行数据备份与还原

    Redis 通过 RDB 方式进行数据备份与还原 Intro 有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原…

    Linux 2023年5月28日
    0150
  • centos系统和Ubuntu系统命令区别以及常见操作

    一.前言 二.系统环境 三.命令区别 3.1 使用习惯和命令区别 3.2 服务管理的区别 3.3 软件包信息区别 四.Ubuntu系统常见操作 4.1 Ubuntu系统apt和ap…

    Linux 2023年6月7日
    0200
  • linux 添加java环境

    将下载的jdk解压到/usr/local/下 设置软链接 在/etc/profile.d/java.sh 添加如下内容(建议在/etc/profile.d/添加环境变量) 生效配置…

    Linux 2023年6月8日
    049
  • K8s-二进制安装

    K8S-二进制安装使用 1.IP总规划 服务类型 ip地址 组件 k8s-master01 etcd集群节点1 192.168.80.20 kube-apiserver、kube-…

    Linux 2023年6月13日
    089
  • Redis集群-Cluster模式

    1.为什么需要分片集群?它解决了什么问题? Redis从单个节点的架构方式演变到主从模式,提高了数据的可靠性以及相对较弱的高可用性;从主从模式到哨兵模式将高可用性提升到了一个新的高…

    Linux 2023年6月7日
    091
  • ASP.NET Core 2.2 : 二十一. 内容协商与自定义IActionResult和格式化类

    上一章的结尾留下了一个问题:同样是ObjectResult,在执行的时候又是如何被转换成string和JSON两种格式的呢? 本章来解答这个问题,这里涉及到一个名词:”…

    Linux 2023年6月7日
    090
  • xshell/bash/zsh 等终端鼠标滚轮乱码问题(转)

    终端上滚动鼠标,有可能不是预期的滚屏,而是出现一些乱码字符 解决方法:输入 reset命令 回车即可 注意: clear或者 ctrl+l是清屏命令,在此情况下无效。 转自: xs…

    Linux 2023年5月28日
    0152
  • gerrit系统如何配置访问控制

    .版本:v0.3作者:河东西望日期:2022-7-13. gerrit系统的上手使用有两个难点: 想要上手使用gerrit的同仁们,搭建部署好gerrit系统之后,会发现gerri…

    Linux 2023年6月7日
    083
  • Question06-查询”李”姓老师的数量

    问题比较简单,一个单表查询就可以解决,这里就不过多地讲解 Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/165738…

    Linux 2023年6月7日
    075
  • vue3中iview框架初始值赋值问题

    问题:今天有个小伙伴说我们前端有个页面异常奇怪,没有显示数据。 开发小伙伴进行查询之后(非专业前端),明明进行了绑定,页面死活无法渲染,归属于灵异事件了,对于这种灵异事件,我总会想…

    Linux 2023年6月7日
    079
  • npm常用命令

    npm install npm install=npm i。在git clone项目的时候,项目文件中并没有 node_modules文件夹,项目的依赖文件可能很大。直接执行,np…

    Linux 2023年6月13日
    096
  • CTF中的一些图形密码

    1.传统猪圈密码 猪圈密码又称为亦称朱高密码、共济会暗号、共济会密码或共济会员密码;是一种以特定符号来替换字母的加密方式在线解密网址:http://moersima.00cha.n…

    Linux 2023年6月6日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球