mysql双一配配置分析

mysql双一配置主要是binlogredolog的落盘时间的
binlog的write 和 fsync 的时机,是由参数 sync_binlog 控制的:
sync_binlog=0的时候,表示每次提交事务都只 write,不 fsync;
sync_binlog=1的时候,表示每次提交事务都会执行 fsync;sync_binlog=N(N>1) 的时候,表示每次提交事务都 write,但累积 N 个事务后才 fsync。

write是指将日志文件写入到文件系统的page cache,并没有持久化到磁盘,速度很快
fsync是指将数据持久化到磁盘的操作,一般情况下我们认为fsync才占磁盘的IOPS

redo log 的写入策略是由 innodb_flush_log_at_trx_commit参数控制的,它有三种可能取值:

设置为 0 的时候,表示每次事务提交时都只是把 redo log 留在 redo log buffer 中 ;
设置为 1 的时候,表示每次事务提交时都将 redo log 直接持久化到磁盘;
设置为 2 的时候,表示每次事务提交时都只是把 redo log 写到 page cache。
InnoDB 有一个后台线程,每隔 1 秒,就会把 redo log buffer 中的日志,调用 write 写到文件系统的 page cache,然后调用 fsync 持久化到磁盘。

准备数据

CREATE TABLE `t` (`id` int(11) NOT NULL,`c` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB;delimiter ;;
create procedure idata()
begindeclare i int;set i=1;while(i<=100000) doinsert into t values(i,i);set i=i+1;end while;
end;;
delimiter ;

mysql默认sync_binlog为1, innodb_flush_log_at_trx_commit 也是1,也就是双一配置。也就是说在mysql异常宕机的时候不会出现任何数据的丢失。

设置环境

set global sync_binlog=1;
set global innodb_flush_log_at_trx_commit=1;

生成新的binlog文件

flush logs;

执行存储过程

call idata();

执行时间为22分钟

mysql> call idata();
Query OK, 1 row affected (22 min 8.30 sec)

将sync_binlog设为0,innodb_flush_log_at_trx_commit设为2

set global sync_binlog=0;
set global innodb_flush_log_at_trx_commit=2;

再次执行存储过程

truncate table t;
call idata();

执行时间

mysql> call idata();
Query OK, 1 row affected (15.26 sec)

发现时间变了,只要就15秒就可以了,快了接近10倍
在生产环境中如果磁盘压力比较大, 在出现 IO 瓶颈的场景里,将 sync_binlog 设置成一个比较大的值,可以提升性能。在实际的业务场景中,考虑到丢失日志量的可控性,一般不建议将这个参数设成 0,比较常见的是将其设置为 100-1000 中的某个数值。

MySQL日志双一配置分析实战相关推荐

  1. MySQL日志分类及性能分析你应该知道的知识

    为什么80%的码农都做不了架构师?>>>    MySQL日志记录了MySQL数据库日常操作和错误信息,MySQL总共有四种类型的日志,通过分析这些日志可以查询到MySQL的运行情况 ...

  2. Mysql主从复制集群配置与实战

    主从复制实战的服务器是我在腾讯云官网上购买的几台云服务器进行操作的,不得不说云是一个好东西,以前都是在centos上进行模拟,现在在云服务器上模拟感觉对自己的提升更大.这里想强调一下,如果是在云服务器 ...

  3. mysql数据库双网卡配置_双网卡的绑定的实现与测试

    我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作.其实 ...

  4. MySQL数据和日志的刷盘机制以及双一配置

    详细介绍了MySQL数据和日志的刷盘机制以及双一配置,双一配置可以保证Mysql日志数据不丢失. 文章目录 1 内存数据的刷盘机制 2 MySQL数据的刷盘 2.1 刷盘数据来源 2.2 脏页以及刷盘 ...

  5. 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战

    基于日志的安全分析实战 背景 越来越多的企业开始重视构建基于日志的安全分析与防护系统.我们会讲述如何使用日志服务从0到1收集海量日志,并从中实时筛选.甄别出可疑操作并快速分析,进一步构建安全大盘与可视 ...

  6. mysql服务器双网卡冗余的配置

    背景:当前需要做的工程需要用到mysql数据库服务,同时需要高稳定性,要求做到双服务器双网卡冗余.需要使用两台服务器,每台服务器分别有两个网卡.两台服务器要做到互为备用.客户端在四条线路中自动选择. ...

  7. mysql 双节点主从搭建_MySQL Replication, 主从和双主配置

    MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合.与之对应的另一个技术是同步的MySQL Clust ...

  8. mysql master 配置_MySQL双Master配置的方法详解

    刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...

  9. sql入侵 mysql日志_服务器入侵日志分析(一)——mysql日志位置确定

    安全应急响应工作中,一项重要任务就是要对mysql数据库的日志进行分析.我们通过对mysql日志记录的审计,发现攻击行为,进而追溯攻击源.在工作中遇见的各种服务器上,由于mysql安装方式不同,其日志 ...

最新文章

  1. android profiler 简书,使用AndroidStudio提供的Android Profiler工具和mat进行内存泄漏分析...
  2. 使用openssl给web站点颁发证书
  3. 【Python 2 到 3 系列】 print 是函数
  4. 深度学习到底有多难?这篇文章带你入门!
  5. java 数据库 字段名 转_Java正则表达式实现表字段名和驼峰式命名转换
  6. 0到100速度测试软件,【图】到底如何完成 揭晓0-100公里/小时测试_汽车江湖
  7. Java中的LinkedHashSet
  8. ZooKeeper分布式过程协同技术详解2——了解ZooKeeper
  9. 软件设计师历年真题详解2009-2018
  10. 独家 | 一文读懂复杂网络(应用、模型和研究历史)
  11. defer和async的区别
  12. pentaho-server-ce-7.0安装配置说明
  13. JavaWeb的体育用品商店的设计与实现
  14. Android 入门教程:安装 Android Studio
  15. 题解 UVA1567 【A simple stone game】
  16. python爬网易云音乐评论最多的歌_使用Python爬一爬网易云音乐上那些评论火爆的歌曲...
  17. jks bks 等的定义 如何将jks转化为bks的
  18. 四大类好用的科研工具分享
  19. VMware16安装CentOS7 并配置网络(步骤详细)
  20. iOS 驾驭 StoryBoard

热门文章

  1. java 生成jks_jdk的keytool生成jks及获取jks的信息
  2. 配置GitHub二级域名,xxx.github.io
  3. 通过Python对的大理石接触分析
  4. 泡芙噶的计算机网络(2)-紧张刺激的Wireshark实验
  5. 守望账号与服务器失去连接,win10玩守望先锋与服务器一直断开连接的解决方法...
  6. UUUUUUUUUUnity
  7. 1.python爬取笔趣阁小说
  8. ssm 一对多的映射关系
  9. Visual Studio 2022安装与使用教程
  10. jmeter-简单接口测试