Mysql-日志介绍 日志配置

news2024/9/30 3:20:20

环境部署

 docker run -d -p 3306:3306 --privileged=true -v $(pwd)/logs:/var/lib/logs  -v $(pwd)/conf:/etc/mysql/conf.d  -v $(pwd)/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=654321  --name mysql mysql:5.7

运行指令的目录下新建好这些文件:
在这里插入图片描述

日志类型

日志类型写出到日志的信息
ErrorLog(错误日志)mysqld 错误日志(记录了mysqld开始,停止,运行中的错误日志)。
General query log (查询日志)记录了msqld在做什么事情,用户建立连接和用户执行SQL都会被记录。
Binary log(二进制日志)对于数据库的任何修改事件都会记录到这里,二进制日志用于恢复,复制和审计。
Relay log(中继日志)中继日志和二进制日志相似,记录了一些对数据库改变的操作事件,同时维护了一个已经使用过的中继日志索引。
SlowQueryLog慢查询日志,记录慢查询 比long_query_time(可配置)长的都为慢查询。
DDL log (metadata log)记录了比如修改表结构或者重命名这些对元数据进行修改的操作。
查看日志变量

通过下面两条指令可以查看各种日志的启用情况

show variables like "log_%";
show variables like "%_log";

在这里插入图片描述

ErrorLog

默认开启,错误日志记录了运行过程中遇到的所有严重的错误信息,以及 MySQL每次启动和关闭的详细信息。
默认是stderr也就是输出到控制台.
在这里插入图片描述
如果我们需要输出到目录我们需要修改这个配置:

[mysqld]
#设置输出路径
log-error=/var/lib/logs/log-err.log

这里注意可能回报错误,因为没有权限在这个路径写东西,放到这个目录/var/lib/logs下即可:
在这里插入图片描述
重启服务器我们可以看到日志的输出变为了文件路径:
在这里插入图片描述
同时我们可以根据log-warnings去配置输出那些信息,默认为2我们可以看到:
在这里插入图片描述
log_warnings 为0, 表示不记录告警信息。
log_warnings 为1, 表示告警信息写入错误日志。
log_warnings 大于1, 表示各类告警信息,例如:有关网络故障的信息和重新连接信息写入错误日志。
比如我们做下面的配置,可以看到值被修改为了1,这里的配置log-error 和 log_error都会生效,统一一下就可以

[mysqld]
log-error=/var/lib/logs/log-err.log
log_warnings=1

在这里插入图片描述

二进制日志

binlog记录了数据库所有的ddl语句和dml语句,但不包括select和show语句内容因为不是更新操作(这些日志由General query log 来记录),语句以事件的形式保存,描述了数据的变更顺序,binlog还包括每个更新语句的执行时间信息。
如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。
binlog主要用于实现mysql主从复制、数据备份、数据恢复。

配置中mysql-bin是binlog日志文件的basename,如果不指定则会取pid-file的名称。binlog日志文件的完整名称:mysql-bin.000001。
pid-file是服务器从中写入其进程ID的文件的路径名。服务器在数据目录中创建文件,除非给出一个绝对路径名来指定其他目录。如果您指定此变量,则必须指定一个值。如果不指定此变量,则MySQL将使用默认值host_name.pid,其中host_name是主机的名称。

[mysqld]
server_id=42 
log-bin=mysql-bin

server-id的作用: 1.mysql的同步数据中是包含server-id的,用于标识该语句最初从哪个server写入,所以server-id一定要有 2.每一个同步中的slave在master上都有对应的一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id相同,则后一个连接成功时,前一个会被踢掉,slave主动连接master之后,如果slave上面执行了slave stop;则连接断开,但是master上对应的线程并没有退出;当slave start之后,master不能再创建一个线程而保留原来的线程,那样同步就可能有问题. 3.在mysql做主主同步时,多个主需要构成一个环状,但是同步的时候又要保证一条数据不会陷入死循环,这里就是靠server-id来实现的
binlog日志文件的完整名称:mysql-bin.000001……mysql-bin.999999,也就是在追加binlog的时候会在后面进行编号。在这几种情况下这个编号会继续往下编:

  • msql服务启动或者重启
  • 服务器刷新了binlog日志
  • binlog的size达到了我们预设的max_binlog_size
    为了跟踪使用了哪些二进制日志文件,mysqld还创建了一个包含二进制日志文件名称的二进制日志索引文件。默认情况下,它与二进制日志文件相同,扩展名为‘.index’。您可以使用log_bin_index[=file_name]选项更改二进制日志索引文件的名称。
    开启上面的配置以后我们可以看到二进制日志被开启,并且生产了index文件
    在这里插入图片描述
    我们去docker挂在的目录看一下这些文件
    在这里插入图片描述
