MGR基本要求:

1、InnoDB存储引擎

2、主键,每个表必须具有已定义的主键或等效的主键,其中等效项是非null唯一键

3、IPv4网络

4、网络性能

5、开启二进制日志并开启GTID模式

6、mysql版本在5.7.17以上

MGR限制:

1、组复制不支持mysiam引擎

2、不支持binlog的checksum校验

3、并发DDL与DML操作。  使用多主模式时,不支持针对同一对象但在不同服务器上执行的并发数据定义语句和数据操作语句,因为锁不共享

4、具有级联约束的外键

5、非常大的事务,即超过5S的事物,都会自动驱逐出集群,设置group_replication_transaction_size_limit参数限制事物大小,如果超过则回滚

6、最多包含9个服务器

开启replication配置:

所有的实例中必须包含以下参数配置:

server-id=1                                      #标识服务器唯一

log-bin=mysql-bin                           #二进制日志开启

enforce_gtid_consistency = ON          #GTID模式

binlog-format=row                           #必须是ROW模式

gtid-mode=ON                                  #GTID保证事物编号全局唯一   (Global Transaction ID)

master-info-repository=TABLE

relay-log-info-repository=TABLE           #记录同步的信息,便于管理和恢复

log-slave-update = ON                         #需要记录事务的binlog,用作以后的恢复用,哪怕不是写入点,也需要

binlog-checksum=NONE                      #MGR本身不支持binlog的checksum校验

 slave-parallel-workers=8

 slave-preserve-commit-order=1    #GTID配置,SQL线程按照顺序重放事物

slave-parallel-type=LOGICAL_CLOCK.   #SQL线程工作模式。有两种。

#组复制配置:

  transaction_write_set_extraction=XXHASH64    #指示服务器对于每个事务,它必须收集写集并使用XXHASH64散列算法将其编码为 散列

  loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"    #命名格式,每个实例必须完全相同

  loose-roup_replication_start_on_boot=off        #插件在服务器启动时不自动启动操作

 loose-group_replication_local_address =“127.0.0.1:24903”     #指定本机地址及端口,是通信端口,不是实例端口

 loose-group_replication_group_seeds= "127.0.0.1:24903,127.0.0.1:24903,127.0.0.1:24903"    #设置组成员的主机名和端口,端口使用的是通信端口,不是实例端口

 loose-group_replication_bootstrap_group=off        #引导是否开启,选择关闭,手动引导

loose-group_replication_auto_increment_increment=7      #指定自增量,默认为7

 loose-group_replication_single_primary_mode = off    #关闭单主模式的参数
loose-group_replication_enforce_update_everywhere_checks = on #开启强制检查

创建复制账号:

SET SQL_LOG_BIN=0;      #不写入二进制日志,避免扩散到其他机器
grant replication slave on *.* to 'backup'@'%' identified by '123456';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;

主执行:

CHANGE MASTER TO MASTER_USER='stemp', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';      #加入组
INSTALL PLUGIN group_replication SONAME 'group_replication.so';      #安装组复制插件。mysql自带有这个插件
SHOW PLUGINS;    #查看插件是否安装成功
SET GLOBAL group_replication_bootstrap_group = ON;      #开始引导组
START GROUP_REPLICATION;                 #开启组复制
SET GLOBAL group_replication_bootstrap_group = OFF;  #关闭引导
查看:
SELECT * FROM performance_schema.replication_group_members;      #查看是否加入成功
其他机器执行(加入组复制):
SET SQL_LOG_BIN=0;      #不写入二进制日志,避免扩散到其他机器
grant replication slave on *.* to 'backup'@'%' identified by '123456';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='stemp', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';
INSTALL PLUGIN group_replication SONAME'group_replication.so';
START GROUP_REPLICATION;
这里和第一台机器不同的是不执行引导组的语句。
查看:SELECT * FROM performance_schema.replication_group_members;
MGR使用paxos算法来解决一致性的问题,自己的理解:
比如一场法庭审判:
底下的人都是提议者,可以提出自己的意见和建议,但是,最后做出决定的是法官,这个法官可以是一个或者多个。
提出提议的众人争先和法官联系。每一个提议者都会提出一个意见,这个意见会生成一个唯一的ID。如果有一个提议者和大多数法官(半数以上)取得的联系,那么这个提议就会被接受 法官就会记录这个提议生成的唯一ID,和上一个ID进行对比,如果现在的这个ID大于旧ID,那么这个意见就会被接收,然后法官们一起决定这个意见,以少数服从多数的方式决定。 如果这个ID小于或者等于旧ID,那么法官就会拒绝这个提议,拒绝后,提议者会将这个ID号增加,然后继续向法官提出提议,直到被接受。 在同一时间,只有一个提议能被接受。
												

