一般在生产环境中,很少用MySQL单实例来支撑业务,大部分的MySQL应用都是采用搭建集群的方法。搭建MySQL集群,可以进行数据库层面的读写分离、负载均衡或数据备份。基于MySQL原生的Replication是最常见的保证数据库安全的机制,满足数据库的高可用,在数据库发生宕机的情况后,其他节点还能快速提供服务,并且数据库的数据不丢失。

Binlog是用来保存数据库修改的日志信息。一般的主从复制都是基于Binlog的,Binlog的安全直接关系到主从复制的安全,而Binlog的写入方式主要由参数sync_binlog来控制。参数取值主要如下:

参数取值 影响的行为
sync_binlog=0 事务提交时,MySQL将Binlog信息写入到Binlog文件(OS Cache)中,但是MySQL不控制Binlog的刷盘操作,由文件系统自己控制其缓存的刷新。缺点是,一旦操作系统宕机,在Binlog cache中的所有Binlog都会丢失。如果只是数据库宕机,而操作系统不宕机,那么数据库所生成的Binlog都不会丢失。
sync_binlog=1 每一个事务提交时,MySQL都会把Binlog刷新到磁盘中,这样,数据库的安全性最高。缺点是,性能损耗是最大的。此设置可以保证,在数据库或者操作系统宕机的情况下,二进制日志中缺少的任何事务也只能处于准备阶段,那么导致服务器自动恢复时,会回滚这些事务,保证无数据丢失。虽然Binlog是顺序IO,但是多个事务同时提交,同样会对MySQL和IO的性能带来很大的影响,不过MySQL可以通过Group Commit来缓解这种压力。
sync_binlog=N(N>1) 表示每N次事务提交,MySQL调用文件系统的刷新操作将缓存刷新到磁盘中。如果数据库或者操作系统在这个时候宕机,数据库库可能会丢失一些数据。

附:两阶段提交

MySQL在开启Binlog后,事务在提交时会自动被分成Prepare 和 Commit 两个阶段。

* Prepare 阶段:告诉InnoDB引擎做Prepare,InnoDB更改事务状态,并将Redo log刷入磁盘。

* Commit 阶段:先记录Binlog日志,然后告诉InnoDB引擎Commit。

MySQL通过两阶段提交的方式保证宕机时数据的安全。

-----主要内容参考梳理于网络知识,此短文仅为学习笔记,在此原创作者感谢!

MySQL 基础知识梳理学习(七)----sync_binlog的更多相关文章

  1. MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现

    一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在 ...

  2. MySQL 基础知识梳理学习(四)----GTID

    在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制.GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高. 1 ...

  3. MySQL 基础知识梳理学习(三)----InnoDB日志相关的几个要点

    1.InnoDB的特点 :(1)Fully ACID (InnoDB默认的Repeat Read隔离级别支持):(2)Row-level Locking(支持行锁):(3)Multi-version ...

  4. MySQL 基础知识梳理学习(五)----半同步复制

    1.半同步复制的特征 (1)从库会在连接到主库时告诉主库,它是不是配置了半同步. (2)如果半同步复制在主库端是开启了的,并且至少有一个半同步复制的从节点,那么此时主库的事务线程在提交时会被阻塞并等待 ...

  5. MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理

    1.InnoDB的数据存储结构 InnoDB中数据是通过段.簇.页面构成的. (1)段是表空间文件中的主要组织结构,它是一个逻辑概念,用来管理物理文件,是构成索引.表.回滚段的基本元素.创建一个索引( ...

  6. MySQL 基础知识梳理学习(一)----系统数据库

    information_schema 此数据库是MySQL数据库自带的,主要存储数据库的元数据,保存了关于MySQL服务器维护的所有其他数据库的信息,如数据库名.数据库表.表列的数据类型及访问权限等. ...

  7. MySQL 基础知识梳理学习(六)----锁

    1.什么是锁: 对共享资源进行并发访问控制,提供数据的完整性和一致性. 2.锁的区别: 类型 lock latch 对象 事务 线程 保护 数据库内容 内存数据结构 持续时间 整个事务过程 临界资源 ...

  8. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  9. [SQL] SQL 基础知识梳理(七)- 集合运算

    SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...

随机推荐

  1. 第13章 Base64 URL编码 - IdentityModel 中文文档(v1.0.0)

    JWT令牌使用Base64 URL编码进行序列化. IdentityModel包括Base64Url帮助编码/解码的类: var text = "hello"; var b64ur ...

  2. C# 将object对象转换为实体对象

    C# 将object对象转换为实体对象.一共两种方法. 第一种方法,代码如下: /// <summary> /// 将object对象转换为实体对象 /// </summary> ...

  3. Adreno OpenCL坑——bool转int

    在项目代码中为了避免条件分支,需要把bool变成int的形式,然后通过向量运算的形式和单个单个的形式,其结果却是不同,向量的方式为(-1, 0),而单个的转换则为(1, 0) 有如下kernel代码: ...

  4. ubuntu安装mysql没有让我设置密码

    终端输入: sudo cat /etc/mysql/debian.cnf显示内容:# Automatically generated for Debian scripts. DO NOT TOUCH! ...

  5. Win10系统盘制作及安装流程

    一.下载最新版的 Win10 镜像 1.打开 MSDN 下载 Windows 系统镜像,即 https://msdn.itellyou.cn/ ​ 2.下载的 iso 镜像文件 ​ 3.你可以通过双击 ...

  6. 「工具」Aquarelo - 来自意大利的色阶管理工具

    Aquarelo是一款小而美的色阶管理工具,由意大利团队开发,包含三个核心功能,可用于色彩管理.色彩搭配等场景. ## 相关参数 * 操作系统:macOS* 工具官网:[Aquarelo for Ma ...

  7. .NET之微信消息模板推送

    最近在项目中使用到了微信消息模板推送的功能,也就是将对应的消息推送到对应的用户微信上去,前提是你必须要有一个微信公众号并且是付费了的才会有这个功能,还有就是要推送的用户必须是的关注了你的微信公众号的. ...

  8. java安装和配置(3.18)

    大家好,我是一名笨笨的程序小白,刚刚学习完C#的基本开发,现在要开始学习java了!我希望在博客园里记录下我的学习日记,我也不敢保证自己会讲的东西多么全面,但是都是比较基础的东西,如果对你也有点点的小 ...

  9. 『集群』004 Slithice 集群分布式(多个客户端,基于中央服务器的集群服务)

    Slithice 集群分布式(多个客户端,基于中央服务器的多个集群服务端) 案例Demo展示: 集群架构图 如下: 如上图,上图 展示了 这个集群 的 结构: >一个中央服务器(可以有多个),负 ...

  10. 当代前端应该怎么写这个hello world?

    前言 大概16年的时候我们队react进行了简单的学习:从DOM操作看Vue&React的前端组件化,顺带补齐React的demo,当时我们只是站在框架角度在学习,随着近几年前端的变化,想写个 ...