General query log 通用查询日志

general query log 默认关闭,由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响MySQL的性能的。如果不是为了调试数据库,不建议开启查询日志。

show global variables like '%general_log%';

在这里插入图片描述

[mysqld]
#控制是否开启
general_log={0|1} 
#这个变量定义了慢查询或者查询日志的输出的方式 可以是文件也可以是表 也可以是都输出 TABLE,FILE
log_output={FILE|TABLE|NONE}
#general_log_file如果没有指定,默认名是host_name.log
general_log_file=/var/lib/mysql/general_log.log

在这里插入图片描述

log_output='FILE'表示将日志存入文件,默认值是'FILE' log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.general_log 或者mysql.slow_log表中.

SlowQueryLog 慢查询日志

slow query log 默认关闭,通过以下设置开启。记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句。

show global status like '%Slow_queries%'; 
show variables like '%slow_query%'; 
show variables like 'long_query_time%';
[mysqld]
#这个和普通查询日志一样的
log_output={FILE|TABLE|NONE}
# 开启慢查询日志
slow_query_log={0|1} 
# 慢查询的阈值,单位秒
long_query_time=10 
# 日志记录文件
# 如果没有给出file_name值, 默认为主机名,后缀为-slow.log。
# 如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
slow_query_log_file=/var/lib/mysql/slow_query_log.log

在这里插入图片描述
默认情况下,不会记录管理员执行的语句,也不会记录不使用索引进行查询的查询,可以通过下面两个参数开启

#记录管理员
log_slow_admin_statements=ON
#记录没有使用索引的语句
log_queries_not_using_indexes=ON

记录管理员的 ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX,
OPTIMIZE TABLE, and REPAIR TABLE.这些操作。

DDL log (metadata log)

DDL日志或元数据日志记录由数据定义语句生成的影响表分区的元数据操作,例如 ALTER TABLE t3 DROP PARTITION p2,我们必须确保分区被完全删除,其定义从表t3的分区列表中删除。MySQL使用此日志从分区元数据操作中间发生的崩溃中恢复,就比如我们在修改或者删除表的时候发送了异常,mysqld会借助这个日志将数据库恢复到之前的状态。分区元数据操作的记录被写入MySQL数据目录中的文件ddl_log.log。DDL 日志是一个二进制文件,不被人为的阅读修改,也没有其他配置项可以配置它,且在成功启动mysqld 后会被删除,只有在记录元数据时才会被重新创建。因此,这个文件可能不会出现在一个完全正常运行的MySQL服务器上。

Relay log(中继日志)
show variables like '%relay%';

在这里插入图片描述
和binlog非常的类似也是记录了数据库的变化,也会维护一个索引用来记录那些中继日志被使用过了。我的理解是它其实就是binlog的一种中间状态,用于在从数据库进行同步数据。
原图链接
在这里插入图片描述

出现下面这几种情况,中继日志会创建一个新的文件:

  • 每次负责复制的线程开始的时候,会创建一个新的中继日志,这样不会丢失之前的中继日志。
  • 当日志被刷到磁盘的时候
  • 当中继日志超过文件存储大小上限的时候

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1413757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dhcp服务器的ip池的待分配ip地址是否冲突的检测机制

看到有的资料说,dhcp服务器在分配ip地址时,要检测是否待分配的ip地址是否存在冲突,会向广播域发出,对应ip发出icmp的ping消息来验证是否冲突。特地用自己的公司的交换机验证一下,在交换机上镜像抓包观察一下。 wiresha…

社交媒体与新闻:Facebook在信息传播中的角色

社交媒体的崛起不仅改变了人们的日常交流方式,也对新闻传播产生了深远的影响。在众多社交媒体平台中,Facebook以其庞大的用户基础和强大的社交网络机制,成为信息传播的中流砥柱。本文将深入探讨Facebook在社交媒体与新闻传播的交汇点上扮演的…

Qt应用开发(安卓篇)——调用java代码,使用安卓api

一、前言 在Qt on Android开发的时候,它不像在嵌入式linux,几乎全部的操作都是可以通过文件来完成。很多场景下的功能都需要使用安卓的API去实现,开发人员需要通过这些API进行编程,无需访问源码,或者理解内部的机制。比…

IP报文格式

IP报文格式 报文格式 图1 IP头格式 表1 IP头字段解释 字段长度含义Version4比特 4:表示为IPV4;6:表示为IPV6。IHL4比特首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。…

阅读go语言工具源码系列之gopacket(谷歌出品)----第二集 layers-巧妙的抽象与无聊的协议包

