MySQL 8.0 高可用之MGR(组复制)介绍

作者公众号,欢迎一起交流。

1 背景

MySQL Group Replication(简称MGR)是MySQL官方于2016年12月12日推出的一款高可用与高扩展的解决方案,它提供了高可用、高扩展、高可靠的MySQL集群服务,具有以下特点:

  • 强一致性:基于原生复制和paxos协议,保证数据传输的一致性和原子性
  • 高容错性:只要大多数节点没有出现故障,集群就可对外提供服务
  • 高扩展性:节点的加入和移除都是自动的,不需要人为过多干预
  • 高灵活性:具有单主模式和多主模式,单主模式在主宕机后自动选主,多主模式多节点写入

实验环境若无特殊说明,MySQL数据库版本均为8.0.27

2 组复制插件架构

MySQL MGR是一个MySQL插件,构建在现有MySQL复制基础架构上。MGR插件包括一组用于Capture、Apply和Lifecycle的API,用于控制插件如何与MySQL服务器进行交互。通过接口可以让信息在服务器和插件之间流转,而且这些接口将MySQL服务器核心从组复制插件隔离出来。从服务器到插件这个方向,会有如服务器启动、服务器恢复、服务器准备接受连接和服务器即将提交事务的事件的通知,而在另一个方向,即插件到服务器这个方向,插件指示服务器执行如提交或终止正在进行的事务,或在Relaylog中对事务排队这样的操作。

再往下一层是一组组件,包括Capture、Applier和Recovery,当通知路由到这些组件时会做出相应的响应。其中,Capture组件负责追踪正在执行事务的上下文信息,Applier组件负责在数据库上执行远程事务,Recover组件管理分布式恢复。

继续往下看,复制协议模块包含复制协议的特定逻辑,它处理冲突检测,接收事务并将其传播到组。

最后两层是组通信系统(GCS)API,以及基于Paxos的组通信引擎的实现。

 3 配置要求和限制

组复制的使用需要满足如下要求:

  • InnoDB存储引擎
  • 每个表必须有显式主键
  • 网络性能要求低延时、高带宽
  • server_id要唯一
  • 开启GTID
  • 事务隔离级别建议使用RC
  • 不建议使用外键级联约束
  • 组成员最大数目为9

4 单主模式部署

4.1 部署环境

Hostname

IP

Server ID

Port

node1

192.168.56.201

201

3306

node2

192.168.56.202

202

3306

node3

192.168.56.203

203

3306

4.2 安装部署

4.2.1 安装MySQL数据库软件

1)分别在节点node1、node2和node3的/etc/hosts文件增加如下配置:

192.168.56.201 node1 node1.com.cn

192.168.56.202 node2 node2.com.cn

192.168.56.203 node3 node3.com.cn

2)分别在节点node1、node2和node3关闭防火墙:

查看防火墙状态:

systemctl status firewalld

关闭防火墙:

systemctl stop firewalld

禁用防火墙启动:

systemctl disable firewalld

3)安装MySQL数据库,参照【MySQL 8.0 数据库安装部署】分别在节点node1、node2和node3安装MySQL数据库软件。

4.2.2 安装主节点node1

1)配置组复制,在原有的配置文件/etc/my.cnf中增加如下配置信息:

disabled_storage_engines = "MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"

gtid_mode = ON

enforce_gtid_consistency = ON

binlog_checksum = CRC32

plugin_load_add = 'group_replication.so'

group_replication_group_name = "0b15d45f-6e29-11ec-99b3-08002790c7d5"

group_replication_start_on_boot = off

group_replication_local_address = "node1:33061"

group_replication_group_seeds = "node1:33061,node2:33061,node3:33061"

group_replication_bootstrap_group = off

2)重启MySQL服务器实例使配置生效:

[root@node1 ~]# service mysql.server restart

Shutting down MySQL.... SUCCESS!

Starting MySQL....... SUCCESS!

3)连接MySQL服务器创建分布式恢复用户并授予权限,若使用Clone操作,需授予对应的权限:

mysql> set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)



mysql> create u
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值