实战篇:一步步教你搭建 GBase 8s SSC 共享集群
目前很多国产数据库都在适配 Oracle RAC 架构,之前记录过金仓 KES RAC崖山 YAC的部署过程:1、YashanDB 23.2 YAC 共享集群部署实战:轻松上手!2、技术干货 | KingbaseES RAC 集群安装指南本文主要介绍 GBase 8s 共享存储高可用集群(SSC)的安装部署流程。GBase 8s 共享存储集群 SSC(Shared Storage Cluster)
大家好,这里是公众号 DBA学习之路,致力于分享数据库领域相关知识。
社群交流
为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
- Oracle 数据库交流群
- 国产数据库交流群
- Linux 技术交流群
- ChatGPT 4o 免费体验群
需要进群可以添加号主微信:Lucifer-0622,备注对应的群名即可。
前言
目前很多国产数据库都在适配 Oracle RAC 架构,之前记录过金仓 KES RAC、崖山 YAC 的部署过程:
1、YashanDB 23.2 YAC 共享集群部署实战:轻松上手!
2、技术干货 | KingbaseES RAC 集群安装指南
本文主要介绍 GBase 8s 共享存储高可用集群(SSC)的安装部署流程。
SSC 集群
上周写过一篇文章:Oracle 替代方案?GBase 8s 集群架构一览,详细介绍了 GBase 8s 的几种集群架构,感兴趣的朋友可以前往了解。
在正式安装之前,先简单介绍一下 SSC 集群,以便大家对其有一个清晰的初步概念。
SSC 简介
GBase 8s 共享存储集群 SSC(Shared Storage Cluster) 采用共享磁盘方式实现数据库高可用、高扩展、高性能。也就是说,SSC 集群只存储一份数据,集群中的多个数据库实例同时提供一个服务,有效利用硬件资源,避免数据重复存储。
SSC 通过配置为主节点写,辅节点读的方式,可以有效缓解写冲突,可实现更大的集群规模,在写少读多的应用场景,性能更好。
SSC 集群有以下特性:
- 高可用性:节点间关系对等,备节点下线对集群无影响,主节点下线故障自动切换到备节点,切换过程和选主过程由连接管理器(CM)实现;
- 扩展性:可以在一定范围内随业务需要而扩展;
- 高性能:集群中任何节点都能响应用户请求,能够更高的支持高并发业务,辅节点配置为可写时,自动将写请求路由到主节点执行。
- 部署简单:可以非常容易地配置多个 SSC,支持负载均衡。
- 应用无感知。
SSC 原理
SSC 集群状态一致性通过 LSN 同步 + 逻辑日志重放实现。
原理如下图所示:
简单来说就是以下五个步骤:
- SSC 主节点接收业务请求,写逻辑日志。
- 主节点将逻辑日志中与操作一一对应的 LSN 号发给各个辅节点。
- 辅节点接收到 LSN 号,从共享存储读取相应逻辑日志到缓冲区。
- 辅节点对读取到逻辑日志缓冲区的逻辑日志进行重放,从而达到主辅节点数据状态一致,辅节点缓冲区数据的更改并不更新到磁盘。
- 最后辅节点将 ACK LSN 发送回主节点。
环境准备
本文演示环境为银河麒麟 V10,主机配置为单节点 8G 内存,100G 硬盘,双网卡(物理+心跳):
主机名 | 服务IP | 心跳IP | 版本 | CPU | 内存 | 系统盘 | 集群临时空间盘 | 共享存储盘 |
---|---|---|---|---|---|---|---|---|
ssc01 | 192.168.6.70 | 10.10.10.1 | 银河麒麟 Kylin V10 | x86 | 8G | 100G | 20G | 20G |
ssc02 | 192.168.6.71 | 10.10.10.2 | 银河麒麟 Kylin V10 | x86 | 8G | 100G | 20G | 20G |
主机配置规划
GBase 8s 共享存储集群支持安装部署在 x86、飞腾、鲲鹏、龙芯等多种平台上,支持的操作系统包括 RedHat6.x、CentOS6.x 等主流 OS,并包括 UOS、麒麟、凝思磐石等国产 OS。
GBase 8s 共享存储集群 SSC 最少 2 个节点,最多 128 节点,各节点关系对等,以下为单节点推荐配置:
GBase 8s 共享集群每台服务器需要配置两个物理 IP(一个服务 IP,一个心跳 IP),网络防火墙开放数据库集群节点之间及应用与数据库节点之间端口 9088、9099、9200、9300 长连接。
生产库建议:数据库网络要求千兆以上网卡,服务网络应当使用不少于两条物理线路的双网卡绑定,数据库集群要求配置独立于服务器网络的专用心跳网络(可直连),同样使用双网卡绑定。
共享存储规划
共享磁盘集群(SSC)的磁盘共享需要通过存储设备同时挂载到主节点和辅节点来实现。在主节点上进行分区并绑定裸设备后,辅节点需同步主节点的分区信息并完成裸设备的绑定,从而实现磁盘共享。因此,在共享磁盘集群中,主辅节点的磁盘无需格式化文件系统,也无需挂载文件系统。
集群临时空间及 page 空间不能使用裸设备,集群每个节点需单独挂载一块数据盘,用于存储集群临时空间,共享磁盘链接等,大小不小于单个临时空间大小的 2 倍。该盘可以是共享磁盘的一个分区,或使用单独一块磁盘挂载。
安装包下载
GBase 8s SSC 需要在主节点和辅节点上都安装 GBase 8s 数据库,安装包可以直接从 GBase 官网 下载:
Gbase 8s V8.8 x86 的数据库安装介质下载地址:GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
下载完成后的安装包大概 400 多 M,查看 md5 值:
╭─lucifer@MacBookPro ~/Downloads/GBase 8s SSC 共享集群
╰─$ md5sum GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
97555c974bfe5bb0904ef87c3733be5f GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
解压之后有以下文件:
330M GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
177M clientsdk_3.5.1_3X2_1_x86_64.tar
将解压后的这两个文件上传到所有主机节点上即可。
安装前准备部分很多都可以参考我之前写的单机安装教程:
安装前准备
📢 注意: 本章节的所有操作需要在所有节点上执行,以下将以节点一为例进行演示!
配置 hosts 文件
数据库日志归档和备份文件的命名通常依赖于系统主机名称。若数据库主机的命名尚无明确规范,可参考以下规则进行命名:
- 数据库服务器名称:
dbhost[xx]
- 集群心跳服务器名称:
dbhahost[xx]
其中,xx
为两位数字序号,例如:dbhost01
、dbhost02
,此命名规则有助于提升主机管理的规范性和识别效率。
我的主机名配置如下:
- 主机名:
ssc01
、ssc02
- 集群心跳名:
sscha01
、sscha02
在 hosts
文件中进行配置:
## 以节点一为例
[root@ssc01 ~]# cat<<-EOF>>/etc/hosts
192.168.6.70 ssc01
192.168.6.71 ssc02
10.10.10.1 sscha01
10.10.10.2 sscha02
EOF
查看配置后的内容:
[root@ssc01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.70 ssc01
192.168.6.71 ssc02
10.10.10.1 sscha01
10.10.10.2 sscha02
主辅节点都需完成上述操作。
优化 DNS 配置
配置系统优先从 /etc/hosts 文件中查找主机名解析,避免因 DNS 查询引起的数据库连接缓慢问题,修改后,系统会按照以下顺序解析主机名。
- 首先检查 /etc/hosts 文件。
- 如果未找到匹配项,才会尝试其他解析方式。
修改 /etc/nsswitch.conf
文件优先解析方式:
## 以节点一为例
## 修改前配置
[root@ssc01 ~]# grep hosts: /etc/nsswitch.conf
hosts: files dns myhostname
## 修改 nsswitch.conf 文件
[root@ssc01 ~]# sed -i "s#^hosts.*#hosts: files#g" /etc/nsswitch.conf
## 修改后配置
[root@ssc01 ~]# grep hosts: /etc/nsswitch.conf
hosts: files
通过上述优化,能够有效提高主机名解析效率,减少因网络延迟导致的数据库连接问题。
配置防火墙
为确保数据库服务的正常运行,需要根据实际需求关闭系统防火墙或放开相关端口(如 9088、9099、9200、9300)。这里提供两种可选方案。
1、关闭系统防火墙:
## 以节点一为例
[root@ssc01 ~]# systemctl stop firewalld
[root@ssc01 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
适用场景: 网络环境安全可控,不依赖防火墙规则。
2、放开必要端口
如系统要求不可关闭防火墙,执行以下命令放开相关端口,单机放开 9088
,集群放开 9088、9099、9200、9300
:
## root 用户下执行,本次不执行
firewall-cmd --permanent --zone=public --add-port=9088/tcp
firewall-cmd --permanent --zone=public --add-port=9099/tcp
firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
firewall-cmd --reload
适用场景: 防火墙必须启用,需放行数据库相关服务端口。
关闭 SELinux
为防止 SELinux 引发不必要的权限问题或影响服务正常运行,建议将其关闭:
## 以节点一为例
## 临时关闭 SELinux
[root@ssc01 ~]# setenforce 0
setenforce: SELinux is disabled
## 永久关闭 SELinux
[root@ssc01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
## 检查修改后的配置
[root@ssc01 ~]# cat /etc/selinux/config | grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=disabled
永久关闭需要重启主机后生效。
关闭 RemoveIPC
在部分 Linux 7.x 及以上版本中,RemoveIPC 默认配置为 yes。该配置会导致用户注销后其信号量和消息队列被删除,可能引发数据库宕机等问题。
建议关闭 RemoveIPC:
## 以节点一为例
# 修改配置文件
[root@ssc01 ~]# sed -i "s/^#RemoveIPC.*/RemoveIPC=no/g" /etc/systemd/logind.conf
# 重启服务
[root@ssc01 ~]# systemctl daemon-reload
[root@ssc01 ~]# systemctl restart systemd-logind
强烈建议在数据库主机上进行此配置,尤其是生产环境中。
创建组和用户
在安装 GBase 8s 数据库前,需提前创建 gbasedbt 用户,并取消密码复杂性要求(如不需要复杂密码)。
修改 PAM 配置文件,取消密码复杂性限制:
## 以节点一为例
[root@ssc01 ~]# sed -i 's/^password\+[[:space:]]\+requisite[[:space:]]\+pam_pwquality.so/#&/g' /etc/pam.d/system-auth
[root@ssc01 ~]# sed -i 's/use_authtok$//' /etc/pam.d/system-auth
创建 gbasedbt 用户和组:
## 以节点一为例
[root@ssc01 ~]# groupadd gbasedbt -g 500
[root@ssc01 ~]# useradd gbasedbt -u 500 -g gbasedbt -m -d /home/gbasedbt
## 设置 gbasedbt 用户密码为 gbasedbt
[root@ssc01 ~]# echo "gbasedbt:gbasedbt" | chpasswd
## 检查是否创建成功
[root@ssc01 ~]# cat /etc/passwd | grep gbasedbt
gbasedbt:x:500:500::/home/gbasedbt:/bin/bash
在后续共享存储配置时也需要 gbasedbt 用户以及组的授权,所以必须提前创建!
创建安装目录及授权
在安装 GBase 8s 数据库前,需要提前创建相关目录,并正确设置权限,确保 gbasedbt 用户对安装和数据目录具有完全的读写权限。
## 以节点一为例
[root@ssc01 ~]# mkdir -p /opt/gbase /data/gbase
[root@ssc01 ~]# chown -R gbasedbt:gbasedbt /opt/gbase /data/gbase
条件允许的话,建议为 /data/gbase
单独挂载磁盘分区,提升数据读写性能。
资源配置
为确保 GBase 8s 数据库能够高效运行,建议调整系统的资源限制参数到推荐值或更高。
修改 /etc/security/limits.conf
文件为 gbasedbt 用户配置 nofile(最大打开文件数)和 nproc(最大进程数):
## 以节点一为例
[root@ssc01 ~]# cat<<-EOF>>/etc/security/limits.conf
gbasedbt soft nofile 1048576
gbasedbt hard nofile 1048576
gbasedbt soft nproc 1048576
gbasedbt hard nproc 1048576
EOF
在某些系统中,nofile 和 nproc 的限制可能受 Systemd 配置影响。如果发现设置未生效,可按以下步骤调整:
## 以节点一为例
[root@ssc01 ~]# sed -i "s/#DefaultLimitNOFILE.*/DefaultLimitNOFILE=1048576/g" /etc/systemd/system.conf
[root@ssc01 ~]# sed -i "s/#DefaultLimitNPROC.*/DefaultLimitNPROC=65536/g" /etc/systemd/system.conf
通过以上优化,可以为数据库运行提供充足的资源保障,从而提升系统稳定性和性能。
安装依赖包
检查系统中是否已安装所需依赖包:
## 以节点一为例
[root@ssc01 ~]# rpm -q unzip glibc-devel ncurses ncurses-libs libnsl libaio libgcc libstdc++ pam
unzip-6.0-48.ky10.x86_64
glibc-devel-2.28-98.p02.ky10.x86_64
ncurses-6.2-4.p01.ky10.x86_64
ncurses-libs-6.2-4.p01.ky10.x86_64
未安装软件包 libnsl
libaio-0.3.112-5.p01.ky10.x86_64
libgcc-7.3.0-2020033101.58.p01.ky10.x86_64
libstdc++-7.3.0-2020033101.58.p01.ky10.x86_64
pam-1.5.2-6.p03.se.02.ky10.x86_64
如检查结果显示缺少依赖包(例如 libnsl
),需要手工安装依赖包,就需要配置本地软件源,配置 Linux 软件源可以参考为之前写的文章:
可通过以下命令安装所需依赖:
## 以节点一为例
## 如依赖包已安装,可跳过此步骤
[root@ssc01 ~]# yum -y install unzip glibc-devel ncurses ncurses-libs libnsl libaio libgcc libstdc++ pam
手工执行后依然提示 libnsl
包未安装,在麒麟 V10 系统中,libnsl
需要单独下载安装。
libnsl-2.28-98.p02.ky10.x86_64.rpm 下载: https://update.cs2c.com.cn/NS/V10/V10SP3-2403/os/adv/lic/base/x86_64/Packages/libnsl-2.28-98.p02.ky10.x86_64.rpm
下载完成后,使用以下命令安装:
## 以节点一为例
[root@ssc01 ~]# rpm -ivh libnsl-2.28-98.p02.ky10.x86_64.rpm
警告:libnsl-2.28-98.p02.ky10.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 7a486d9f: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:libnsl-2.28-98.p02.ky10 ################################# [100%]
如果未安装 libnsl
,后续在 GBase 8s 安装时会出现以下错误:
libjvm.so preloadLibrary(/tmp/install.dir.155359/Linux/resource/jre/jre/lib/amd64/libjava.so): libnsl.so.1: 无法打开共享对象文件: 没有那个文件或目录
Could not create the Java virtual machine.
因此,务必确保安装 libnsl
。
关闭透明大页
建议关闭透明大页,部分操作系统默认开启了透明大页选项,可执行以下命令确认:
## 以节点一为例
[root@ssc01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
显示结果:
- [always] madvise never:透明大页已开启。
- always [madvise] never:透明大页已开启。
- always madvise [never]:透明大页已关闭。
修改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never:
## 以节点一为例
[root@ssc01 ~]# sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub
通过以下指令检查当前系统的引导类型:
## 以节点一为例
[root@ssc01 ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
BIOS
两种引导的启动文件路径分别为:
- BIOS:/boot/grub2/grub.cfg
- UEFI:/boot/efi/EFI/<distro_name>/grub.cfg,distro_name 为系统发行版本名称,例如 ubuntu、fedora、debian 等。
执行 grub2–mkconfig 指令重新配置 grub.cfg:
## 以节点一为例
## BIOS 引导
[root@ssc01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.19.90-89.11.v2401.ky10.x86_64
Found initrd image: /boot/initramfs-4.19.90-89.11.v2401.ky10.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3a1c3f06e89644e5b9b560f2ba64fd98
Found initrd image: /boot/initramfs-0-rescue-3a1c3f06e89644e5b9b560f2ba64fd98.img
done
## UEFI 引导
# grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
需要重启主机生效。
挂载集群临时空间
所有节点都需要挂载集群临时空间,使用 root 用户挂载,以主节点为例:
## 以节点一为例
# 挂载集群临时空间 /data
[root@ssc01 ~]# mkfs.xfs /dev/sdb
[root@ssc01 ~]# blkid /dev/sdb
/dev/sdb: UUID="dd7f3d82-7d3a-40fc-80da-1a27d5989ea3" BLOCK_SIZE="512" TYPE="xfs"
[root@ssc01 ~]# mkdir -p /data
[root@ssc01 ~]# echo "UUID=dd7f3d82-7d3a-40fc-80da-1a27d5989ea3 /data xfs defaults 0 0">>/etc/fstab
[root@ssc01 ~]# mount -a
[root@ssc01 ~]# mkdir -p /data/gbase
[root@ssc01 ~]# chown -R gbasedbt:gbasedbt /data/
[root@ssc01 ~]# df -h | grep /data
/dev/sdb 20G 175M 20G 1% /data
主辅节点都需完成上述操作。
挂载共享盘
部署 SSC 集群需要挂载共享盘,挂载共享盘的方式有很多,可以使用虚拟机创建共享盘的方式,也可以通过 iscsi 共享存储作为数据库存储文件系统,可自行选择。
本文使用 Starwind 配置 iscsi 共享盘,可以参考为之前写的文章:
1、Linux 客户端安装 iscsi 软件
## 以节点一为例
## 如果遇到报错 -bash: iscsiadm:未找到命令,就需要安装 iscsi 软件
[root@ssc01 ~]# yum install -y iscsi-initiator-utils*
[root@ssc01 ~]# systemctl start iscsid.service
[root@ssc01 ~]# systemctl enable iscsid.service
2、搜索服务端 iscsi target
## 以节点一为例
## 192.168.6.43 为 iscsi 服务端 IP 地址
[root@ssc01 ~]# iscsiadm -m discovery -t st -p 192.168.6.43
192.168.6.43:3260,-1 iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s
3、连接服务端 iscsi 共享存储
## 以节点一为例
## iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s 为上一步搜索出的 target 名称
[root@ssc01 ~]# iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s -p 192.168.6.43 -l
Logging in to [iface: default, target: iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s, portal: 192.168.6.43,3260]
Login to [iface: default, target: iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s, portal: 192.168.6.43,3260] successful.
4、配置开机自动挂载
## 以节点一为例
[root@ssc01 ~]# iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:lpc-matebook-gbase8s -p 192.168.6.43 --op update -n node.startup -v automatic
5、查看挂载成功的共享盘
## 以节点一为例,sdb 为挂载的共享盘
[root@ssc01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─klas-root 253:0 0 91.1G 0 lvm /
└─klas-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 50G 0 disk
sr0 11:0 1 4.4G 0 rom /mnt
在挂载共享盘成功之后,我们已经验证主辅节点都已经显示 sdc 盘。接下来我们要对这个 sdc 共享盘进行分区、绑定裸设备、创建设备连接等操作。
本次演示基于个人主机环境,所以只创建一个 50GB 的共享盘。实际生产环境中,应根据具体项目需求来规划和创建共享盘的大小,以满足业务需求和性能要求。
多路径配置
生产环境的共享盘一般都是多路径,所以建议可以使用 multipath 进行绑盘,便于管理,也可以避免主机重启导致磁盘盘符错乱的问题:
## 以节点一为例
[root@ssc01 ~]# yum install -y device-mapper-multipath
[root@ssc01 ~]# mpathconf --enable --with_multipathd y
## 配置开机自启
[root@ssc01 ~]# systemctl enable multipathd.service
## 配置多路径磁盘
[root@ssc01 ~]# cat <<EOF >/etc/multipath.conf
defaults {
user_friendly_names yes
}
blacklist {
devnode "^sda"
}
multipaths {
multipath {
wwid "$(/usr/lib/udev/scsi_id -g -u /dev/sdc)"
alias gbase8sdisk
}
}
EOF
## 重启生效配置
[root@ssc01 ~]# systemctl restart multipathd.service
## 查看多路径设备
[root@ssc01 ~]# multipath -ll
gbase8sdisk (2ceb8ce845960bfe6) dm-3 ROCKET,IMAGEFILE
size=50G features='2 queue_mode mq' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
`- 5:0:0:0 sde 8:64 active ready running
主辅节点都需完成上述操作。
共享盘分区
磁盘分区通常有以下两种方式:
- MBR 分区:仅支持 2TB 以下的磁盘,通常使用
fdisk
命令进行分区。 - GPT 分区:适用于 2TB 以上的磁盘,推荐使用
parted
命令进行分区。需要注意的是,parted
命令的操作会实时生效,无需额外保存。
本文为了更加直观,选择 GPT 分区方式 并使用 parted
命令进行分区。需要注意:
- 使用
parted
时,分区大小可能比数据库计算的实际需求略小,因此建议为每个分区上浮约 10% 的空间。 - 如果上浮后的差额不足 1GB,则按 1GB 计算。
- 每个分区对应一个数据库的
chunk
,便于管理。
使用 parted
创建分区的基本格式如下:
# 创建 GPT 分区表
parted /dev/<磁盘名称> mklabel gpt
# 创建分区
parted /dev/<磁盘名称> mkpart <分区名称> 起始 结束
参数说明:
- 磁盘名称:共享盘设备名称(如
/dev/sdb
)。 - 分区名称:数据库中每个
chunk
的名称。 - 起始和结束位置:分区在磁盘上的位置,以 GB 为单位。
以 50GB 的共享盘为例,根据数据库的常见需求,建议划分以下几种分区:
- rootdbs:根数据库表空间,存储数据库服务器关键信息(5GB)。
- plogdbs:物理日志表空间,用于保存物理日志信息(5GB)。
- llogdbs:逻辑日志表空间,用于保存逻辑日志信息(5GB)。
- tempdbs:临时表空间,保存临时数据(15GB,分为 3 个分区,每个 5GB)。
- datadbs:用户数据表空间,用于存储用户定义的数据表(15GB,分为 3 个分区,每个 5GB)。
- sbspace:智能大对象表空间,用于存储 Blob 和 Clob(5GB)。
- comnspace:磁盘心跳空间(ssc_alt_comm),共享存储集群需要在共享存储上创建一个用于通信的 dbspace(5GB)。
在主节点的 root
用户下执行以下分区命令(数据文件分区命名规则:${dbspacename}chk[xxx]
):
## 以节点一为例
# 创建 GPT 分区表
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mklabel gpt -s
# rootchk 是 rootdbs 的 chunk 名,大小是 5G,位置是 0G 起步 5G 结束
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart rootdbschk001 0 5G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart plogdbschk001 5G 10G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart llogdbschk001 10G 15G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart tempdbschk001 15G 20G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart tempdbschk002 20G 25G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart tempdbschk003 25G 30G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart datadbschk001 30G 35G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart datadbschk002 35G 40G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart commdbschk001 40G 45G -s
[root@ssc01 ~]# parted /dev/mapper/gbase8sdisk mkpart sbspacechk001 45G 50G -s
执行分区后,可通过以下命令确认分区是否成功:
[root@ssc01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─klas-root 253:0 0 91.1G 0 lvm /
└─klas-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 50G 0 disk
└─gbase8sdisk 253:8 0 50G 0 mpath
├─gbase8sdisk1 253:9 0 4.7G 0 part
├─gbase8sdisk2 253:10 0 4.7G 0 part
├─gbase8sdisk3 253:11 0 4.7G 0 part
├─gbase8sdisk4 253:12 0 4.7G 0 part
├─gbase8sdisk5 253:13 0 4.7G 0 part
├─gbase8sdisk6 253:14 0 4.7G 0 part
├─gbase8sdisk7 253:15 0 4.7G 0 part
├─gbase8sdisk8 253:16 0 4.7G 0 part
├─gbase8sdisk9 253:17 0 4.7G 0 part
└─gbase8sdisk10 253:18 0 4.7G 0 part
sr0 11:0 1 4.4G 0 rom /mnt
检查结果应显示 gbase8sdisk
磁盘已分为 10 个分区,分别为 gbase8sdisk1
至 gbase8sdisk10
。
在辅节点上执行以下命令刷新分区表:
## 辅节点执行
[root@ssc02 soft]# partprobe /dev/mapper/gbase8sdisk
[root@ssc02 soft]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─klas-root 253:0 0 91.1G 0 lvm /
└─klas-swap 253:1 0 7.9G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 50G 0 disk
└─gbase8sdisk 253:8 0 50G 0 mpath
├─gbase8sdisk1 253:9 0 4.7G 0 part
├─gbase8sdisk2 253:10 0 4.7G 0 part
├─gbase8sdisk3 253:11 0 4.7G 0 part
├─gbase8sdisk4 253:12 0 4.7G 0 part
├─gbase8sdisk5 253:13 0 4.7G 0 part
├─gbase8sdisk6 253:14 0 4.7G 0 part
├─gbase8sdisk7 253:15 0 4.7G 0 part
├─gbase8sdisk8 253:16 0 4.7G 0 part
├─gbase8sdisk9 253:17 0 4.7G 0 part
└─gbase8sdisk10 253:18 0 4.7G 0 part
sr0 11:0 1 4.4G 0 rom /mnt
至此,共享盘的分区已完成并同步到辅节点。
绑定裸设备
接下来需要绑定裸设备,绑定裸设备也可以采用不同的方式,在此,为了方便演示,我们采用修改配置文件的方式。我们要修改 /etc/udev/rules.d/ 目录下的 60-raw.rules 文件。
我们可以看到修改配置文件的命令格式,根据文件描述的格式,和我们创建的分区情况写出如下命令:
## 先检查下 raw 命令的位置
## 以节点一为例
[root@ssc01 ~]# type raw
raw 是 /usr/bin/raw
## 配置 udev 规则 60-raw.rules
[root@ssc01 ~]# cat<<-EOF>/etc/udev/rules.d/60-raw.rules
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk1", RUN+="/usr/bin/raw /dev/raw/raw1 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk2", RUN+="/usr/bin/raw /dev/raw/raw2 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk3", RUN+="/usr/bin/raw /dev/raw/raw3 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk4", RUN+="/usr/bin/raw /dev/raw/raw4 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk5", RUN+="/usr/bin/raw /dev/raw/raw5 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk6", RUN+="/usr/bin/raw /dev/raw/raw6 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk7", RUN+="/usr/bin/raw /dev/raw/raw7 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk8", RUN+="/usr/bin/raw /dev/raw/raw8 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk9", RUN+="/usr/bin/raw /dev/raw/raw9 /dev/mapper/%E{DM_NAME}"
KERNEL=="dm-*", SUBSYSTEM=="block", ENV{DM_NAME}=="gbase8sdisk10", RUN+="/usr/bin/raw /dev/raw/raw10 /dev/mapper/%E{DM_NAME}"
KERNEL=="raw[1-9]*", OWNER="gbasedbt", GROUP="gbasedbt", MODE="0660"
EOF
配置文件修改完成之后,我们需要重新加载配置文件和磁盘,并 raw -qa
来查看是否成功绑定裸设备:
## 以节点一为例
# 重新加载配置文件
[root@ssc01 ~]# udevadm control --reload-rules
[root@ssc01 ~]# udevadm trigger --type=devices --action=change
# 重新加载磁盘
[root@ssc01 ~]# partprobe /dev/mapper/gbase8sdisk
# 查看是否绑定成功
[root@ssc01 ~]# raw -qa
[root@ssc01 rules.d]# raw -qa
/dev/raw/raw1:绑定到主设备号 253, 次设备号 9
/dev/raw/raw2:绑定到主设备号 253, 次设备号 10
/dev/raw/raw3:绑定到主设备号 253, 次设备号 11
/dev/raw/raw4:绑定到主设备号 253, 次设备号 12
/dev/raw/raw5:绑定到主设备号 253, 次设备号 13
/dev/raw/raw6:绑定到主设备号 253, 次设备号 14
/dev/raw/raw7:绑定到主设备号 253, 次设备号 15
/dev/raw/raw8:绑定到主设备号 253, 次设备号 16
/dev/raw/raw9:绑定到主设备号 253, 次设备号 17
/dev/raw/raw10:绑定到主设备号 253, 次设备号 18
辅节点也需要完成上述操作。
创建裸设备链接
所有节点都需要创建链接到裸设备的软连接,使用 gbasedbt 用户执行以下命令:
## 以节点一为例
[root@ssc01 ~]# su - gbasedbt
[gbasedbt@ssc01 ~]$ cd /data/gbase/
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw1 rootdbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw2 plogdbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw3 llogdbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw4 tempdbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw5 tempdbschk002
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw6 tempdbschk003
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw7 datadbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw8 datadbschk002
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw9 commdbschk001
[gbasedbt@ssc01 gbase]$ ln -sf /dev/raw/raw10 sbspacechk001
## 查看链接后的设备
[gbasedbt@ssc01 gbase]$ ll
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 datadbschk001 -> /dev/raw/raw7
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 datadbschk002 -> /dev/raw/raw8
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 commdbschk001 -> /dev/raw/raw9
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 llogdbschk001 -> /dev/raw/raw3
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 plogdbschk001 -> /dev/raw/raw2
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 rootdbschk001 -> /dev/raw/raw1
lrwxrwxrwx 1 gbasedbt gbasedbt 14 12月 11 14:22 sbspacechk001 -> /dev/raw/raw10
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 tempdbschk001 -> /dev/raw/raw4
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 tempdbschk002 -> /dev/raw/raw5
lrwxrwxrwx 1 gbasedbt gbasedbt 13 12月 11 14:22 tempdbschk003 -> /dev/raw/raw6
主辅节点都需完成上述操作。至此,已成功配置共享盘。
SSC 集群安装
安装 GBase 8s 软件
在主辅节点都安装 GBase 8s 数据库软件,不初始化实例。
所有节点都需要解压 GBase 8s 安装包:
## 以节点一为例
[root@ssc01 soft]# tar -xf GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
[root@ssc01 soft]# ll
-rwxr-xr-x 1 root root 185190400 12月 11 10:37 clientsdk_3.5.1_3X2_1_x86_64.tar
drwxr-xr-x 2 root root 77 10月 18 17:04 doc
-rwxr-xr-x 1 root root 346460160 12月 11 10:37 GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
-rwxr-xr-x 1 root root 346341229 10月 18 17:11 ids_install
-rw-r--r-- 1 root root 1864 10月 18 17:11 ids.properties
-rwxr-xr-x 1 root root 43320 12月 11 10:47 libnsl-2.28-98.p02.ky10.x86_64.rpm
-rwxr-xr-x 1 root root 82770 10月 18 17:11 onsecurity
所有节点都需要安装 GBase 8s 数据库软件,使用 root 用户静默安装,安装到路径 /opt/gbase:
## 以节点一为例
[root@ssc01 soft]# sh ids_install -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=/opt/gbase
全程无输出,无感知,等待一会儿就安装完成了。主辅节点都需完成上述操作。
安装 CSDK
SSC 集群切换需要安装 CSDK。
所有节点都需要解压 GBase 8s 安装包:
[root@ssc01 soft]# tar -xf clientsdk_3.5.1_3X2_1_x86_64.tar
[root@ssc01 soft]# ll
总用量 1038380
-rwxr-xr-x 1 root root 185190400 12月 11 10:37 clientsdk_3.5.1_3X2_1_x86_64.tar
-rw-r--r-- 1 root root 2792 10月 18 17:34 csdk.properties
drwxr-xr-x 2 root root 222 10月 18 17:28 doc
-rwxr-xr-x 1 root root 346460160 12月 11 10:37 GBase8sV8.8_TL_3.5.1_3X2_x86_64.tar
-rwxr-xr-x 1 root root 346341229 10月 18 17:11 ids_install
-rw-r--r-- 1 root root 1864 10月 18 17:11 ids.properties
-rwxr-xr-x 1 root root 185166846 10月 18 17:34 installclientsdk
-rwxr-xr-x 1 root root 43320 12月 11 10:47 libnsl-2.28-98.p02.ky10.x86_64.rpm
-rwxr-xr-x 1 root root 82770 10月 18 17:11 onsecurity
在所有节点都使用 root 用户静默安装,安装到路径 /opt/gbase:
[root@ssc01 soft]# sh installclientsdk -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=/opt/gbase
辅节点也需要完成上述操作。
环境变量配置
所有节点都需要配置环境变量,使用 gbasedbt 用户在 /home/gbasedbt 目录下创建 profile.实例名
的文件,并输入以下内容,以主节点为例:
## 以节点一为例
# 数据库实例名格式为 `gbase[xx]`,其中 `xx` 为两位编号,集群中的实例节点将按照此规则依次命名,,例如:`gbase01`,将主节点实例名变量配置为 `gbase01`,辅节点依次增加。
[gbasedbt@ssc01 ~]$ INSTANCE=gbase01
# 默认字符集为 utf8 编码,生产库需根据实际情况调整
[gbasedbt@ssc01 ~]$ cat <<-EOF>>/home/gbasedbt/.bash_profile
export GBASEDBTDIR=/opt/gbase
export GBASEDBTSERVER=${INSTANCE}
export ONCONFIG=onconfig.${INSTANCE}
export GBASEDBTSQLHOSTS=\$GBASEDBTDIR/etc/sqlhosts.${INSTANCE}
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1
export PATH=\$GBASEDBTDIR/bin:/usr/bin:\${PATH}:.
EOF
## 环境变量生效
[gbasedbt@ssc01 ~]$ source /home/gbasedbt/.bash_profile
主辅节点都需完成上述操作。
配置互信
在 GBase 8s SSC 部署过程中,需要配置互信。互信的方法多种多样,这里推荐两种常见的方式:
- 配置
.rhosts
文件:.rhosts
文件是用户主目录内的文件,用于定义可信主机与用户关系,适合安全要求较低的场景,特别是需要将互信限定到用户级别时。 - 配置
REMOTE_SERVER_CFG
参数:REMOTE_SERVER_CFG
参数指定包含信任主机或 IP 地址列表的文件名,文件位于$GBASEDBTDIR/etc
目录中。此方法避免使用操作系统级互信文件,适合对操作系统安全要求较高的场景。
以上方式由官方文档提供,我这里都演示一下,可以供大家根据实际需求选择使用。
配置 .rhosts 文件
1、创建或修改 .rhosts
文件
在 gbasedbt
用户家目录下新建 .rhosts
文件,添加主辅节点的主机名及互信用户:
## 以节点一为例
[gbasedbt@ssc01 ~]$ cat<<-EOF>>/home/gbasedbt/.rhosts
ssc01 gbasedbt
sscha01 gbasedbt
ssc02 gbasedbt
sscha02 gbasedbt
EOF
如果集群配置心跳 IP,也需要加入到互信列表中。
适用场景:此方法适用于对操作系统安全性要求较低,且需要以 gbasedbt
用户进行互信配置的环境。
配置 REMOTE_SERVER_CFG 参数
1、创建 hosts.trust
文件
在数据库安装目录下的 etc
子目录中创建 hosts.trust
文件,内容如下:
## 以节点一为例
[gbasedbt@ssc01 ~]$ cd $GBASEDBTDIR/etc
[gbasedbt@ssc01 ~]$ vi hosts.trust
[gbasedbt@ssc01 ~]$ cat hosts.trust
+ gbasedbt
2、修改 REMOTE_SERVER_CFG
参数
在主节点和辅节点上,通过使用 onmode -wf
动态修改参数或编辑 onconfig
文件后重启数据库,将 REMOTE_SERVER_CFG
设置为 hosts.trust
:
## 以节点一为例
[gbasedbt@ssc01 ~]$ onmode -wf REMOTE_SERVER_CFG hosts.trust
[gbasedbt@ssc01 ~]$ onstat -g cfg | grep REMOTE_SERVER_CFG
REMOTE_SERVER_CFG hosts.trust
适用场景:此方法适用于操作系统安全等级高的场景,避免使用 /etc/hosts.equiv
等文件配置互信。
以上两种互信方式都需要配置 sqlhosts
文件,等下一步配置完成 sqlhosts 文件,确保 sqlhosts
文件配置正确,即可完成互信。
配置 sqlhosts 文件
所有节点都需要配置 sqlhosts 文件,使用 gbasedbt 用户编辑主辅节点的 sqlhosts 文件,sqlhosts 文件中需要加入主辅节点的集群心跳,增加集群实例、心跳实例及 cm 实例等信息,以主节点为例:
[gbasedbt@ssc01 ~]$ cat <<-EOF >$GBASEDBTSQLHOSTS
## dbservername nettype hostname servicename options
db_group group - -
gbase01 onsoctcp 192.168.6.70 9088 g=db_group
gbase02 onsoctcp 192.168.6.71 9088 g=db_group
## 集群心跳配置
ha_group group - -
ha_pri onsoctcp 10.10.10.1 9099 g=ha_group
ha_ssc onsoctcp 10.10.10.2 9099 g=ha_group
## 后续需要部署 2 个 CM,所以提前添加参数
cm_read group - -
oltp_read1 onsoctcp 192.168.6.70 9200 g=cm_read
oltp_read2 onsoctcp 192.168.6.71 9200 g=cm_read
## 后续需要部署 2 个 CM,所以提前添加参数
cm_update group - -
oltp_update1 onsoctcp 192.168.6.70 9300 g=cm_update
oltp_update2 onsoctcp 192.168.6.71 9300 g=cm_update
EOF
主辅节点都需完成上述操作。
配置 onconfig 文件
所有节点都需要配置 onconfig 文件,配置文件参数介绍如下:
使用 gbasedbt 用户,将 $GBASEDBTDIR/etc
目录中的 onconfig.std 文件复制一份,命名为 $ONCONFIG
变量指定的名称:
[gbasedbt@ssc01 ~]$ cp $GBASEDBTDIR/etc/onconfig.std $GBASEDBTDIR/etc/$ONCONFIG
编辑 $ONCONFIG
配置文件,初始化数据库实例,以此配置参数初始化数据库,要求系统内存在 8GB 以上(所有节点均执行):
## 数据库总内存计算方法:`SHMVIRTSIZE (KB)+LOCKS144 (Byte)+BUFFERPOOL(sizebuffers) (KB)`,以下配置共约占用内存 `2048000KB+5000000144B+16512000=2G+0.9G+4G=6.9G`
[gbasedbt@ssc01 ~]$ DATADIR=/data/gbase
[gbasedbt@ssc01 ~]$ NUMCPU=`onstat -g osi |awk /"online processors"/'{print $5}'`
## 调整 ONCONFIG 配置文件,需要根据实际配置进行调整
# 设备路径,包含根 dbspace
[gbasedbt@ssc01 ~]$ sed -i "s#^ROOTPATH.*#ROOTPATH ${DATADIR}/rootdbschk001#g" $GBASEDBTDIR/etc/$ONCONFIG
# 根 dbspace 的大小(以 KB 为单位)
sed -i "s#^ROOTSIZE.*#ROOTSIZE 1024000 #g" $GBASEDBTDIR/etc/$ONCONFIG
# 默认数据库服务器的名称
sed -i "s#^DBSERVERNAME.*#DBSERVERNAME $GBASEDBTSERVER#g" $GBASEDBTDIR/etc/$ONCONFIG
# 用于备份的磁带设备路径
sed -i "s#^TAPEDEV.*#TAPEDEV /dev/null#g" $GBASEDBTDIR/etc/$ONCONFIG
# 用于逻辑日志的磁带设备路径
sed -i "s#^LTAPEDEV.*#LTAPEDEV /dev/null#g" $GBASEDBTDIR/etc/$ONCONFIG
# 指定计算机是否为多处理器
sed -i "s#^MULTIPROCESSOR.*#MULTIPROCESSOR 1#g" $GBASEDBTDIR/etc/$ONCONFIG;
# 页清理线程的数量
sed -i "s#^CLEANERS.*#CLEANERS 32#g" $GBASEDBTDIR/etc/$ONCONFIG;
# GBase 启动时的初始锁数量
sed -i "s#^LOCKS.*#LOCKS 5000000#g" $GBASEDBTDIR/etc/$ONCONFIG;
# 新表的默认表锁模式
sed -i "s#^DEF_TABLE_LOCKMODE.*#DEF_TABLE_LOCKMODE row#g" $GBASEDBTDIR/etc/$ONCONFIG;
# 最大内存量(以 KB 为单位)
sed -i "s#^DS_TOTAL_MEMORY.*#DS_TOTAL_MEMORY 2048000#g" $GBASEDBTDIR/etc/$ONCONFIG;
# 初始大小(以 KB 为单位)
sed -i "s#^SHMVIRTSIZE.*#SHMVIRTSIZE 2048000#g" $GBASEDBTDIR/etc/$ONCONFIG;
# 附加虚拟共享内存的大小(以 KB 为单位)
sed -i "s#^SHMADD.*#SHMADD 1024000#g" $GBASEDBTDIR/etc/$ONCONFIG
# 会话堆栈的大小(以 KB 为单位)
sed -i "s#^STACKSIZE.*#STACKSIZE 1024#g" $GBASEDBTDIR/etc/$ONCONFIG
# 默认的 sbspace 名称,用于存储智能大对象
sed -i "s#^SBSPACENAME.*#SBSPACENAME sbspace01#g" $GBASEDBTDIR/etc/$ONCONFIG
# 用于存储临时数据的 dbspaces 列表
sed -i "s#^DBSPACETEMP.*#DBSPACETEMP tempdbs01,tempdbs02,tempdbs03#g" $GBASEDBTDIR/etc/$ONCONFIG
# 配置 CPU VP
sed -i "s#^VPCLASS cpu.*#VPCLASS cpu,num=${NUMCPU},noage#g" $GBASEDBTDIR/etc/$ONCONFIG
# 控制临时表的默认日志模式
sed -i "s#^TEMPTAB_NOLOG.*#TEMPTAB_NOLOG 1#g" $GBASEDBTDIR/etc/$ONCONFIG
# GBase 名称服务缓存的时间(以秒为单位)
sed -i "s#^NS_CACHE.*#NS_CACHE host=0,service=0,user=0,group=0#g" $GBASEDBTDIR/etc/$ONCONFIG
# 控制共享内存转储
sed -i "s#^DUMPSHMEM.*#DUMPSHMEM 0#g" $GBASEDBTDIR/etc/$ONCONFIG
# 指定缓冲区和 LRU BUFFERPOOL 的默认值
echo "BUFFERPOOL size=16k,buffers=512000,lrus=64,lru_min_dirty=50,lru_max_dirty=60">>$GBASEDBTDIR/etc/$ONCONFIG
# SDS 服务器使用的临时 dbspace
sed -i "s#^SDS_TEMPDBS.*#SDS_TEMPDBS sdstmpdbs,/data/gbase/sdsdbspacetmp,16,0,5120000#g" $GBASEDBTDIR/etc/$ONCONFIG
# 两个缓冲分页文件的路径
sed -i "s#^SDS_PAGING.*#SDS_PAGING /data/gbase/page1,/data/gbase/page2#g" $GBASEDBTDIR/etc/$ONCONFIG
# 定义一种备用的通信方式
sed -i "s#^SDS_ALTERNATE.*#SDS_ALTERNATE ssc_alt_comm#g" $GBASEDBTDIR/etc/$ONCONFIG
# 定义 SDS 流控触发点
sed -i "s#^SDS_FLOW_CONTROL.*#SDS_FLOW_CONTROL -1#g" $GBASEDBTDIR/etc/$ONCONFIG
如果集群配置了心跳 IP,修改心跳别名(所有节点均执行):
# 最多 32 个备用 dbserver 名称的列表(辅节点执行时,需要替换为 ha_ssc)
sed -i "s#^DBSERVERALIASES.*#DBSERVERALIASES ha_pri#g" $GBASEDBTDIR/etc/$ONCONFIG
# 高可用性服务器的别名(辅节点执行时,需要替换为 ha_ssc)
sed -i "s#^HA_ALIAS.*#HA_ALIAS ha_pri#g" $GBASEDBTDIR/etc/$ONCONFIG
启用辅节点服务器功能:
## 主节点设置为 0
sed -i "s#^SDS_ENABLE.*#SDS_ENABLE 0#g" $GBASEDBTDIR/etc/$ONCONFIG
## 辅节点设置为 1
sed -i "s#^SDS_ENABLE.*#SDS_ENABLE 1#g" $GBASEDBTDIR/etc/$ONCONFIG
📢注意:相关参数中用到的文件不存在的需要以 gbasedbt 用户身份创建。
[gbasedbt@ssc01 ~]$ cd /data/gbase/
[gbasedbt@ssc01 ~]$ touch sdsdbspacetmp page1 page2
[gbasedbt@ssc01 ~]$ chmod 660 sdsdbspacetmp page1 page2
配置好之后,就可以开始搭建 SSC 集群了。
搭建集群关系
首先需要初始化并启动主节点的数据库服务,如下所示:
[gbasedbt@ssc01 tmp]$ oninit -iwvy
Your evaluation license will expire on 2025-12-11 00:00:00
attn: Ignoring unknown or deprecated config parameter (STARTHASH_TEMP_OPT)
Reading configuration file '/opt/gbase/etc/onconfig.gbase01'...succeeded
Creating /GBASEDBTTMP/.infxdirs...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 681586 kbytes...succeeded
Creating infos file "/opt/gbase/etc/.infos.gbase01"...succeeded
Linking conf file "/opt/gbase/etc/.conf.gbase01"...succeeded
Initializing rhead structure...rhlock_t 524288 (16384K)... rlock_t (664062K)... Writing to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...succeeded
Forking main_loop thread...succeeded
Initializing DR structures...succeeded
Forking 1 'soctcp' listener threads...succeeded
Forking 1 'soctcp' listener threads...succeeded
Starting tracing...succeeded
Initializing 32 flushers...succeeded
Initializing log/checkpoint information...succeeded
Initializing dbspaces...succeeded
Opening primary chunks...succeeded
Validating chunks...succeeded
Creating database partition...succeeded
Initialize Async Log Flusher...succeeded
Starting B-tree Scanner...succeeded
Init ReadAhead Daemon...succeeded
Init DB Util Daemon...succeeded
Initializing DBSPACETEMP list...succeeded
Init Auto Tuning Daemon...succeeded
Checking database partition index...succeeded
Initializing dataskip structure...succeeded
Checking for temporary tables to drop...succeeded
Updating Global Row Counter...succeeded
Forking onmode_mon thread...succeeded
Creating periodic thread...succeeded
Creating periodic thread...succeeded
Starting scheduling system...succeeded
Verbose output complete: mode = 5
注意:如果这一步初始化失败的话,再次执行初始化之前需要设置参数 FULL_DISK_INIT
,否则会执行报错。
# 指定是否可以运行 oninit -i
sed -i "s#^FULL_DISK_INIT 0*#FULL_DISK_INIT 1#g" $GBASEDBTDIR/etc/$ONCONFIG
确保初始化成功之后继续下面的操作。
当主节点数据库服务起来之后,就可以创建物理日志和逻辑日志,数据空间,临时数据空间,智能大数据空间,路径指向共享盘,如下所示:
## 表空间大小根据共享存储规划来分配,本文均为 4GB
[gbasedbt@ssc01 ~]$ DATADIR=/data/gbase
## 创建物理日志空间
[gbasedbt@ssc01 ~]$ onspaces -c -d plogdbs -p $DATADIR/plogdbschk001 -o 0 -s 4000000
## 创建逻辑日志空间
[gbasedbt@ssc01 ~]$ onspaces -c -d llogdbs -p $DATADIR/llogdbschk001 -o 0 -s 4000000
## 创建 3 个临时数据库空间,多个临时空间,部分操作可并行执行于各个临时空间,以提高效率。临时空间名称应与参数 DBSPACETEMP 配置保持一致,多个空间之间以英文逗号分隔,本文中配置参数 DBSPACETEMP 已配置为 tempdbs01,tempdbs02,tempdbs03
[gbasedbt@ssc01 ~]$ onspaces -c -d tempdbs01 -p $DATADIR/tempdbschk001 -t -k 16 -o 0 -s 4000000
[gbasedbt@ssc01 ~]$ onspaces -c -d tempdbs02 -p $DATADIR/tempdbschk002 -t -k 16 -o 0 -s 4000000
[gbasedbt@ssc01 ~]$ onspaces -c -d tempdbs03 -p $DATADIR/tempdbschk003 -t -k 16 -o 0 -s 4000000
## 创建 2 个用户数据库空间
[gbasedbt@ssc01 ~]$ onspaces -c -d datadbs01 -p $DATADIR/datadbschk001 -k 16 -o 0 -s 4000000
[gbasedbt@ssc01 ~]$ onspaces -c -d datadbs02 -p $DATADIR/datadbschk002 -k 16 -o 0 -s 4000000
## 创建智能大对象空间,智能大对象空间用于存储 blob、clob 数据类型,SBSPACENAME 参数指定默认智能大对象空间,创建的智能大对象空间名称应与此参数值一致,本文中配置参数 SBSPACENAME 已配置为 sbspace01;如未使用 blob、clob 数据类型,可不创建;
[gbasedbt@ssc01 ~]$ onspaces -c -d sbspace01 -p $DATADIR/sbspacechk001 -k 16 -o 0 -s 4000000
## 创建集群心跳空间,并切换一个日志生效
[gbasedbt@ssc01 ~]$ onspaces -c -b ssc_alt_comm -p /data/gbase/commdbschk001 -g 16k -o 0 -s 4000000
[gbasedbt@ssc01 ~]$ onmode -l
创建完需把逻辑日志和物理日志从 rootdbs 中迁移出来:
## 优化物理日志,将物理日志从 rootdbs 中转移到 plogdbs,大小 2GB
[gbasedbt@ssc01 ~]$ onparams -p -d plogdbs -s 2000000 -y
# 增加逻辑日志到 llogdbs,增加 20 个,每个 100MB,存放于 llogdbs
[gbasedbt@ssc01 ~]$ for i in `seq 20`;do onparams -a -d llogdbs -s 100000;done
# 切换当前逻辑日志到第七个以后,释放 rootdbs 中的前 6 个日志
[gbasedbt@ssc01 ~]$ for i in `seq 7`;do onmode -l;done
# 执行检查点
[gbasedbt@ssc01 ~]$ onmode -c
# 删除 rootdbs 中的 6 个逻辑日志
[gbasedbt@ssc01 ~]$ for i in `seq 6`;do onparams -d -l $i -y;done
创建默认数据库
使用 gbasedbt 用户执行以下命令:
[gbasedbt@ssc01 ~]$ dbaccess - -<<-EOF
create database gbasedb in datadbs01 with log;
EOF
创建默认数据库 gbasedb,数据存储于 datadbs01 空间。
配置集群主节点
在主节点执行以下命令,配置集群主节点为心跳实例,gbasedbt 用户执行:
[gbasedbt@ssc01 ~]$ onmode -d set SDS primary ha_pri
此时我们可以看下集群关系:
[gbasedbt@ssc01 ~]$ onstat -g sds
Your evaluation license will expire on 2025-12-11 00:00:00
On-Line -- Up 00:26:18 -- 11142884 Kbytes
Local server type: Standard
Number of SDS servers:0
启动辅节点库
接下来就是启动辅节点数据库服务:
[gbasedbt@ssc02 gbase]$ oninit -vy
Your evaluation license will expire on 2025-12-11 00:00:00
attn: Ignoring unknown or deprecated config parameter (STARTHASH_TEMP_OPT)
Reading configuration file '/opt/gbase/etc/onconfig.gbase02'...succeeded
Creating /GBASEDBTTMP/.infxdirs...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 681586 kbytes...succeeded
Creating infos file "/opt/gbase/etc/.infos.gbase02"...succeeded
Linking conf file "/opt/gbase/etc/.conf.gbase02"...succeeded
Initializing rhead structure...rhlock_t 524288 (16384K)... rlock_t (664062K)... Writing to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...succeeded
Forking main_loop thread...succeeded
Initializing DR structures...succeeded
Forking 1 'soctcp' listener threads...succeeded
Forking 1 'soctcp' listener threads...succeeded
Starting tracing...succeeded
Initializing 32 flushers...succeeded
Initializing SDS Server network connections...succeeded
Initializing log/checkpoint information...succeeded
Initializing dbspaces...succeeded
Opening primary chunks...succeeded
Validating chunks...succeeded
Initializing SDS Server disks...succeeded
Initialize Async Log Flusher...succeeded
Starting B-tree Scanner...succeeded
Init ReadAhead Daemon...succeeded
Init DB Util Daemon...succeeded
Initializing DBSPACETEMP list...succeeded
Init Auto Tuning Daemon...succeeded
Initializing dataskip structure...succeeded
Updating Global Row Counter...succeeded
Forking onmode_mon thread...succeeded
Creating periodic thread...succeeded
Creating periodic thread...succeeded
Verbose output complete: mode = 2
检查集群状态
当主辅节点数据库服务都启动之后,就可以分别在主辅节点查看数据库集群状态:
## 主节点
[gbasedbt@ssc01 ~]$ onstat -g sds
Your evaluation license will expire on 2025-12-11 00:00:00
On-Line -- Up 00:48:59 -- 11142884 Kbytes
Local server type: Primary
Number of SDS servers:1
SDS server information
SDS srv SDS srv Connection Last LPG sent Supports
name status status (log id,page) Proxy Writes
ha_ssc Active Connected 13,2377 N
## 辅节点
[gbasedbt@ssc02 etc]$ onstat -g sds
Your evaluation license will expire on 2025-12-11 00:00:00
Read-Only (SDS) -- Up 00:02:50 -- 11142884 Kbytes
Local server type: SDS
Server Status : Active
Source server name: ha_pri
Connection status: Connected
Last log page received(log id,page): 13,2377
可以看到集群关系已经是搭建完成。
连接数据库
在 GBase 8s 数据库中,许多信息可以通过查询系统表直接获取,其中主辅节点信息也不例外。在 sysmaster
库中的 syscluster
表中,可以通过查询该表获取部分内容,这些内容与 onstat -g cluster
、onstat -g dri
和 onstat -g ath
等命令的输出相关:
> database sysmaster;
数据库已关闭。
数据库已被选用。
> select * from syscluster;
name ha_pri
role P
syncmode SYNC
nodetype PRIMARY
supports_updates Y
server_status Active
connection_status
delayed_apply
stop_apply Not Used
logid_sent
logpage_sent
logid_acked
logpage_acked
ack_time 2024-12-11 22:20:15
sdscycle 277
sdscycle_acked
name ha_ssc
role S
syncmode SYNC
nodetype SDS
supports_updates N
server_status Active
connection_status Connected
delayed_apply
stop_apply Not Used
logid_sent 13
logpage_sent 2925
logid_acked 13
logpage_acked 2925
ack_time 2024-12-11 22:20:04
sdscycle 277
sdscycle_acked 277
查询到 2 行。
使用 gbasedbt 用户连接数据库,创建测试表:
[gbasedbt@ssc01 ~]$ dbaccess - -
> database gbasedb;
数据库已被选用。
> create table test(id int, name varchar(20));
表已建妥。
> insert into test values(1, 'lucifer');
1 行被插入。
> select * from test;
id name
1 lucifer
查询到 1 行。
> drop table if exists test;
表已取消。
数据库建表测试正常。
辅节点可更新
在正常情况下,集群搭建完成后,辅节点默认处于只读、不可更新的状态:
[gbasedbt@ssc02 ~]$ onstat -g cluster
Your evaluation license will expire on 2025-12-11 00:00:00
Read-Only (SDS) -- Up 01:17:38 -- 11142884 Kbytes
Primary Server:ha_pri
Index page logging status: Disabled
Server ACKed Log Supports Status
(log, page) Updates
ha_ssc 13,3002 No SYNC(SDS),Connected,Active
通过修改 onconfig
配置文件中的 UPDATABLE_SECONDARY
参数,可以将辅节点设置为可更新。UPDATABLE_SECONDARY
的默认值为 0
:
[gbasedbt@ssc02 ~]$ cat $GBASEDBTDIR/etc/$ONCONFIG | grep UPDATABLE_SECONDARY
# UPDATABLE_SECONDARY - Controls whether secondary servers can accept
UPDATABLE_SECONDARY 0
启用该参数后,表示辅节点到主节点传输更新指令的连接线程数,可设置范围为 1
到 CPU VP 的两倍。
需要注意的是,辅节点的可更新机制是通过接收 DML 命令后,将其通过指定线程传递给主节点,由主节点执行后再同步更新至辅节点。
当在辅节点将 UPDATABLE_SECONDARY
参数值修改为 1
:
[gbasedbt@ssc02 ~]$ sed -i "s#^UPDATABLE_SECONDARY 0*#UPDATABLE_SECONDARY 1#g" $GBASEDBTDIR/etc/$ONCONFIG
[gbasedbt@ssc02 ~]$ cat $GBASEDBTDIR/etc/$ONCONFIG | grep UPDATABLE_SECONDARY
# UPDATABLE_SECONDARY - Controls whether secondary servers can accept
UPDATABLE_SECONDARY 1
重启辅节点后:
[gbasedbt@ssc02 ~]$ onmode -ky
Your evaluation license will expire on 2025-12-11 00:00:00
[gbasedbt@ssc02 ~]$ oninit -vy
Your evaluation license will expire on 2025-12-11 00:00:00
attn: Ignoring unknown or deprecated config parameter (STARTHASH_TEMP_OPT)
Reading configuration file '/opt/gbase/etc/onconfig.gbase02'...succeeded
Creating /GBASEDBTTMP/.infxdirs...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 681586 kbytes...succeeded
Creating infos file "/opt/gbase/etc/.infos.gbase02"...succeeded
Linking conf file "/opt/gbase/etc/.conf.gbase02"...succeeded
Initializing rhead structure...rhlock_t 524288 (16384K)... rlock_t (664062K)... Writing to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...succeeded
Forking main_loop thread...succeeded
Initializing DR structures...succeeded
Forking 1 'soctcp' listener threads...succeeded
Forking 1 'soctcp' listener threads...succeeded
Starting tracing...succeeded
Initializing 32 flushers...succeeded
Initializing SDS Server network connections...succeeded
Initializing log/checkpoint information...succeeded
Initializing dbspaces...succeeded
Opening primary chunks...succeeded
Validating chunks...succeeded
Initializing SDS Server disks...succeeded
Initialize Async Log Flusher...succeeded
Starting B-tree Scanner...succeeded
Init ReadAhead Daemon...succeeded
Init DB Util Daemon...succeeded
Initializing DBSPACETEMP list...succeeded
Init Auto Tuning Daemon...succeeded
Initializing dataskip structure...succeeded
Updating Global Row Counter...succeeded
Forking onmode_mon thread...succeeded
Creating periodic thread...succeeded
Creating periodic thread...succeeded
Verbose output complete: mode = 2
再次查看集群状态:
[gbasedbt@ssc02 ~]$ onstat -g cluster
Your evaluation license will expire on 2025-12-11 00:00:00
Updatable (SDS) -- Up 00:01:55 -- 11142884 Kbytes
Primary Server:ha_pri
Index page logging status: Disabled
Server ACKed Log Supports Status
(log, page) Updates
ha_ssc 13,3045 Yes SYNC(SDS),Connected,Active
此时 Supports Updates
状态将变为 Yes
,即辅节点进入可更新状态:
[gbasedbt@ssc02 ~]$ dbaccess - -
> database gbasedb;
数据库已被选用。
> create table test(id int, name varchar(20));
表已建妥。
>
> insert into test values(1, 'lucifer');
1 行被插入。
> select * from test;
id name
1 lucifer
查询到 1 行。
辅节点可以正常建表插入数据。
连接管理器 CM
CM 介绍
连接管理器 CM 为单独组件,不依赖数据库服务,可独立运行于仲裁服务器,为了节省服务器资源,CM 与数据库 SERVER 运行于同一服务器,CM 以组的形式和数据库集群交叉部署,如仲裁 CM 和主节点配置为不位于同一服务器,确保某一服务器故障集群可正常切换,由于 CM 和数据库 SERVER 运行于同一服务器,不再单独配置 sqlhosts 文件,与 server 共用同一 sqlhosts 文件,该文件在前述章节已配置。
CM 可以配置一个也可以配置多个,如果在两个数据库节点上部署 CM,优先级最高的 CM 尽量不要与数据库 Primary 节点在一台服务器上。CM 优先级可以通过 PRIORITY 参数来区分,参数数值越大,优先级越低。CM 可以部署在数据库服务器节点上,也可以部署在应用节点上,不管在哪部署都需要配置互信,在实际生产中,推荐在应用节点上部署 CM。
CM 集成在 CSDK 安装包里,之前章节已经在主辅节点都部署了 CSDK(CSDK 的版本号需与数据库版本号一致)。
CM 连接方式
连接管理器可以重定向客户机连接请求或充当代理服务器并处理所有客户机/服务器通信。使用服务级别协议 MODE=REDIRECT
或 MODE=PROXY
属性可指定连接管理器如何处理客户机连接请求。
那么分别使用代理方式和重定向方式会有什么不同呢?
重定向方式
在重定向方式下,连接管理器将相应服务器节点、IP 地址和端口号返回给发出连接请求的客户机应用程序。然后,客户机应用程序使用连接管理器提供的 IP 地址和端口号来连接到指定的数据库服务器。
代理方式
在代理方式下,连接管理器充当代理服务器,并管理客户机与数据库服务器的通信。当客户机应用程序无法连接到位于防火墙后面的数据库服务器时,请使用代理方式。要避免连接管理器成为单个故障点,在使用代理方式时,请配置多个连接管理器实例。
配置 CM 文件
接下来,需要配置文件,在安装录下的 etc 目录下有 cmsm.cfg.sample.all
,也就是配置文件的模板,可以根据需求,按此文件进行配置。
创建配置文件,使用 gbasedbt 用户执行:
# 主节点
# 创建配置文件 $GBASEDBTDIR/etc/cmsm.cm1
[gbasedbt@ssc01 ~]$ cat<<-\EOF>$GBASEDBTDIR/etc/cmsm.cm1
NAME CM1
LOGFILE ${GBASEDBTDIR}/tmp/cm1.log
SQLHOSTS LOCAL
LOG 1
DEBUG 0
CLUSTER CLUSTER1
{
GBASEDBTSERVER db_group
SLA oltp_update1 DBSERVERS=PRI WORKERS=8 MODE=redirect USEALIASES=OFF
SLA oltp_read1 DBSERVERS=SDS WORKERS=8 MODE=redirect USEALIASES=OFF
FOC ORDER=ENABLED TIMEOUT=10 RETRY=3 PRIORITY=2
}
EOF
# 辅节点
# 创建配置文件 $GBASEDBTDIR/etc/cmsm.cm2
[gbasedbt@ssc02 ~]$ cat<<-\EOF>$GBASEDBTDIR/etc/cmsm.cm2
NAME CM2
LOGFILE ${GBASEDBTDIR}/tmp/cm2.log
SQLHOSTS LOCAL
LOG 1
DEBUG 0
CLUSTER CLUSTER2
{
GBASEDBTSERVER db_group
SLA oltp_update2 DBSERVERS=PRI WORKERS=8 MODE=redirect USEALIASES=OFF
SLA oltp_read2 DBSERVERS=SDS WORKERS=8 MODE=redirect USEALIASES=OFF
FOC ORDER=ENABLED TIMEOUT=10 RETRY=3 PRIORITY=1
}
EOF
📢注意:CM 配置文件中的 PRIORITY 是 CM 的优先级,数字越大,优先级越小。我们把优先级高的(也就是熟悉小的)CM 部署在辅节点:
- 主节点 cmsm.cm1 文件中为
PRIORITY=1
; - 辅节点 cmsm.cm2 文件中为
PRIORITY=2
;
修改 ONCONFIG 文件
配置完 CM 文件,我们还需确认一下 ONCONFIG 文件中的两个参数:DRAUTO、HA_FOC_ORDER。
- DRAUTO 参数:确定故障切换方式的参数,部署 CM,让 CM 来控制故障转移,需要把 DRAUTO 参数设置成 3。
- HA_FOC_ORDER 参数:故障转移规则,该值默认值为 SDS/HDR/RSS;也就是说如果主节点发生故障,先转移到 SSC 辅助服务器,然后是 HAC 辅助服务器,再然后是
RHAC 辅助服务器。。
使用 gbasedbt 用户修改 $ONCONFIG
配置文件(所有节点均执行):
# 控制 HDR 系统的自动故障切换,确保 DRAUTO 的值为 3
[gbasedbt@ssc01 ~]$ sed -i "s#^DRAUTO.*#DRAUTO 3#g" $GBASEDBTDIR/etc/$ONCONFIG
# HA_FOC_ORDER 参数可以使用默认值,不做修改
[gbasedbt@ssc01 ~]$ cat $GBASEDBTDIR/etc/$ONCONFIG | grep HA_FOC_ORDER
# HA_FOC_ORDER - The cluster failover rules.
HA_FOC_ORDER SDS,HDR,RSS
配置好之后就可以启动CM来监听数据库状态了。
启动 CM
为了方便在启动 CM 时不指定 config 参数,建议配置环境变量:
# 主节点
[gbasedbt@ssc01 ~]$ echo "export CMCONFIG=\$GBASEDBTDIR/etc/cmsm.cm1" >>/home/gbasedbt/.bash_profile
[gbasedbt@ssc01 ~]$ source /home/gbasedbt/.bash_profile
# 辅节点
[gbasedbt@ssc02 ~]$ echo "export CMCONFIG=\$GBASEDBTDIR/etc/cmsm.cm2" >>/home/gbasedbt/.bash_profile
[gbasedbt@ssc02 ~]$ source /home/gbasedbt/.bash_profile
使用 gbasedbt 用户在所有节点均执行 CM 启动命令:
[gbasedbt@ssc01 ~]$ oncmsm
Connection Manager started successfully
Please check GBase Connection Manager log file: /opt/gbase/tmp/cm1.log
如显示 Connection Manager started successfully
表示启动成功。
执行 onstat -g cmsm
查看数据库是否已连接到 CM:
[gbasedbt@ssc01 ~]$ onstat -g cmsm
Your evaluation license will expire on 2025-12-11 00:00:00
On-Line -- Up 01:40:55 -- 11142884 Kbytes
Unified Connection Manager: CM1 Hostname: ssc01
CLUSTER CLUSTER1 LOCAL
GBasedbt Servers: db_group
SLA Connections Service/Protocol Rule
oltp_update1 0 9300/onsoctcp DBSERVERS=PRI WORKERS=8 MODE=redirect USEALIASES=OFF
oltp_read1 0 9200/onsoctcp DBSERVERS=SDS WORKERS=8 MODE=redirect USEALIASES=OFF
Failover Arbitrator: Failover is enabled
ORDER=SDS,HDR,RSS PRIORITY=2 TIMEOUT=10
Unified Connection Manager: CM2 Hostname: ssc02
CLUSTER CLUSTER2 LOCAL
GBasedbt Servers: db_group
SLA Connections Service/Protocol Rule
oltp_update2 0 9300/onsoctcp DBSERVERS=PRI WORKERS=8 MODE=redirect USEALIASES=OFF
oltp_read2 0 9200/onsoctcp DBSERVERS=SDS WORKERS=8 MODE=redirect USEALIASES=OFF
Failover Arbitrator: Active Arbitrator, Primary is up
ORDER=SDS,HDR,RSS PRIORITY=1 TIMEOUT=10
可以看到,HA_FOC_ORDER 参数未作修改,用默认值的时候,发生故障,故障转移的顺序为 SSC、HAC、RHAC。
写在最后
GBase 8s SSC 共享集群和我之前接触的很多数据库集群部署方式差别比较大,所以还是花费了不少时间去查阅资料,在文字斟酌上也耗费了不少时间,希望能让读者更清晰的了解整个安装思路,本文目前应该是全网最详尽的 GBase 8s SSC 部署步骤了,希望能帮助到你。
如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!
往期精彩文章
达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
金仓数据库 KingbaseES V9 单机安装指南
KingbaseES KSQL 免密登录的几种方式
KingbaseES 控制文件冗余与恢复秘籍
金仓 KingbaseES RAC 入门指南
金仓 KDTS 初探:Oracle 到 KingbaseES 一键迁移
GBase 8a MPP 集群部署最佳实践
GBase 8a GDCA 认证课后练习题大全(题库)
南大通用 GBASE 8s V8.8 数据库最全安装指南
GBase 8s GDCA 认证课后练习题大全(题库)
GBase 8s 数据库巡检报告及一键巡检脚本
YashanDB 一键生成 AWR 报告
YashanDB 数据库安装部署
YashanDB 共享集群(YAC)入门指南与技术详解
基于 TencentOS 3 的 OpenTenBase 集群搭建实践
更多推荐
所有评论(0)