MySQL Group Replication(组复制MGR)的更多相关文章

  1. Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结

    之前介绍了Mysq主从同步的异步复制(默认模式).半同步复制.基于GTID复制.基于组提交和并行复制 (解决同步延迟),下面简单说下Mysql基于组复制(MySQL Group Replication ...

  2. MySQL Group Replication 介绍

    2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...

  3. Mysql Group Replication 简介及单主模式组复制配置【转】

    一 Mysql Group Replication简介    Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务.    高一致性,基于原生复制及p ...

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

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

  5. MySQL组复制MGR(一)-- 技术概述

    (一)复制技术的发展 MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段. (1)传统的异步主从复制 传统的MySQL提供了一种简单的主从复制 ...

  6. mysql group replication观点及实践

    一:个人看法 Mysql  Group Replication  随着5.7发布3年了.作为技术爱好者.mgr 是继 oracle database rac 之后. 又一个“真正” 的群集,怎么做到“ ...

  7. MySQL Group Replication配置

    MySQL Group Replication简述 MySQL 组复制实现了基于复制协议的多主更新(单主模式). 复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事 ...

  8. mysql group replication 安装&配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  9. 使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(一)

    导读: 在之前,我们搭建了MySQL组复制集群环境,MySQL组复制集群环境解决了MySQL集群内部的自动故障转移,但是,组复制并没有解决外部业务的故障转移.举个例子,在A.B.C 3台机器上搭建了组 ...

  10. MySQL Group Replication 技术点

    mysql group replication,组复制,提供了多写(multi-master update)的特性,增强了原有的mysql的高可用架构.mysql group replication基 ...

随机推荐

  1. ES6函数参数默认值作用域的模拟原理实现与个人的一些推测

    一.函数参数默认值中模糊的独立作用域 我在ES6入门学习函数拓展这一篇博客中有记录,当函数的参数使用默认值时,参数会在初始化过程中产生一个独立的作用域,初始化完成作用域会消失:如果不使用参数默认值,不 ...

  2. Validation(4)-临时

    使用Hibernate-Validator优雅的校验参数 2019年01月01日 13:17:31 余生之君 阅读数:337    版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  3. 洛谷P4095||bzoj3163 [HEOI2013]Eden 的新背包问题

    https://www.luogu.org/problemnew/show/P4095 不太会.. 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A.考虑多重背包,发现没有办法快速 ...

  4. 子shell

    http://bbs.csdn.net/topics/392292455 https://www.cnblogs.com/daniaoge/p/6161821.html http://blog.csd ...

  5. POJ SETI 高斯消元 + 费马小定理

    http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...

  6. 剑指offer部分编程题

    一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...

  7. JMeter--PerfMon Metrics Collector监控内存及CPU

    1.需要准备的软件及插件 ServerAgent-2.2.1.zip JMeterPlugins-Standard-1.3.1.zip 2.jmeter上JMeterPlugins-Standard- ...

  8. Apache is running a threaded MPM, but your PHP module is not compiled to be threadsafe. you need to recompile php. pre-configuration failed

    手动配置想要组合版本的wamp环境时,在服务器上直接下载的几个安装包怎么都组合安装不成功,纠结很久,终于找到原因.配置apache支持php后apache一直无法成功启动.后来发现php是nts的版本 ...

  9. iOS Block的本质(二)

    iOS Block的本质(二) 1. 介绍引入block本质 通过上一篇文章Block的本质(一)已经基本对block的底层结构有了基本的认识,block的底层就是__main_block_impl_ ...

  10. 在前台引用JSON对象

    <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script&g ...