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

MYSQL的bin log是什么

问题

MYSQL的bin log是什么

我的回答

MySQL的bin log,全称binary log,是MySQL服务器层面的一种二进制日志,记录了所有修改数据库的操作。它主要有三个核心作用:

首先,binlog最重要的用途是用于主从复制。主库把所有数据变更记录到binlog中,从库通过拉取并重放这些binlog来保持数据同步。这是MySQL实现读写分离、高可用架构的基础。

其次,binlog用于数据恢复。比如我们做了一个全量备份,之后的增量数据可以通过binlog来恢复。如果某天凌晨3点数据库出了问题,而我们有昨天的全量备份和之后的binlog,就可以恢复到出问题前的状态。

第三,binlog还可以用于审计,因为它记录了所有的数据变更操作,可以用来追踪数据的变更历史。

关于binlog的格式,MySQL支持三种:

  • STATEMENT格式:记录SQL语句原文,体积小但在某些情况下可能导致主从不一致,比如使用了NOW()、UUID()等函数时。
  • ROW格式:记录行数据变化,保证主从一致性,但体积较大。这是MySQL 5.7后的默认格式。
  • MIXED格式:结合前两种的优点,根据SQL语句自动选择使用STATEMENT还是ROW格式。

binlog的写入时机是在事务提交时,遵循两阶段提交机制。先写redo log并prepare,然后写binlog,最后commit redo log。这样即使崩溃,也能保证主从数据一致性。

在生产环境中,我们通常会设置sync_binlog=1,确保每次事务提交时binlog都会刷盘,提高数据安全性。但这会带来一定的性能开销,需要根据业务场景权衡。

binlog默认保留时间是30天,可以通过expire_logs_days参数调整。随着业务增长,binlog可能会占用大量磁盘空间,需要合理规划。

与redo log不同,binlog是服务器层面的日志,适用于所有存储引擎;而redo log是InnoDB特有的。另外,binlog记录的是逻辑变化(如插入一行数据),而redo log记录的是物理变化(如对哪个数据页做了什么修改)。

http://www.dtcms.com/a/350655.html

相关文章:

  • JUC并发编程08 - 同步模式/异步模式
  • ROS2 python功能包launch,config文件编译后找不到
  • 链表OJ习题(2)
  • 搭建基于LangChain实现复杂RAG聊天机器人
  • AI在软件研发流程中的提效案例
  • 在vue3后台项目中使用热力图,并给热力图增加点击选中事件
  • Java中删除字符串首字符
  • 【51单片机】【protues仿真】基于51单片机数码管温度报警器系统
  • AR眼镜赋能水利智能巡检的创新实践
  • 算法题打卡力扣第167题:两数之和——输入有序数组(mid)
  • VASP计算层错能(SFE)全攻略2
  • python自学笔记12 NumPy 常见运算
  • QT(1)
  • 独立显卡接口操作指南
  • 小程序开发指南(四)(UI 框架整合)
  • Linux系统网络管理
  • UE5 UI遮罩
  • 人形机器人产业风口下,低延迟音视频传输如何成为核心竞争力
  • Linux笔记9——shell编程基础-3
  • OpenFeign的原理解析
  • FMS回顾和总结
  • C++ 中 `std::map` 的 `insert` 函数
  • 【机器学习项目 心脏病预测】
  • 【广告系列】流量归因模型
  • centos 用 docker 方式安装 dufs
  • 【C++11】auto关键字:自动类型推导
  • Python爬虫实战: 爬虫常用到的技术及方案详解
  • Leetcode top100之链表排序
  • Swift 解法详解 LeetCode 362:敲击计数器,让数据统计更高效
  • 【猿人学】web第一届 第16题 js-逆向 windows蜜罐 / webpack初体验