一、MGR 介绍
MGR 集群简介
MySQL Group Replication(简称 MGR)是 MySQL 官方于 2016 年 12 月推出的一个全新的高
可用与高扩展的解决方案。MySQL 组复制提供了高可用、高扩展、高可靠的 MySQL 集群服务
MGR 的特点
1、高一致性,基于原生复制及 paxos 协议的
组复制技术
,并以插件的方式提供,提供一致数据安全
保证;
2、高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争
用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;
3、高扩展性,节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到
新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
4、高灵活性,有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多
主模式下,所有 server 都可以同时处理更新操作。
MGR 是 MySQL 数据库未来发展的一个重要方向。
小结:高一致性,高容错性,高扩展性,高灵活性
MGR 基础结构要求
1)引擎必须为 innodb,因为需事务支持在 commit 时对各节点进行冲突检查
2)每个表必须有主键,在进行事务冲突检测时需要利用主键值对比
3)必须开启 binlog 且为 row 格式
4)开启 GTID,且主从状态信息存于表中(--master-info-repository=TABLE 、--relay-log
info-repository=TABLE),--log-slave-updates 打开
什么是 GTID?
GTID(Global Transaction ID)是对于一个
已提交事务的编号
,并且是一个
全局唯一的编号
。
GTID 实际上是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID 代表了该实例
上已经提交的事务数量,并且随着事务提交单递增。下面是一个 GTID 的具体形式
3E11FA47-71CA-11E1-9E33-C80AA9429562:23
5)一致性检测设置--transaction-write-set-extraction=XXHASH64
MGR 使用限制:
1. 和普通复制 binlog 校验不能共存,需设置--binlog-checksum=none
2. 不支持 gap lock(间隙锁),隔离级别需设置为 read_committed
3. 不支持对表进行锁操作(lock /unlock table),不会发送到其他节点执行 ,影响需要对表进行加
锁操作的情况,列入 mysqldump 全表备份恢复操作
4. 不支持 serializable(序列化)隔离级别
5. DDL 语句不支持原子性,不能检测冲突,执行后需自行校验是否一致,
不支持外键:多主不支持,单主模式不存在此问题
最多支持 9 个节点:超过 9 台 server 无法加入组
二、部署 MGR 集群
环境准备
关闭所以服务器防护墙和slinux
systemctl stop firewalld && setenforce 0
数据库服务器规划
序号 |
IP 地址
|
主机名
|
数据库
|
端口号
|
Server ID
|
操作系统
|
1 |
192.168.0.63
|
xuegod63
|
MySQL-5.7.24
|
3306
|
100
|
CentOS 7.6
|
2 | 192.168.0.64 |
xuegod64
|
MySQL-5.7.24
|
3306
|
101
|
CentOS 7.6
|
3 | 192.168.0.65 |
xuegod65
|
MySQL-5.7.24
|
3306
|
102
|
CentOS 7.6
|