MySQL组复制MGR(一)-- 技术概述
(一)复制技术的发展
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(一)-- 技术概述的更多相关文章
- MySQL组复制MGR(四)-- 单主模式与多主模式
(一)概述 组复制可以运行在单主模式下,也可以运行在多主模式下,默认为单主模式.组的不同成员不能部署在不同模式下,要切换模式,需要使用不同配置重新启动组而不是单个server. 相关参数如下: # 该 ...
- MySQL组复制MGR(二)-- 组复制搭建
(一)主机操作 (1)路由信息vmnet5 192.168.10.0 (2)主机信息 主机名称 IP地址 操作系统版本 数据库版本 mgr-node1 192.168.10.11 centos 7.4 ...
- MySQL中间件之ProxySQL(15):ProxySQL代理MySQL组复制
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL+组复制前言 在以前的ProxySQL版本中,要支 ...
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- 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 ...
- 【MySQL 组复制】1.组复制技术简介
组复制有两种模式 单主模式(single-primary/single-master)下自动选举出一个主节点,从而只允许在同一时刻只有该主节点可以更新数据. 对于MySQL的高级使用人员,可以通过复制 ...
- 使用MySQL组复制的限制和局限性
本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...
- mysql组复制集群简介
mysql组复制集群拓扑: 环境: centos6.5 mysql5.7.19 一.组复制搭建: 配置hosts文件 再三台服务器上分别启动一个mysql实例,共三个. 参考配置文件如下: serve ...
- MySQL Group Replication(组复制MGR)
MGR基本要求: 1.InnoDB存储引擎 2.主键,每个表必须具有已定义的主键或等效的主键,其中等效项是非null唯一键 3.IPv4网络 4.网络性能 5.开启二进制日志并开启GTID模式 6.m ...
随机推荐
- jvm入门及理解(六)——垃圾回收与算法
一.jvm垃圾回收要做的事情 哪些内存需要回收 什么时候回收 怎么回收 二.如何判断对象已经死亡,或者说确定为垃圾 引用计数法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器的值就加1: ...
- 关于数据库客户端navicat创建新连接失败的问题
如图是navicat创建新连接的截图: 我就有一个疑问了,主机填localhost或者127.0.0.1都是本机,自然是可以连接成功的,那如果填本机的IP地址会怎样呢? 如下图,出现了报错: 说我的访 ...
- Cannot resolve symbol window
参照官网执行如下代码的时候,报了Cannot resolve symbol window错误. val windowedCounts = words.groupBy( window($"ti ...
- GraphicsLab Project 之 Screen Space Planar Reflection
作者:i_dovelemon 日期:2020-06-23 主题:Screen Space Planar Reflection, Compute Shader 引言 前段时间,同事发来一篇讲述特化版本的 ...
- 01 . Shell详细入门介绍及简单应用
Shell简介 Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 解释处理Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输 ...
- spring引用hibernate映射文件的四种方式
1.mappingResources 2.mappingLocations 3.mappingDirectoryLocations 4.mappingJarLocations 四种方式:https:/ ...
- Java 添加、下载、读取PDF附件信息(基于Spire.Cloud.SDK for Java)
Spire.Cloud.SDK for Java提供了PdfAttachmentsApi接口添加附件addAttachment().下载附件downloadAttachment().获取附件信息get ...
- centos7篇---开启防火墙和特定端口
开启防火墙服务 以前为了方便,把防火墙都关闭了,因为现在项目都比较重要,害怕受到攻击,所以为了安全性,现在需要将防火墙开启,接下来介绍一下步骤.1, 首先查看防火墙状态: firewall-cmd - ...
- 数据结构之二叉搜索树(BST)--JavaScript实现
原理: 叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树的存储结构.中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程 ...
- 数据可视化基础专题(十三):Matplotlib 基础(五)常用图表(三)环形图、热力图、直方图
环形图 环形图其实是另一种饼图,使用的还是上面的 pie() 这个方法,这里只需要设置一下参数 wedgeprops 即可. 例子一: import matplotlib.pyplot as plt ...