MySQL Group Replication(组复制MGR)
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)的更多相关文章
- Mysql 5.7 基于组复制(MySQL Group Replication) - 运维小结
之前介绍了Mysq主从同步的异步复制(默认模式).半同步复制.基于GTID复制.基于组提交和并行复制 (解决同步延迟),下面简单说下Mysql基于组复制(MySQL Group Replication ...
- MySQL Group Replication 介绍
2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...
- Mysql Group Replication 简介及单主模式组复制配置【转】
一 Mysql Group Replication简介 Mysql Group Replication(MGR)是一个全新的高可用和高扩张的MySQL集群服务. 高一致性,基于原生复制及p ...
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- MySQL组复制MGR(一)-- 技术概述
(一)复制技术的发展 MySQL的复制技术主要经历了异步主从复制,半同步复制,组复制(Group Replication)3个阶段. (1)传统的异步主从复制 传统的MySQL提供了一种简单的主从复制 ...
- mysql group replication观点及实践
一:个人看法 Mysql Group Replication 随着5.7发布3年了.作为技术爱好者.mgr 是继 oracle database rac 之后. 又一个“真正” 的群集,怎么做到“ ...
- MySQL Group Replication配置
MySQL Group Replication简述 MySQL 组复制实现了基于复制协议的多主更新(单主模式). 复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事 ...
- mysql group replication 安装&配置详解
一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...
- 使用ProxySQL实现MySQL Group Replication的故障转移、读写分离(一)
导读: 在之前,我们搭建了MySQL组复制集群环境,MySQL组复制集群环境解决了MySQL集群内部的自动故障转移,但是,组复制并没有解决外部业务的故障转移.举个例子,在A.B.C 3台机器上搭建了组 ...
- MySQL Group Replication 技术点
mysql group replication,组复制,提供了多写(multi-master update)的特性,增强了原有的mysql的高可用架构.mysql group replication基 ...
随机推荐
- H - F(x)
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- iOS开发 - CocoaPods的常见使用方式
1 CocoaPods 的安装 1.1 作用: 帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用 1.2 理解: 1. ...
- jsp 预编译
jspc-maven-plugin <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
- JTextArea设置滚动条
应将JTextArea置于JScrollPanel中 若要使只有垂直滚动条而没有水平滚动条,使用JTextArea.setLineWrap(true),自动换行. 以下摘自[url]http:// ...
- 081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
这是 “搜索旋转排序数组”问题的跟进:如果数组元素允许重复,怎么办?这会影响到程序的时间复杂度吗?会有怎样的影响,为什么?假设按照升序排序的数组在预先未知的某个关键点上旋转.(例如, 0 1 2 4 ...
- SSH的端口转发
这里是一篇很好的介绍SSH PortForwarding的文章http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 可以将远端服务器一 ...
- 别让CDN的回源把你的服务器拖垮,采用正确的回源策略
我们有一台服务器提供的服务主要是以动态页面为主,静态页面都是固定的内容平时更新的很少,最近这台服务器的应用升级到了新版本访问量增大了不少,随之的问题就来了,最近每天一到9点负载就超过警戒值,然后负载持 ...
- 开源GIS-对比GeoServer和MapServer
1 主流组合: 基于C.C++系列的:Mapserver(服务器)+QGIS(桌面软件)+PostGIS(数据库)+Openlayers(JS)/ openscale (FLex)(浏览器客户端) ...
- WebService_Demo
简述 使用IDEA开发webservice服务,从零开始一步一步指引你. 服务端开发 首先创建一个webservice项目,如下图 创建完项目后idea会帮我们创建一个类,helloword,我们把它 ...
- CodeSmith Generator 7.0.2
[工具]CodeSmith Generator 7.0.2激活步骤 只看楼主 收藏 回复 M炎骫毒逆天T c#攻城狮 8 学过三层的人应该认识CodeSmith Generator吧, ...