
GreatSQL 8.0.25-16初体验
1. 准备工作
1.1 下载RPM包
1.2 准备YUM源
2. 初始化安装
2.1 各节点安装RPM包
2.2 初始化Primary节点
2.3 初始化Secondary 和 Arbitrator 节点
3、搭建MGR集群
体验GreatSQL 8.0.25-16各个新特性。
在刚刚发布的GreatSQL 8.0.25-16中,主打以下四个新特性:
1.新增仲裁节点(投票节点)角色
2.新增快速单主模式
3.新增MGR网络开销阈值
4.自定义选主模式
本文接下来就和大家体验下这几个新特性。
1. 准备工作
本文采用CentOS 8.4的环境进行演示。
1.1 下载RPM包
这里推荐用RPM方式安装GreatSQL,简单省事。
打开链接 https://gitee.com/GreatSQL/GreatSQL/releases/GreatSQL-8.0.25-16 下载GreatSQL 8.0.25-16安装包,因为是CentOS 8.4 x86_64的环境,所以下载 el8*x86_64 字样的几个PRM包:
greatsql-client-8.0.25-16.1.el8.x86_64.rpm
greatsql-devel-8.0.25-16.1.el8.x86_64.rpm
greatsql-server-8.0.25-16.1.el8.x86_64.rpm
greatsql-shared-8.0.25-16.1.el8.x86_64.rpm
1.2 准备YUM源
开始安装之前,建议先配置好yum源,方便安装一些工具。这里以阿里云的YUM源为例:
2. 初始化安装
本次计划在下面3台服务器上部署MGR集群:
2.1 各节点安装RPM包
在三个节点上分别安装RPM包,首次安装可能会报告一些依赖失败:
根据提示信息,只需用yum安装相应的依赖包即可:
另外,建议自行手动下载jemalloc 5.2.1+版本的安装包,也安装上。下载地址:https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html。
这些依赖包都安装完毕后,再次尝试安装GreatSQL RPM包:
这就安装成功了。
因为是采用RPM方式安装,因此无需创建mysql:mysql这个用户&组。
2.2 初始化Primary节点
首先,在mgr1服务器上执行初始化工作,这个服务器作为Primary节点,有些配置要和其他节点区别开来。
编辑全局配置文件 /etc/my.cnf,可参考 my.cnf for GreatSQL 8.0.25-16 配置文档模板,除了和文件目录、内存相关的选项自行调整外,只需将下面这个选项值从OFF改成ON,表示这是Primary节点角色:
新建数据库主目录 /data/GreatSQL (参考 /etc/my.cnf 中 datadir 选项值设置),并修改其用户属主:
再执行下面的命令进行初始化:
这就完成安装和实例初始化工作了。
首次初始化时,MySQL会为root账户自动生成随机密码,查看error log即可:
复制最后那段密码串,准备登入MySQL:
这就在Primary节点上启动GreatSQL服务并完成数据库实例的初始化。
2.3 初始化Secondary 和 Arbitrator 节点
参考 2.2 初始化Primary节点 做法,继续对 Secondary 和 Arbitrator 节点进行初始化。
对于 Secondary 节点,编辑全局配置文件 /etc/my.cnf,基本上可直接参考 my.cnf for GreatSQL 8.0.25-16(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.25-16) 配置文档模板,修改文件目录、内存相关的选项,其余不需要调整。
对于 Arbitrator 节点也类似,除了修改文件目录、内存相关选项外,只需修改下面这行选项值即可:
修改完 /etc/my.cnf 后,同样执行 systemctl start mysqld,即可完成 GreatSQL 实例初始化。
3、搭建MGR集群
强烈建议用mysql shell来构建部署MGR集群。
由于在GreatSQL 8.0.25-16中增加了Arbitrator角色,官方的MySQL Shell是无法识别支持的,需要用我们提供的MySQL Shell版本。下载链接 https://gitee.com/GreatSQL/GreatSQL/releases/GreatSQL-8.0.25-16,在本文的环境中,选择 greatsql-shell-8.0.25-16-Linux-glibc2.28-x86_64.tar.xz 这个包下载。
运行 MySQL Shell 8.0.25-16 需要依赖Python 3.8版本的开发包,因此也要先安装:
而后按照文档 xx 中的步骤构建MGR集群即可,此处不再赘述。
构建完成后,在mysql shell里就能看到各节点的状态,例如:
可以看到,mgr3节点的角色为 ARBITRATOR,在这个节点上是看不到用户数据以及新增binlog的:
而在其他节点上是正常的:
这就是仲裁节点的作用了,不存储用户数据和binlog,仅参与MGR状态仲裁/投票。
如果有些事务在MGR层的耗时超过阈值,则会记录类似下面的日志:
表示当时这个事务在MGR层的网络开销耗时130808微秒(130.808毫秒),再去查看那个时段的网络监控,分析网络延迟较大的原因。
另外两个新特性 快速单主模式(single-primary-fast-mode)以及 自定义选主,我们留到以后再介绍。
