MySQL中的binlog刷盘机制解读

 更新时间:2025年08月15日 16:29:26   作者:小志的博客  
MySQL binlog由server层提供,支持三种刷盘策略:sync_binlog=0(性能高但可能丢失)由操作系统决定刷盘时机;=1(最安全)每次提交强制刷盘;=2(折中)每N次提交后刷盘,5.7.7前默认0,之后默认1

一、binlog刷盘机制

  • binlog是由mysql的server层提供出来一种日志记录方式,是所有引擎共用的,不是只属于innoDB引擎。
  • binlog同样提供了3种同步机制,通过配置文件中sync_binlog属性的实现的刷盘策略。

二、sync_binlog属性提供的3种刷盘策略

  • sync_binlog=0 操作系统决定(实时写,延迟刷)。

由server层的执行器在提交了事务之后,写到PageCache,再由操作系统决定什么时候调用fsync函数将 binlog 写入到磁盘(性能最高,但宕机可能丢失部分 binlog)

  • sync_binlog=1 提交时写入(实时写、实时刷)。

每次事务提交时都强制刷新 binlog 到磁盘(最安全,但性能较低)

  • sync_binlog=2 n次事务提交(实时写、延迟刷)。

由server层的执行器在提交了N次事务之后,写到PageCache,再由操作系统决定什么时候调用fsync函数将 binlog 写入到磁盘(折中方案,平衡安全性和性能)

  • mysql5.7.7以前的版本默认使用sync_binlog=0
  • mysql5.7.7以后的版本默认使用sync_binlog=1

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL中的连接查询使用方式

    MySQL中的连接查询使用方式

    文章介绍了MySQL中的连接查询(JOIN),包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN(通过UNION实现),通过示例和解释,文章说明了连接查询在数据规范化、提高查询效率和满足复杂查询需求方面的应用
    2025-11-11
  • php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据

    这篇文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下
    2014-08-08
  • 提升MongoDB性能的方法

    提升MongoDB性能的方法

    在本篇文章中我们给大家总结了提升MongoDB性能的方法以及相关知识点内容,有需要的朋友们可以学习下。
    2018-09-09
  • mysql 如何使用JSON_EXTRACT() 取json值

    mysql 如何使用JSON_EXTRACT() 取json值

    这篇文章主要介绍了mysql如何使用JSON_EXTRACT() 取json值的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MySQL如何匹配字符串函数

    MySQL如何匹配字符串函数

    MySQL提供多个字符串匹配函数,如like、locate、position、instr和find_in_set,其中locate、position、instr和find_in_set均返回字符在字段中的索引(如果包含),否则返回0,特别地,find_in_set适用于字段为数组的情况
    2024-11-11
  • MySQL压力测试工具Mysqlslap的使用

    MySQL压力测试工具Mysqlslap的使用

    这篇文章主要介绍了MySQL官方压力测试工具 Mysqlslap的使用方法,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-12-12
  • mysql启动的error 2003和1067错误问题解决方法

    mysql启动的error 2003和1067错误问题解决方法

    mysql安装好经常发现无法正常启动碰到最多的是error 2003的错误,经研究在此附上解决方法,希望可以帮助有类似问题的朋友
    2013-09-09
  • Mysql一些复杂的sql语句(查询与删除重复的行)

    Mysql一些复杂的sql语句(查询与删除重复的行)

    这篇文章主要介绍了Mysql一些复杂的sql语句(查询与删除重复的行),需要的朋友可以参考下
    2017-05-05
  • MySQL数据库迁移到Oracle数据库的完整步骤记录

    MySQL数据库迁移到Oracle数据库的完整步骤记录

    在研发过程中可能会用到将表数据库中的表结构及数据迁移到另外一种数据库中,比如说从mysql中迁移到oracle中,这篇文章主要给大家介绍了关于MySQL数据库迁移到Oracle数据库的完整步骤,需要的朋友可以参考下
    2024-06-06
  • MySQL中一些常用的数据表操作语句笔记

    MySQL中一些常用的数据表操作语句笔记

    这篇文章主要介绍了MySQL中一些常用的数据表操作语句笔记,其中重点讲解了删除关联表的方法,需要的朋友可以参考下
    2016-03-03

最新评论