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基 ...
随机推荐
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- PostgreSQL-9-别名与动态表复制
1.列别名 SELECT column_name AS alias_name FROM table_name conditions... ; alias_name: 它指定分配给列的临时名称 SEL ...
- JSON对象 JSON字符串 JSON数组
JSON对象: var str2 = { "name" : "andy", "gender" : "man" , &q ...
- HTML--使用重置按钮,重置表单信息
当用户需要重置表单信息到初始时的状态时,比如用户输入“用户名”后,发现书写有误,可以使用重置按钮使输入框恢复到初始状态.只需要把type设置为"reset"就可以. 语法: < ...
- 2017"百度之星"程序设计大赛 - 资格赛 寻找母串
Problem Description 对于一个串S,当它同时满足如下条件时,它就是一个01偏串: 1.只由0和1两种符组成: 2.在S的每一个前缀中,0的个数不超过1的个数: 3.S中0的个数和1的 ...
- cocos-js一些问题
1. setTexture和setSpriteFrame方法 修改精灵的里面的图片的时候如果是图片使用 var imgPath = "#" + this.imgName[idx] ...
- DiscuzX2.5密码错误次数过多,请 15 分钟后重新登录的修改办法
source\function function_login.php $return = (!$login || (TIMESTAMP - $login['lastupdate'] > )) ? ...
- P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组 ...
- IP Addresses of Google Global Cache
Bulgaria 93.123.23.1 93.123.23.2 93.123.23.3 93.123.23.4 93.123.23.5 93.123.23.6 93.123.23.7 93.123. ...
- 2、替换空格------------>剑指offer系列
题目 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 代码 1.直接用空格将字符串切割成 ...