(一)复制技术的发展

MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段。

(1)传统的异步主从复制

传统的MySQL提供了一种简单的主从复制方法。有1个主服务器(master),有1个或多个从服务器(slave),主服务器执行事务,然后提交,从服务器异步接收日志,并重新应用日志。

该架构存在的问题有:如果主服务器/数据库crash了,日志没有完成传送到备库,那么当备库切换为主库的时候,可能存在数据丢失的风险。

异步复制架构如下:

图1.MySQL Asynchronous Replication


(2)半同步复制

半同步复制向同步协议添加一个步骤,这意味着主库在执行提交的时候,需要等待从库确认已经接收到事务,才能进行提交。

该架构存在的问题有:主库必须等待备库接收到日志并返回响应才算完成事物,造成了主库的延迟,这个延迟最少是一个TCP/IP往返的时间,因此半同步复制最好在延迟低的网络中使用

半同步复制架构如下:

图2.MySQL semisynchronous Replication


(3)组复制

组复制是一种可用于实施容错系统的技术。组复制是一组服务器,每个服务器都有自己的完整数据副本,并通过消息传递相互交互。一个组复制由多个服务器组成,该组中的每个服务器都可以随时独立执行事务。但是,所有读写事务仅在获得组批准后才提交,换句话说,对于任何读写事务,该组都需要确定提交,因此提交操作不是来自原始服务器的单方面决定。只读事务不需要组内协调,可以立即提交。

组复制可以是单主模式和多主模式,多主模式意味所有组成员都可以执行写操作,这样就可能存在事务冲突,根据组复制冲突监测机制,如果存在两个不同的server成员更新同一行的并发事务,排在最前面的可以在所有server成员上提交,第二个事务在源server上回滚,并在组中的其它server上删除。

图3.MySQL Group Replication

关于三种复制技术,个人觉得:异步复制提供了主从方案,降低了单节点运行数据库的风险;后续的半同步复制是异步主从复制的加强,解决了数据丢失的风险,但是依然存在网络延迟,切换麻烦的问题(例如10个节点,1主9从,主节点宕机,当把一个从节点提升为主节点后,其它节点需要手动修改master),而组复制则拥有了自动故障转移failover的能力,当主节点发生故障(单主模式才需考虑)时,组内部会自动选择主节点。


(二)组复制的容错能力

组复制建立在Paxos分布式算法之上,以提供服务器之间的分布式协调,因此,他需要大多数服务器处于活动状态才能正常工作。如果有n台服务器,最多允许故障的服务器数量为f,那么n与f之间的关系为:n=2f+1。或许这么看有些难以理解,可以看下面的关系:

组复制服务器数量 多数 允许故障的服务器数量
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3

对组复制有了一定的了解,接下来,我们一起来搭建组复制。。。

MySQL组复制MGR(一)-- 技术概述的更多相关文章

  1. MySQL组复制MGR(四)-- 单主模式与多主模式

    (一)概述 组复制可以运行在单主模式下,也可以运行在多主模式下,默认为单主模式.组的不同成员不能部署在不同模式下,要切换模式,需要使用不同配置重新启动组而不是单个server. 相关参数如下: # 该 ...

  2. MySQL组复制MGR(二)-- 组复制搭建

    (一)主机操作 (1)路由信息vmnet5 192.168.10.0 (2)主机信息 主机名称 IP地址 操作系统版本 数据库版本 mgr-node1 192.168.10.11 centos 7.4 ...

  3. MySQL中间件之ProxySQL(15):ProxySQL代理MySQL组复制

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL+组复制前言 在以前的ProxySQL版本中,要支 ...

  4. MySQL高可用架构之MySQL5.7组复制MGR

    MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...

  5. Mysql组复制之单主模式(一)

    环境 系统:CentOS release 6.9 (Final) Mysql:5.7 机器: S1 10.0.0.7 lemon S2 10.0.0.8 lemon2 S3 10.0.0.9 lemo ...

  6. 【MySQL 组复制】1.组复制技术简介

    组复制有两种模式 单主模式(single-primary/single-master)下自动选举出一个主节点,从而只允许在同一时刻只有该主节点可以更新数据. 对于MySQL的高级使用人员,可以通过复制 ...

  7. 使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...

  8. mysql组复制集群简介

    mysql组复制集群拓扑: 环境: centos6.5 mysql5.7.19 一.组复制搭建: 配置hosts文件 再三台服务器上分别启动一个mysql实例,共三个. 参考配置文件如下: serve ...

  9. MySQL Group Replication(组复制MGR)

    MGR基本要求: 1.InnoDB存储引擎 2.主键,每个表必须具有已定义的主键或等效的主键,其中等效项是非null唯一键 3.IPv4网络 4.网络性能 5.开启二进制日志并开启GTID模式 6.m ...

随机推荐

  1. Ueditor富文本添加视频内容,视频不显示以及编辑富文本时,视频不显示解决方案

    问题是在添加视频时,编辑器会把视频标签<video>换成<img>.很讨厌... 1.2是解决添加视频时不显示,3是解决编辑时不显示 ueditor.all.js文件中  第7 ...

  2. JVM的堆内存泄漏排查-性能测试

    JVM异常说明 https://testerhome.com/articles/24259 一文中已介绍了,JVM每个运行时区域--程序计数器 .Java虚拟机栈.本地方法栈.Java堆.方法区.直接 ...

  3. 在Github上建立自己的个人主页

    目录 注册Github账号 登录Github账号 建立新仓库 选择个人主页的主题 注册Github账号 首先打开Github的主页(https://github.com/),点击右上角的sign up ...

  4. InfluxDB时序数据库基本知识

    InfluxDB是一个由InfluxData开发的开源时序型数据.它由Go写成,着力于高性能地查询与存储时序型数据.InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景. 安装下 ...

  5. SerializableClob转String

    ORACLE数据库读取CLOB字段,JAVA中获取到类型为SerializableClob,如何转换成String类型那? 以下是代码示例:         SerializableClob sc = ...

  6. 三.cmdb

    一.服务器管理: https://github.com/rfjer/autoAdmin/tree/master/apps/servers 一服务器信息收集方式: 1.物理服务器 跑脚本传(bash/a ...

  7. mac安装Hadoop,mysql,hive,sqoop教程

    在安装Hadoop,mysql,hive之前,首先要保证电脑上安装了jdk 一.配置jdk 1. 下载jdk http://www.oracle.com/technetwork/java/javase ...

  8. html table表格斜线表头的实现方法总汇

    在html中给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢?总结了以下几种方法: 1.UI背景图实现 直接去找公司的UI,让她做一张图片,作为背景图片放到这里,然后撑满就可 ...

  9. window的常用操作

    一.window.location location对象属性 1.location.href 属性返回当前页面的 URL. 2.location.pathname 返回路径和方法名称 3.locati ...

  10. 蜂鸟E203系列——Linux下运行hello world例程

    欲观原文,请君移步 创建程序 在 -/hbird-e-sdk-master/software 路径下创建一个"helloworld"中文件夹 在 -/hbird-e-sdk-mas ...