当前位置: 首页 > ai >正文

MYSQL的binlog

用于备份恢复主从复制

binlog 有 3 种格式类型,分别是 STATEMENT(默认格式)、ROW、 MIXED:

STATEMENT:每一条修改数据的 SQL 都会被记录到 binlog 中(相当于记录了逻辑操作,所以针对这种格式, binlog 可以称为逻辑日志),主从复制中 slave 端再根据 SQL 语句重现。但 STATEMENT 有动态函数的问题,比如你用了 uuid 或者 now 这些函数,你在主库上执行的结果并不是你在从库执行的结果,这种随时在变的函数会导致复制的数据不一致;

ROW:记录行数据最终被修改成什么样了(这种格式的日志,就不能称为逻辑日志了),不会出现 STATEMENT 下动态函数的问题。但缺点是每行数据的变化结果都会被记录,比如执行批量 update 语句,更新多少行数据就会产生多少条记录,使 binlog 文件过大,而在 STATEMENT 格式下只会记录一个 update 语句而已;

MIXED:包含了 STATEMENT 和 ROW 模式,它会根据不同的情况自动使用 ROW 模式和 STATEMENT 模式;

MySQL 给每个线程分配了一片内存用于缓冲 binlog ,该内存叫 binlog cache,参数 binlog_cache_size 用于控制单个线程内 binlog cache 所占内存的大小。如果超过了这个参数规定的大小,就要暂存到磁盘。虽然每个线程有自己的,但是最终都写到同一个 binlog 文件

图中的 write,指的就是指把日志写入到 binlog 文件,但是并没有把数据持久化到磁盘,因为数据还缓存在文件系统的 page cache 里,write 的写入速度还是比较快的,因为不涉及磁盘 I/O。

图中的 fsync,才是将数据持久化到磁盘的操作,这里就会涉及磁盘 I/O,所以频繁的 fsync 会导致磁盘的 I/O 升高。

MySQL提供一个 sync_binlog 参数来控制数据库的 binlog 刷到磁盘上的频率:

sync_binlog = 0 的时候,表示每次提交事务都只 write,不 fsync,后续交由操作系统决定何时将数据持久化到磁盘;

sync_binlog = 1 的时候,表示每次提交事务都会 write,然后马上执行 fsync

sync_binlog =N(N>1) 的时候,表示每次提交事务都 write,但累积 N 个事务后才 fsync

MySQL怎么知道binlog是否完整?

  • statement 格式的 binlog,最后会有 COMMIT;
  • row 格式的 binlog,最后会有一个 XID event。
http://www.xdnf.cn/news/1082.html

相关文章:

  • rk3568main.cc解析
  • NumPyro:概率编程的现代Python框架深度解析
  • “思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列
  • tomcat集成redis实现共享session
  • 文件上传漏洞3
  • 路由与路由器
  • Centos虚拟机远程连接缓慢
  • Docker 与 Docker-Compose 的区别
  • AI数字人:元宇宙舞台上的闪耀新星(7/10)
  • go-Casbin使用
  • docker-compose搭建kafka
  • 【MCP Node.js SDK 全栈进阶指南】中级篇(1):MCP动态服务器高级应用
  • 2025智能驾驶趋势评估
  • FreeRTOS【1】如何设置keil的软件仿真
  • GTS-400 系列运动控制器板(九)----设置轴为闭环控制方式
  • Ansys Zemax | 在 MATLAB 中使用 ZOS-API 的技巧
  • 【go】简单理解梳理go的内存分配原理
  • Nginx​中间件的解析
  • 蓝桥杯 19.合根植物
  • 逻辑回归:损失和正则化技术的深入研究
  • 音频base64
  • 三角形神经网络(TNN)
  • 豪越科技消防公车管理系统:智能化保障应急救援效率
  • LeetCode 1292 元素和小于等于阈值的正方形的最大边长
  • 洗车小程序系统前端uniapp 后台thinkphp
  • Sharding-JDBC 系列专题 - 第五篇:分布式事务
  • Linux 系统监控大师:Glances 工具详解助力自动化
  • 【DeepSeek 学习推理】Llumnix: Dynamic Scheduling for Large Language Model Serving
  • 从代码学习深度学习 - 异步计算 PyTorch 版
  • 【音视频】FFmpeg解封装