innodb_flush_log_at_trx_commit参数

1、参数查看

  • 方法一:mysql> show  variables like ‘innodb_flush_log_at_trx_commit‘;
  • 方法二:直接查看my.cnf文件innodb_flush_log_at_trx_commit参数值

2、参数配置

  • 方法一:mysql> set global innodb_flush_log_at_trx_commit=1; 重启后会丢失使用my.cnf参数
  • 方法二:直接修改my.cnf文件innodb_flush_log_at_trx_commit参数值,但需要重启实例生效

3、参数值意义

  • 参数值可以是0,1,2
  • 0   :该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
  • 1   :该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。
  • 2   :该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

4、外料

  有文章说innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,当两个参数都设置为1的时候写入性能最差,推荐做法是innodb_flush_log_at_trx_commit=2,sync_binlog=500 或1000

原文地址:https://www.cnblogs.com/uphold/p/11290656.html

时间: 2024-10-16 06:06:10

innodb_flush_log_at_trx_commit参数的相关文章

mysql中的innodb_flush_log_at_trx_commit参数的意义

MySQL参数:innodb_flush_log_at_trx_commit 和 sync_binlog

innodb_flush_log_at_trx_commit 和 sync_binlog 是 MySQL 的两个配置参数,前者是 InnoDB 引擎特有的.之所以把这两个参数放在一起讨论,是因为在实际应用中,它们的配置对于 MySQL 的性能有很大影响. 1. innodb_flush_log_at_trx_commit 简而言之,innodb_flush_log_at_trx_commit 参数指定了 InnoDB 在事务提交后的日志写入频率.这么说其实并不严谨,且看其不同取值的意义和表现.

MySQL HA架构下innodb_flush_log_at_trx_commit及sync_binlog参数

HeartBeat + DRBD以及MySQL replication是很多企业比较普遍使用的方式.对于数据的完整性和一致性的问题,这两种架构需要考虑2个重要的参数innodb_flush_log_at_trx_commit以及sync_binlog参数.本文主要参考了MySQL 5.6 Reference Manual列出对这2个参数的具体描述. 1.Heartbeat + DRBD or replication ?Cost: Additional passive master server

MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog

innodb_flush_log_at_trx_commit 该参数控制重做日志写入磁盘的过程.我们知道 InnoDB 使用"Write Ahead Log"策略来避免数据丢失问题,即依靠重做日志来保证数据能在丢失后进行恢复.因此,InnoDB 重做日志的持久化非常重要.这个参数的默认值为1 首先需要大致了解一下mysql日志操作步骤: log_buff --> mysql写 (write) --> log_file --> OS刷新 (flush) --> d

配置参数innodb_flush_log_at_trx_commit丢失数据问题

数据丢失的定义:当事务提交了,数据因为特殊原因不存在了. MySQL默认情况下是开启内部的XA事务和事务的实现方式是基于redo log和undo log.也可以理解为MySQL事务是采用日志现行的策略.前提未开启binlog的情况下,数据的变更首先在内存中完成,并且将事务顺序的写入到redo log中,即表示该事务已经完成,就可以返回发给客户端已提交的信息.但此时变更后的数据还在内存中,并没有刷新写入到磁盘中,当达到一定条件,将内存中的数据合并写入到磁盘,即落地到磁盘.这样做的目的是提高性能,

innodb_flusn_log_at_trx_commit和rsync_binlog参数详解

innodb_flush_log_at_trx_commit参数解析 innodb_flush_log_at_trx_commit=0|1|2 #"0"表示每次事务提交都写入log buffer,但是每1秒将log buffer中所有更新写入log file,并将log file刷入磁盘(同时进行).每次事务提交不会主动触发磁盘写入,只每秒定时刷入. #"1"表示每次事务提交时,mysql都会把log buffer的数据写入log file,并flush data将

innodb_flush_log_at_trx_commit 和sync_binlog介绍

innodb_flush_log_at_trx_commit 是ib_logfile这个文件的刷新方式 sync_binlog 是mysql-bin.000的刷新方式 innodb_flush_log_at_trx_commit 和 sync_binlog 是 MySQL 的两个配置参数,前者是 InnoDB 引擎特有的.之所以把这两个参数放在一起讨论,是因为在实际应用中,它们的配置对于 MySQL 的性能有很大影响. 1. innodb_flush_log_at_trx_commit 简而言之

innodb_flush_log_at_trx_commit参数测试

参数说明: 不管在官网还是其他网站上均能看到innodb_flush_log_at_trx_commit=[0,1,2]三种值: innodb_flush_log_at_trx_commit = 0 :每秒将日志缓冲区写入log file,并同时flush到磁盘.跟事务提交无关.在机器crash并重启后,会丢失一秒的事务日志数据(并不一定是1s,也许会有延迟,跟操作系统调度有关). innodb_flush_log_at_trx_commit = 1:每次事务提交将日志缓冲区写入log file

【转载】你还没有真正理解的innodb_flush_log_at_trx_commit

关于innodb_flush_log_at_trx_commit的描述,看了mysql手册中的解释,感觉都不够清晰明了,下面试图以最简单直白的方式解释一下innodb_flush_log_at_trx_commit的含义. 首先需要大致了解一下mysql日志操作步骤: log_buff ---mysql写 (write)---> log_file ---OS刷新 (flush)---> disk innodb_flush_log_at_trx_commit 参数解释: 0(延迟写): log_