MySQL Group Replication组复制单主模式部署方法

MySQL Group Replication(MGR)是自MySQL 5.7.17版本引入的一个服务器插件,可用于创建高可用、可扩展、容错的复制拓扑结构。

组复制可以在单主模式下操作,其中只有一个服务器接受更新,这个单主是系统自动选举出来的。对于高级用户,也可以部署为多主模式,其中所有服务器都可以接受更新。

MGR对属于同一组的服务器自动进行协调,对于要提交的事务,组成员必须就全局事务序列中给定事务的顺序达成一致。提交或回滚事务由每个服务器单独完成,但所有服务器都必须做出相同的决定。如果存在网络分区,导致成员无法达成事先定义的分割策略,则在解决此问题之前系统不会继续进行,这是一种内置的自动裂脑保护机制。

MGR由组通信系统(Group Communication System,GCS)协议支持,该系统提供故障检测机制、组成员服务以及安全且有序的消息传递。所有这些属性都是创建系统的关键,可确保在服务器组中一致地复制数据。该技术的核心是Paxos算法的实现,它充当组通信引擎。

使用场景

  1. 弹性复制。服务器的数量能够动态增加或减少,并且尽可能减小副作用,例如云数据库服务。
  2. 高可用分片。分片是实现写扩展的流行方法,MGR实现高可用分片,其中每个分片映射到复制组。
  3. 主从复制的替代方案。某些情况下,使用单个主服务器会使其成为热点,写入整组更具可扩展性。

基本条件

  1. 必须使用InnoDB存储引擎。
  2. 每个数据表都必须有主键。

系统环境

本人测试环境的操作系统采用CentOS7.9,mysql版本为8.0.23,对应的mysql-shell和mysql-router均为8.0.23。

主机名 主机IP 应用集
mysql-cluster-router-1 10.10.200.201 mysql, mysql-router, mysql-shell
mysql-cluster-router-2 10.10.200.202 mysql, mysql-router
mysql-cluster-router-3 10.10.200.203 mysql, mysql-router

建议mysql-server和mysql-router部署在一起,mysql-shell可以创建新服务器单独部署。

设置防火墙

安装MySQL8

配置yum源(Redhat7/CentOS7),修改/etc/yum.repos.d/mysql-community.repo

安装MySQL8

离线安装方法可参照MySQL5.7升级至MySQL8.0详细步骤中的相关内容。

配置MySQL8

修改配置文件/etc/my.cnf

初始化mysql:

配置MySQL复制账号:

安装MySQL-Shell

访问MySQL-Shell下载页面获取对应版本的mysql-shell,以8.0.23版本为例:

配置集群

在任意一台安装了mysql-shell的主机上执行集群配置操作即可。

节点配置状态正常,其他两个节点也是ok状态才行

成功配置节点,其他两个节点相同

成功将节点加入集群,其他两个节点相同

执行以下SQL语句验证集群:

集群管理常用命令

销毁集群

执行以下MySQL-shell命令解散集群:

执行以下SQL语句清理数据:

安装MySQL-Router

访问MySQL-Router下载页面获取对应版本的mysql-router,以8.0.23版本为例:

安装完成后,可以通过以下命令初始化mysql-router:

不过,我个人还是更习惯手动修改配置文件,修改配置/etc/mysqlrouter/mysqlrouter.conf

建议取消以mysqlrouter为启动用户,修改配置/usr/lib/systemd/system/mysqlrouter.service

注意配置防火墙(见本文开篇),完成所有动作后启动服务:

原创文章禁止转载:技术学堂 » MySQL Group Replication组复制单主模式部署方法

精彩评论

8+7=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