如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog

 更新时间:2021年02月02日 16:01:01   作者:bloomingTony  
这篇文章主要介绍了如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下

innodb_flush_log_at_trx_commit和sync_binlog  两个参数是控制MySQL磁盘写入策略以及数据安全性的关键参数。

show variables like "innodb_flush_log_at_trx_commit";

innodb_flush_log_at_trx_commit:

0: 由mysql的main_thread每秒将存储引擎log buffer中的redo日志写入到log file,并调用文件系统的sync操作,将日志刷新到磁盘。

1:每次事务提交时,将存储引擎log buffer中的redo日志写入到log file,并调用文件系统的sync操作,将日志刷新到磁盘。

2:每次事务提交时,将存储引擎log buffer中的redo日志写入到log file,并由存储引擎的main_thread 每秒将日志刷新到磁盘。

show variables like "sync_binlog";

sync_binlog:

0 :存储引擎不进行binlog的刷新到磁盘,而由操作系统的文件系统控制缓存刷新。

1:每提交一次事务,存储引擎调用文件系统的sync操作进行一次缓存的刷新,这种方式最安全,但性能较低。

n:当提交的日志组=n时,存储引擎调用文件系统的sync操作进行一次缓存的刷新。

sync_binlog=0或sync_binlog大于1,事务被提交,而尚未同步到磁盘。因此,在电源故障或操作系统崩溃时有可能服务器已承诺尚未同步一些事务到二进制日志。因此它是不可能执行例行程序恢复这些事务,他们将会丢失二进制日志。

innodb_flush_log_at_trx_commit和sync_binlog 都为 1 时是最安全的,在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。但是鱼与熊掌不可兼得,双1,1 会导致频繁的io操作,因此该模式也是最慢的一种方式。

实际使用时,要考虑业务方对性能和安全性的需求,综合考量设置,两个参数。上图中是我们线上机器的参数。

以上就是如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog的详细内容,更多关于MySQL的innodb_flush_log_at_trx_commit和sync_binlog的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Mysql通讯协议

    详解Mysql通讯协议

    这篇文章对Mysql的通讯协议做了详细介绍和说明,希望我们整理的内容对你有用,一起学习下吧。
    2017-12-12
  • mybatis-plus如何使用sql的date_format()函数查询数据

    mybatis-plus如何使用sql的date_format()函数查询数据

    这篇文章主要给大家介绍了关于mybatis-plus如何使用sql的date_format()函数查询数据的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • mysql 分页优化解析

    mysql 分页优化解析

    似乎讨论分页的人很少,难道大家都沉迷于limit m,n?在有索引的情况下,limit m,n速度足够,可是在复杂条件搜索时,where somthing order by somefield+somefieldmysql会搜遍数据库,找出“所有”符合条件的记录,然后取出m,n条记录。
    2008-04-04
  • 详解MySQL8.0原子DDL语法

    详解MySQL8.0原子DDL语法

    这篇文章主要介绍了详解MySQL8.0原子DDL语法的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • insert...on duplicate key update语法详解

    insert...on duplicate key update语法详解

    本文主要介绍了insert...on duplicate key update语法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Mysql数据库存储过程基本语法讲解

    Mysql数据库存储过程基本语法讲解

    本文通过一个实例来给大家讲述一下Mysql数据库存储过程基本语法,希望你能喜欢。
    2017-11-11
  • MAC下修改mysql默认字符集为utf8的方法

    MAC下修改mysql默认字符集为utf8的方法

    本文主要介绍了如何修改MAC版mysql默认字符集为utf8,如果你的MAC版mysql字符乱码,可以参考一下这篇文章
    2018-03-03
  • mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项

    mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项

    本文主要给大家介绍mysql通过my.cnf修改默认字符集为utf-8的方法,当然你也可以设置成别的,国际点还是utf-8好,以及在修改过程中要注意的一些事项,有需要的朋友们可以参考借鉴。
    2016-09-09
  • mysql存储过程中的异常处理解析

    mysql存储过程中的异常处理解析

    这篇文章主要为大家详细介绍了mysql存储过程中的异常处理,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 解决mysql导入还原时乱码的问题

    解决mysql导入还原时乱码的问题

    sql文件,直接记事本方式打开,中文显示正常,还原导入后,发现中文是乱码
    2012-12-12

最新评论