MySQL双1参数innodb_flush_log_at_trx_commit、sync_binlog和两阶段提交

本文介绍了MySQL中innodb_flush_log_at_trx_commit与sync_binlog参数的作用及配置选项,详细解析了这两种参数如何影响Redo日志和Binlog日志的刷新方式,并概述了MySQL采用的两阶段提交流程确保数据一致性。

一、双1参数

1、innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit这个参数控制MySQL在事务提交时将内存中的Redo log file从Redo log buffer刷新到磁盘(Redo log file)的方式。

value: 0 1 2

10

每秒钟将内存中Redo log File从Redo Log Buffer刷新到OS Buffer并调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,可能会有数据丢失)

21

默认为1,表示每次事务提交时会将Redo Log File从Redo Log Buffer中刷新到OS Buffer,并且会调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,不会有数据丢失)

32

每次事务提交时会将内存中Redo Log File从Redo Log Buffer中刷新到OS Buffer,每秒钟调用fsync()将OS Buffer刷新到磁盘(数据库宕机时,可能会有数据丢失)

2、sync_binlog

sync_binlog参数控制将内存中binlog从binlog buffer中刷新到磁盘的方式

value : 0 1 N

10

由OS决定什么时候调用fsync()来将内存中binlog file从binlog buffer刷新到磁盘(binlog file).

21

每次事务提交时,将内存中binlog file从binlog buffer中刷新到磁盘(binlog file).


3)N

每N次事务提交时,将内存中的binlog file从binlog buffer中刷新到磁盘(binlog file).

注:binlog buffer满的时候会自动调用fsync()同步binlog buffer到磁盘(binlog file).

二、两阶段提交

MySQL采用两阶段提交的方式来保证有数据库变更的时候写入Redo Log File和Binlog File数据的一致性.

1、Redo Write
2、Redo prepare(fsync())
3、Binlog Write 
4、Redo Commit
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值