MySQL 日志之二进制日志-binlog

1、简介

        MySQL 的二进制日志记录了对 MySQL 所有的更改操作,不包括 select 和 show 等操作。二进制日志文件主要有:数据恢复、主从复制、审计(判断是否有注入攻击)等作用。

2、二进制日志参数配置

2.1、文件参数配置

        linux 中 MySQL的配置文件在 /etc/my.cnf,通过配置 log-bin 指定二进制日志文件的名称(若不指定则使用默认的值: binlog.****),后缀为二进制日志的序列号,文件保存在数据目录下。

# 指定二进制日志文件名
vim /etc/my.cnf[mysqld]
datadir=/var/lib/mysql  # 指定数据保存路径
log-bin=test       # 指定二进制日志文件名,保存在数据目录下
expire_logs_days=3  # 表示日志只保留3天,默认是一个月

 开启二进制日志文件的方式:

在配置文件中指定二进制日志文件名,重启数据库即自动开启;

我在安装完 MySQL8.0.33 后测试二进制日志文件默认开启。

2.2、与二进制日志文件相关的数据库参数配置

        二进制日志文件参数相关参数如下表:

可通过 set global 参数名=值 设置参数大小。

参数名称描述查看命令

max_binlog_size

指定单个二进制日志文件最大值,如果超过该值,生成新的二进制文件,后缀名加1,记录到.index文件中。默认1G。(手动新生成二进制日志文件:flush logs)show variables like '%max_binlog_size%';
binlog_cache_size基于事务的缓存区大小,如果事务记录超过这个大小,会记录到临时文件中,会降低性能。默认32k。

1)、show variables like '%max_binlog_size%';

2)、show global status like 'binlog_cache%'; 查看缓存区使用情况,有没有使用临时文件。

sync_binlog二进制文件从缓冲区写到磁盘,默认值为1。(0:缓冲区满了或者由操作系统决定写磁盘;1:每一次事务提交写缓冲区的时候就同步到磁盘;n:每进行n次事务提交写缓冲区的时候就同步到磁盘;)

1)、show variables like '%sync_binlog%';

2)、set global sync_binlog=1;设置参数

binlog_expire_logs_auto_purge开启自动清除二进制日志文件,默认为 onshow variables like '%binlog_expire_logs_auto_purge%';
binlog_expire_logs_seconds日志失效时间,默认为30天。show variables like '%binlog_expire_logs_seconds%';

注:不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,而导致binlog_expire_logs_seconds失效。

2.3、与二进制日志文件有关的命令操作
# 1、将test.000112之前的binary logs清掉
purge binary logs to 'test.000112';
# 2、将指定时间之前的binary logs清掉
purge binary logs before '2013-12-10 12:07:21';
# 3、将二进制文件导出
mysqlbinlog -uroot -p /var/log/mysql/binlog.000001 > test.sql
# 4、清除所有二进制日志,新日志编号从000001开始
reset master
# 5、指定时间点恢复
mysqlbinlog --stop-datetime="2023-04-20 09:59:59"  /var/log/mysql/bin.123456 | mysql -u root -p
mysqlbinlog --start-datetime="2023-04-20 10:01:00"   /var/log/mysql/bin.123456 | mysql -u root -p
或者
mysqlbinlog --stop-datetime="2023-04-20 09:59:59"  /var/log/mysql/bin.123456 > test.sql
mysqlbinlog --start-datetime="2023-04-20 10:01:00"   /var/log/mysql/bin.123456 > test.sql
# 6、指定位置恢复
mysqlbinlog --stop-position=1234  /var/log/mysql/bin.123456 | mysql -u root -p
mysqlbinlog --start-position=800   /var/log/mysql/bin.123456 | mysql -u root -p
或者
mysqlbinlog --stop-position=1234  /var/log/mysql/bin.123456 > test.sql
mysqlbinlog --start-position=800   /var/log/mysql/bin.123456 > test.sql
3、MySQL 使用二进制文件进行主从复制

        主从复制原理如下:

        MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread,其余两个(I/O threadSQL thread)运行在从节点。

1)、主节点 log dump 线程

     当从节点连接主节点时,主节点会为其创建一个log dump 线程,用于发送和读取bin-log的内容。在读取bin-log中的操作时,log dump线程会对主节点上的bin-log加锁,当读取完成,在发送给从节点之前,锁会被释放。主节点会为自己的每一个从节点创建一个log dump 线程。

2)、从节点 I/O线程

      当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点的blog dump进程发来的更新之后,保存在本地relay-log(中继日志)中。

3)、从节点 SQL线程

      SQL线程负责读取relay-log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

注:要实现主从复制,必须打开 Master 端的 binary log(bin-log)功能,否则无法实现。

4、总结

         本文详细介绍 MySQL的二进制日志文件作用,用途,主要是用于数据恢复和集群中主从数据同步,介绍了如何从日志文件中读取日志转化成sql执行,介绍主从复制原理,下一章接着讲针对二进制日志文件的应用。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

      

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

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

相关文章

安装nvidia driver出现 the cc vision check falied

这里提示说的需要gcc12,但是我只有gcc11,所以就报错了,说一说我自己的解决方法: 安装gcc12和g12,再切换版本为gcc12 安装gcc12: sudo apt install gcc-12安装g12: sudo apt -y install g-12切换版本:参考博客

Linux的SSH服务

一.SSH服务简介 1.什么是SSH SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应…