上一集中我们讲到了wpcap.dll的go封装方法,对于linux系统下libpcap的go封装采用的是常用的cgo方式,想了解的可以看看pcap文件夹中的pcap_unix.go。 我们得到了wpcap.dll的go调用,就可以利用它来进行列举所有网络设备,例如以下代码…

docker容器生命周期管理命令

文章目录 前言1、docker create2、docker run2.1、常用选项2.2、系统2.3、网络2.4、健康检查 3、docker start/stop/restart4、docker kill5、docker rm6、docker pause/unpause总结 前言 在云原生时代,Docker已成为必不可少的容器管理工具。通过掌握Docker常用的容…

派网AX50C做多宽带路由和核心交换机配置实战教程

接近300办公人员的工厂需要网络升级,我规划设计和部署实施了以下方案,同样是简约不简单,在满足性能需求稳定性的前提下,既有经济性,又有安全性。 派网做路由器,刚好开启默认防病毒策略,省下来一…

【QT+QGIS跨平台编译】之十一:【libzip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libzip介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libzip介绍 libzip是一个开源C库,用于读取,创建和修改zip文件。 libzip可以从数据缓冲区,文件或直接从其他zip归档文件直接复制的压缩数据中添加文件。在不关闭存档的情况下所做的更改可以还原…

TCP 状态转换以及半关闭

TCP 状态转换: 上图中还没有进行握手的时候状态是关闭的。 三次握手状态的改变: 客户端发起握手。 调用 connect() 函数时状态转化为:SYN_SENT。调用 listen() 函数时状态转换为:LISTEN。ESTABLISHED是被连接的状态。 四次挥手…

林浩然的哲学奇遇记:与罗素一起穿越西方哲学史

林浩然的哲学奇遇记:与罗素一起穿越西方哲学史 The Philosophical Adventures of Lin Haoran: Journeying Through Western Philosophy with Russell 在一个阳光灿烂的早晨,林浩然同学迎着微风,拿着一本厚重的罗素名著《西方哲学史》&#xf…

了解维特比算法:通信系统和自然语言处理中解码的基石

一、介绍 在数字通信和信号处理领域,维特比算法是一种革命性的纠错和解码方法。该算法以 1967 年推出的 Andrew Viterbi 的名字命名,已成为数字通信和自然语言处理领域的基础。本文旨在深入研究维特比算法的复杂性,探讨其理论基础、实际应用以…

通俗易懂理解小波池化以及WaveCNet网络模型

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 一、参考资料 github代码:WaveCNet 小波变换和曲波变换用于池化层 通俗易懂理解小波变换(Wavelet Transform) 二、相关介绍 关于小波变换的详细介绍…

C#,数据检索算法之插值搜索(Interpolation Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供插值搜索(Interpolation Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.…

极限【高数笔记】

【分类】分为了两大类,一个是数列的极限,一个是函数的极限 【数列的极限】 1.定义: 简单来讲,就是,当n无限趋近于无穷时,数列{an}无限趋近一个常数A,此时,常数A就是它们此时情况下的…

三极管实际电路设计

上图电路有个致命缺陷。那就是Q2正常我们是用NPN三极管。而上图用了PNP。导致MOS管高低电平都无法关闭。 解决方法: 把R2减小为200欧、或者330欧姆。 (因为MOS打开需要压差,把SG端压差减小到规定以下就可以关闭)。 同时增大R1为2…

RustDesk私有化部署,自建远程桌面搭建教程

以linux操作系统为例: 解压安装 # 使用wget进行下载1.1.8-2版本(最新版本可以看上述发布地址) wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rust…

防火墙综合实验

实验需求: 1、生产区在工作时间内可以访问服务器区,仅可以访问http服务器。 2、办公区全天可以访问服务器区,其中,10.0.2.20可以访问FTP服务器和HTTP服务器,10.0.2.10仅可以ping通10.0.3.10。 3、办公区在访问服务器…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models导读

通过生成一系列中间推理步骤(即“思维链”)显著提高大型语言模型进行复杂推理的能力 这篇论文探讨了如何通过生成一系列中间推理步骤(即“思维链”)显著提高大型语言模型进行复杂推理的能力。研究人员使用一种简单的方法——思维…

BAT学习笔记:常用指令详解及图示

文章目录 一、 (关闭本行命令回显)详解及图示二、echo off( 关闭命令回显)详解及图示三、%VAR_NAME% (取变量值)详解四、set (设置变量)详解及图示五、if (条件判断) 详解及图示六、not (条件取反&#xff…

Elasticsearch8.11集群部署

集群就是多个node统一对外提供服务,避免单机故障带来的服务中断,保证了服务的高可用,也因为多台节点协同运作,提高了集群服务的计算能力和吞吐量。ES是一个去中心化的集群,操作一个节点和操作一个集群是一样的&#xf…