mysql binlog 机制_mysql 原理 ~binlog系列之-sync_binlog刷新机制

简介 详细讲述 sync_binlog参数

一 参数

包含两部分 1 sync本地磁盘 2 dump_thread时机

sync_binlog=0

1 binary log 不 sync 刷盘,依赖于 OS 刷盘机制

2 在flush阶段后通知DUMP线程发送Event。(不进入sync阶段)

sync_binlog=1

1 binary log 每次 sync 队列形成后都进行sync刷盘 约等于每次group commit 进行刷盘

2 在 sync 阶段后通知DUMP线程发送 Event

sync_binlog = N

1 binary log 将在指定次 sync 队列形成后进行 sync 刷盘

2 会在 flush 阶段后通知 DUMP 线程发送 Event。

二 binlog组提交技术

1 Flush:所有已经注册线程都将写入binary log缓存

2 Sync :binary log缓存的数据将会sync到磁盘,当sync_binlog=1时所有该队列事务的二进制日志缓存永久写入磁盘

3 Commit: leader根据顺序调用存储引擎提交事务(innodb层)

4 所有队列都是串行化执行,这点要牢记

三 组提交细节

如何提高一次性group commit的数量

binlog_group_commit_sync_delay毫秒直到达到 binlog_group_commit_sync_no_delay_count事务个数时,将进行一次组提交。

四 具体流程

存储引擎(InnoDB) Prepare ----> 数据库上层(Binary Log) Flush Stage ----> Sync Stage ----> 调存储引擎(InnoDB)Commit stage.

五 总结

1 sync_binlog如果设置非1 可能导致从库比主库多数据.所以在重要环境还是建议使用sync_binlog=1

2 不同的sync_binlog值 对于dump线程何时获取binlog都是有影响的

3 dump线程确实是获取的binlog cache

4 所谓的sync_binlog涉及到的就是binlog组提交的sync阶段

此文章大多来源八怪大神相关文章总结,特此说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值