【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-上)

文件处理指令-上 背景前言专栏介绍面向对象重点内容文件处理命令file格式[options] 主要参数简单说明使用案例 mkdir格式[options] 主要参数应用实例 grep格式主要参数[optionsl 主要参数 应用实例pattern正则表达式主要参数 应用实例fgrep和egrep dd格式[options]主要参数 应用…

linux 网络设置

查看linux基础的网络配置 命令 网关route -nip 地址ifconfig / ip aDNS 服务器cat /etc/resolv.conf主机名hostname路由route -n网络连接状态ss / netstat 一,ifconfig 查看网络接口信息 (一)ifconfig …

设计模式—— 单例设计模式

单例设计模式 什么是单例模式 单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。 为什么使用单例模式 在应用系统开发中,我…

【MIdjourney】镜头效果关键词

1.景深(depth of field) 景深(DOF),是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。镜头光圈、镜头距离、及焦平面到拍摄物的距离是影响景深的重要因素。 在MIdjourney中,该关键字会使得…

数字化时代,CDMP/CDGA认证企业个人都需要

🎯数字化时代,CDMP(数据管理专业人士)和CDGA(数据治理工程师)认证对于企业和个人来说都是非常重要的。 📒对于企业而言: ✅为企业赋能 数字化培训是企业在数字化转型中的重要考核标准之一。国资委、工信部、银保监会等都有明确的要…

Python之jieba分词相关介绍

1.jieba分词的安装 直接在cmd窗口当中pip install即可 2.jieba分词的介绍 jieba分词是目前比较好的中文分词组件之一,jieba分词支持三种模式的分词(精确模式、全模式、搜索引擎模式),并且支持自定义词典(这一点在特定的领域很重要,有时候…

SpringBoot使用MockMVC单元测试Controller

对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如启动速度慢,测试验证不方便,依赖网络环境等&#…

GitHub项目推荐-incubator

项目地址 Github地址:GitHub - apache/incubator-anser 官网:Apache Answer | Free Open-source Q&A Platform 项目简述 这是Apache的一个开源在线论坛,也可以部署成为一个自有的QA知识库。项目主要使用了Go和Typescript来开发&#…

【MATLAB源码-第109期】基于matlab的哈里斯鹰优化算发(HHO)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 哈里斯鹰优化算法(Harris Hawk Optimization, HHO)是一种受自然界捕食行为启发的优化算法。它基于哈里斯鹰的捕猎策略和行为模式,主要用于解决各种复杂的优化问题。这个算法的核心特征在于…

层叠布局(Stack)

目录 1、概述 2、开发布局 3、对齐方式 3.1、TopStart 3.2、Top 3.3、TopEnd 3.4、Start 3.5、Center 3.6、End 3.7、BottomStart 3.8、Bottom 3.9、BottomEnd 4、Z序控制 5、场景示例 1、概述 层叠布局(StackLayout)用于在屏幕上预留一…

31 树的存储结构二

DIsplay() 递归显示 :图示 求树的高度时&#xff0c;递归的技巧 在递归的过程中&#xff1a;ret单独和任意一个子树的子高度比较&#xff0c;如果ret<max&#xff0c;retmax ------------- 注意&#xff1a;组织链表和子链表的【元素类型】都是TLNode* 链表都要先通过TLNod…

Validation--自定义校验

前言&#xff1a; 今天学到这个&#xff0c;闲着也是闲着&#xff0c;就写一个记录一下&#xff0c;也算是总结 我们的步骤是这样的 1.自定义注解State 2.自定义校验数据的类StateValidation实现ConstrainValidator接口 3.在需要校验的地方使用自定义注解 1.自定义注解 这…

C语言如何提高程序的可读性?

一、问题 可读性是评价程序质量的一个重要标准&#xff0c;直接影响到程序的修改和后期维护&#xff0c;那么如何提高程序的可读性呢? 二、解答 提高程序可读性可以从以下几方面来进行。 &#xff08;1&#xff09;C程序整体由函数构成的。 程序中&#xff0c;main()就是其中…

Mysql事务隔离级别是怎么实现的?

Mysql事务 事务概念事务特性事务并发事务隔离级别MVCC多版本并发控制 事务概念 小钢同学今天发工资了&#xff0c;赶紧打开招商银行app看看工资到账了没有&#xff0c;查看余额300 嗯&#xff0c;今天心情好&#xff0c;给对象转账50大元买lv包包去&#xff0c;最后的结果肯定…

Vmware虚拟机问题解决方案 运行虚拟机系统蓝屏 运行虚拟机时报错VT-x

1. 运行虚拟机系统蓝屏 可能的原因有两个: 1). 虚拟机所在磁盘的空间不足 ; -------> 清理磁盘空间 。 2). 操作系统版本高, 需要适配新版本的Vmware ; ------> 卸载Vmware15版本, 安装Vmware16版本 。 2. 卸载Vmware步骤 1). 卸载已经安装的VMware 弹出确认框, 点击…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成&#xff1a;在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口&#xff0c;同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

解密威胁:.kat6.l6st6r 勒索病毒的威胁与恢复

导言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒已经成为网络安全威胁中的一大巨头。其中&#xff0c;.kat6.l6st6r 勒索病毒以其狡猾的传播方式和高级的加密算法备受关注。本文将深入介绍.kat6.l6st6r 勒索病毒的特点、应对措施以及如何预防此类威胁。如果您在面对被…