MySQL 日志之二进制日志-binlog

news2024/11/15 8:23:10
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.coloradmin.cn/o/1380889.html

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

相关文章

STL标准库与泛型编程(侯捷)笔记2

STL标准库与泛型编程(侯捷) 本文是学习笔记,仅供个人学习使用。如有侵权,请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

Flink窗口(2)—— Window API

目录 窗口分配器 时间窗口 计数窗口 全局窗口 窗口函数 增量聚合函数 全窗口函数(full window functions) 增量聚合和全窗口函数的结合使用 Window API 主要由两部分构成:窗口分配器(Window Assigners)和窗口函…

世邦spon IP网络对讲广播系统任意文件上传漏洞

产品介绍 世邦通信IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上传恶意后门文件,从…

软件测试|解决Github port 443 : Timed out连接超时的问题

前言 GitHub是全球最大的开源代码托管平台之一,许多开发者和团队使用它来管理和协作开源项目。但在当下,我们在clone或者提交代码时会经常遇到"GitHub Port 443: Timed Out"错误,这意味着我们的电脑无法建立与GitHub服务器的安全连…

UISegmentedControl控件定制

1.在xib中设计如下: 背景颜色: 段标题与数量 : 2.在代码中控制 关联控件 注册控件事件 控件事件处理函数实现: 定制Title颜色 4 --- > UIControlStateSelected 0 --- > UIControlStateNormal 最终实现效果: 取控件选中时的索引与显示文本: 输出:

理想汽车迎来新算力平台负责人,内部化名为张一粟;王者荣耀在抖音直播全面开放;陈楚生等人现身央视春晚彩排

今日精选 • 理想汽车迎来新算力平台负责人,内部化名为张一粟。目前理想内部暂未公布其内部职级• 王者荣耀在抖音直播全面开放• 陈楚生等人现身央视春晚彩排 投融资 • 2023年12月份,中国社会融资规模增量为1.94万亿元• OpenAI 支持的人形机器人公司 1X 完成 …

【C++】- 类和对象(构造函数!!explicit关键字stastic关键字!!详解)

类和对象④ 构造函数初始化列表explicit关键字static成员 构造函数初始化列表 我们已经初步了解了构造函数------->类和对象②那么调用构造函数就是给了对象中各个成员变量一个合适的初始值。 但实际上,我们想要做的是初始化成员变量,在构造函数中对…

【STM32】STM32学习笔记-FlyMCU串口下载和STLINK Utility(30)

00. 目录 文章目录 00. 目录01. 串口简介02. 串口连接电路图03. FlyMCU软件下载程序04. 串口下载原理05. FlyMCU软件其它操作06. STLINK Utility软件07. 软件下载08. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简…

【MySQL】MySQL表的约束-空属性/默认值/列属性/zerofill/主键/自增长/唯一键/外键

文章目录 表的约束1.空属性 --null && not null2.默认值 -- default3.列描述4.zerofill5.主键6.自增长7.唯一键8.外键 表的约束 表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是…

成就动机测试

成就动机测试广泛应用在职业发展领域,如:企业Hr人力资源管理部门,用于评估分析员工的潜能和价值,适用场景有人才招聘,岗位晋升,绩效考评等等。在大学生做职业规划,求职应聘中,应用成…

UG装配体组件重命名与导出组件

在一个装配文件中,如果我们想对其中一个零件的名称进行更改,可以打开单独文件然后另存为改名,或者直接改名后在装配体中进行替换,但是这样这样都是比较麻烦 我们可以使用零组件更名及导出命令 菜单-GC工具箱-GC数据规范-其他工具…

哪里能找到好用的PPT模板?12个免费模板网站让你畅快办公!

你是否有过这样的经历,在准备重要会议或者演讲的时候,为找不到合适的PPT模板而困扰?或是在网上漫无目的地搜寻,结果收获的是设计平淡无奇的PPT模板? 如果你有同样的疑问,那么你来对地方了!在这…

PADS 改变图纸和图页边界大小

PADS 改变图纸和图页边界大小 有时候画一画原理图发现画布不够用了,可改变图纸大小,对应的改变图页边界 若图页边界怎么选择都改变不了,可将途中图页边界删除,重新加载 选择对应的图页边距就好啦 分类: PADS

【LeetCode:30. 串联所有单词的子串 | 滑动窗口 + 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

嵌套的CMake

hehedalinux:~/Linux/multi-v1$ tree . ├── calc │ ├── add.cpp │ ├── CMakeLists.txt │ ├── div.cpp │ ├── mult.cpp │ └── sub.cpp ├── CMakeLists.txt ├── include │ ├── calc.h │ └── sort.h ├── sort │ ├── …

(三)CMake为什么几乎一统C++跨平台构建?

先看几个简单的例子再回头来看这个问题 回想一下当我们用windows写C第一个Hello World!的步骤,先用VS IDE 创建一个控制台的工程,IDE 会自动生成一个 cpp 文件,里面有一句 输出"Hello World!" 代码,这个时候按下F5 就可…

如何生成文本: 通过 Transformers 用不同的解码方法生成文本

如何生成文本: 通过 Transformers 用不同的解码方法生成文本 假设 $p0.92$,Top-p 采样对单词概率进行降序排列并累加,然后选择概率和首次超过 $p92%$ 的单词集作为采样池,定义为 $V_{\text{top-p}}$。在 $t1$ 时 $V_{\text{top-p}}$ 有 9 个…

GULP 案例 4:如何计算热力学性质(热容、熵、焓、自由能等)?

---------------------------------------------------------------------- 物体的热力学性质是指物质处于平衡状态下压力 P、体积 V、温度 T、组成以及其他的热力学函数之间的变化规律。一般将材料的压力 P、体积 V、温度 T、内能 U、焓 H、熵 S 等统称为物体热力学性质。 热…

Android Lint的使用

代码检查方式一: Android Studio使用Lint进行代码检查 找到Analyze目录下的Inspect Code检查代码选项点击然后弹出下面这个框框,在这个列表选项中我们可以选择Inspect Code的范围,点击OK 待分析完毕后,我们可以在Inspection栏目中…

mysql数据库被黑恢复—应用层面delete删除---惜分飞

客户的mysql被人从应用层面攻击,并且删除了一些数据,导致业务无法正常使用,通过底层分析binlog确认类似恢复操作 确认这类的业务破坏是通过delete操作实现的,客户那边不太幸,客户找了多人进行恢复,现场严重破坏,老库被删除,并且还原了历史的备份文件(非故障第一现场),通过底层…