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. RT-Thread 设备驱动UART浅析

    OS版本:RT-Thread 4.0.0 芯片:STM32F407 RT-Thread的串口驱动框架与Linux相识,分成 I/O设备框架 + 设备底层驱动: 1. serial设备初始化及使用 将配 ...

  2. Unrecogized font family ‘Ionicons’ 在ios上报错,android正常

    解决方法: react-native link react-native-vector-icons 很多模块都需要link一下

  3. 黑马Stream流学习 Stream流 函数式接口 Lambda表达式 方法引用

  4. java排序之冒泡排序

    代码: package com.cn.algorithm_arithmetic算法; /** * 本程序记录了经典排序算法之冒泡排序 * @author Administrator * */ publ ...

  5. mongodb数据库分片实现链接

    http://www.lanceyan.com/tech/arch/mongodb_shard1.html

  6. DRF教程4-视图集和路由类

    rest框架包括一个处理viewset的抽象,允许开发人员集中精力处理api交互和建模,url构造都根据常见方式自动处理. ViewSet类 几乎和VIew类一样,不过它提供read,update这样 ...

  7. python模块之struct

    # #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发 ...

  8. 自己写一个轻量的JqueryGrid组件

    接触mvc不久,突然没有了viewstate和服务端控件处处都觉得不顺手,很多在webform时不必要考虑的问题都出现在眼前,这其中分页时查询条件保持的问题又是最让我头疼的事情,权衡再三,决定用aja ...

  9. SimpleDateFormat 如何安全的使用?

     前言 为什么会写这篇文章?因为这些天在看<阿里巴巴开发手册详尽版>,没看过的可以关注微信公众号:zhisheng,回复关键字:阿里巴巴开发手册详尽版 就可以获得. 关注我 转载请务必注明 ...

  10. Apache的多处理模块MPM

    本博文主要参数 Apache 2.2文档以及Apache模块开发指南 Apache的整个运行可以分为两个阶段:启动阶段和运行阶段. 在启动阶段时,它以ROOT特权来启动,进行解析配置文件(一般就是ht ...