参考资料:
参考视频
https://www.bilibili.com/video/BV1tN411Z7iJ?p=2&spm_id_from=pageDriver
Binlog简述:
- Binlog是MySQL自带的,独立于InnoDB等引擎的,用于记录所有数据库和表的创建、修改、删除操作的(当然select,show除外),以”事件“形式保存的二进制日志
- 开启Binlog主要用于:主从复制以及数据库的恢复
- 主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传递给从库,从库拿到
Binlog后实现数据恢复达到主从数据一致性。 - 数据恢复:redo log只能用于恢复脏页的数据,即缓存中改变但是未持久化到磁盘的数据,但是当我们把磁盘上的表或库,删掉或者破坏掉,redo log是无法恢复的,Binlog则可以将数据库恢复到指定时间点的样子
- “事件”形式:MySQL把对库或表的创建、修改和删除操作,视为一个事件操作,保存在log_event结构中,最后追加在Binlog中,具体的流程如下:

- Binlog的生成流程大概如下:
- (1)、 事务开始、MySQL发生了库或表的创建、修改、删除操作,并在内存中将事件存储为log event结构,将log event写入缓冲区,每个事务线程都有一个缓冲区
- (2)、事务在提交阶段会将内存中产生的log event写入到磁盘binlog文件中,不同事务以串行方式将log event写入binlog文件中,所以一个事务包含的log event信息在 binlog文件中是连续的,中间不会插入其他事务的log event。
- (3)、上述介绍的是大多数binlog的刷盘机制,我们可以通过sync_binlog来进行binlog的刷盘策略
- sync_binlog = 0:不去强制要求,由系统自行判断何时写入磁盘
- sync_binlog =1:每次commit的时候都要将binlog写入磁盘
- sync_binlog = N: 每N个事务,才会将binlog写入磁盘

Binlog简介
- Binlog属于逻辑日志
https://www.bilibili.com/video/BV1r54y1Z7G5?spm_id_from=333.337.search-card.all.click&vd_source=97411b9a8288d7869f5363f72b0d7613
1621

被折叠的 条评论
为什么被折叠?



