
4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR
• 1. 安装准备
• 2. 利用MySQL Shell构建MGR集群
• 3. MySQL Shell接管现存的MGR集群
• 4. 小结
• 参考资料、文档
• 免责声明
本文介绍如何利用MySQL Shell + GreatSQL 8.0.25构建一个三节点的MGR集群。
MySQL Shell是一个客户端工具,可用于方便管理和操作MySQL,支持SQL、JavaScript、Python等多种语言,也包括完善的API。MySQL Shell支持文档型和关系型数据库模式,通过X DevAPI可以管理文档型数据,通过AdminAPI可以管理InnoDB Cluster、InnoDB ClusterSet及InnoDB ReplicaSet等。
1. 安装准备
准备好下面三台服务器:
确保三个节点间的网络是可以互通的,并且没有针对3306和33061端口的防火墙拦截规则。
利用yum安装MySQL Shell,版本选择和GreatSQL相同的8.0.25:
假定已经参考前文 3. 安装部署MGR集群 做好MySQL Server的初始化并启动三个实例。
接下来直接利用MySQL Shell部署MGR。
2. 利用MySQL Shell构建MGR集群
利用MySQL Shell构建MGR集群比较简单,主要有几个步骤:
1.检查实例是否满足条件。
2.创建并初始化一个集群。
3.逐个添加实例。
首先,用管理员账号 root 连接到第一个节点:
执行命令 \status 查看当前节点的状态,确认连接正常可用。
执行 dba.configureInstance() 命令开始检查当前实例是否满足安装MGR集群的条件,如果不满足可以直接配置成为MGR集群的一个节点:
完成检查并创建完新用户后,退出当前的管理员账户,并用新创建的MGR专用账户登入,准备初始化创建一个新集群:
这就完成了MGR集群的初始化并加入第一个节点(引导节点)。
接下来,用同样方法先用 root 账号分别登入到另外两个节点,完成节点的检查并创建最小权限级别用户(此过程略过。。。注意各节点上创建的用户名、密码都要一致),之后回到第一个节点,执行 addInstance() 添加另外两个节点。
用同样的方法,将 172.16.16.12:3306 实例也加入到集群中。
现在,一个有这三节点的MGR集群已经部署完毕,来确认下:
或者执行 c.status() 可以打印出集群更多的信息。
至此,利用MySQL Shell构建一个三节点的MGR集群做好了,可以尝试向 Primary 节点写入数据观察测试。
3. MySQL Shell接管现存的MGR集群
对于已经在运行中的MGR集群,也是可以用MySQL Shell接管的。只需要在调用 createCluster() 函数时,加上 adoptFromGR:true 选项即可。实际上不加这个选项的话,MySQL Shell也会自动检测到该MGR集群已存在,并询问是否要接管。
在这里简单演示下:
可以看到,会有提示信息询问是否要接管。
如果加上 adoptFromGr:true 选项,则会直接创建集群,不再询问:
如果是MGR集群的metadata发生变化,这时候无论调用 dba.getCluster() 还是 dba.createCluster 都可能会报告类似下面的错误:
这种情况下,可以调用 dba.dropMetadataSchema() 函数删除元数据,再调用 dba.createCluster() 接管集群:
这样就可以接管了。
4. 小结
本文主要介绍了如何利用MySQL Shell构建一个三节点的MGR集群,以及如何用MySQL Shell接管现有集群,处理元数据冲突的问题。相对于手工方式搭建MGR集群,用MySQL Shell操作会方便很多,推荐使用。
参考资料、文档
MySQL 8.0 Reference Manual
https://dev.mysql.com/doc/refman/8.0/en/group-replication.html
数据库内核开发 - 温正湖
https://www.zhihu.com/column/c_206071340
Group Replication原理 - 宋利兵
https://mp.weixin.qq.com/s/LFJtdpISVi45qv9Wksv19Q
深入浅出MGR专栏
01.MGR简介 | 深入浅出MGR
02.组复制技术架构 | 深入浅出MGR
03.安装部署MGR集群 | 深入浅出MGR
免责声明
因个人水平有限,专栏中难免存在错漏之处,请勿直接复制文档中的命令、方法直接应用于线上生产环境。请读者们务必先充分理解并在测试环境验证通过后方可正式实施,避免造成生产环境的破坏或损害。
Enjoy GreatSQL :)
文章转载自公众号:GreatSQL社区
