南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤

今天,我们将探讨南大通用GBase 8s RHAC(Remote High Availability Cluster)的基本原理和搭建步骤,这是一种在异步通信框架内运行的辅助服务器技术,旨在最小化对主服务器的影响,同时提供数据的高可用性。

GBase 8s RHAC 辅助服务器在很多方面都与 HAC 辅助服务器相似。将日志发送到 RHAC 辅助服务器的方式与主服务器将日志发送到 HAC 辅助服务器的方式很相似。但是,RHAC 辅助服务器用于完全在异步通信框架内运行,因此对主服务器的影响达到最小。事务落实和检查点在主服务器和 RHAC 辅助服务器之间均未同步。不保证在主服务器上落实的任何事务也在同一时间在 RHAC 辅助服务器上得到完成。

从对RHAC与HAC功能应用比较来看,RHAC相对于HAC有以下不支持的功能:

不支持完全同步和近同步方式

不支持DRAUTO参数自动切换

不支持同步检查点

RHAC原理
RHAC采用SMX(Server Multiplexer)通信方式来建立节点之间的网络连接,SMX采用全双工的通信协议,支持异步通信的方式,在低速网络上提供更好的通信连接,简化了节点之间的通信管理,支持加密传输,同一个SMX连接可以支持多个内部功能传输。

RHAC_Send线程负责将逻辑日志发送到RHAC辅节点,如果要发送的下一页逻辑日志不在逻辑日志缓冲区中,那么RHAC_Send将直接从磁盘中读取日志。RHAC_Send 线程与 SMX 交互,以使用全双工方式发送数据。有了全双工通信,线程在发送下一个缓冲区之前不等待来自辅助服务器的确认。在主服务器需要来自辅助服务器的确认之前最多可发送 32 个缓冲区传输。如果达到 32 个缓冲区的限制,那么发送线程将等待RHAC_Recv 线程接收来自 RHAC 辅助服务器的确认。在辅助服务器上,RHAC_Recv 与 SMX 交互,以接收来自主服务器的日志页。

简单来说,RHAC架构基于主节点和辅节点之间的通信来实现数据传输和恢复。当数据生成时,它首先被写入主节点的逻辑日志缓冲区和存储中。同时,数据也会被写入发送缓冲区。为了保证数据的一致性,专门的线程负责将发送缓冲区中的数据通过网络传输给辅节点。辅节点接收到数据后,将其存储在逻辑日志缓冲区中,并使用重放技术来更新内存中的缓冲值。

一个关键的特性是RHAC架构支持延时数据恢复。延时数据恢复意味着辅节点在接收到数据后,并不会立即进行重放操作。相反,辅节点会按照一定的规则,延迟一段时间再进行数据的重放。这种延时恢复的机制可以通过将数据缓存到临时文件夹或者其他存储位置上来实现。

RHAC架构中的数据传输是异步的。辅节点会监测主节点和辅节点之间的数据差异,以进行流量控制。如果数据差异过大,辅节点会通知主节点进行相应的业务操作。

RHAC部署
RHAC集群的部署和HAC集群的部署十分相似。

主节点(192.168.1.1)

辅节点(192.168.1.2)

关闭防火墙

关闭防火墙

关闭selinux

关闭selinux

调整操作系统参数(共享内存,信号量,资源限制等)

调整操作系统参数(共享内存,信号量,资源限制等)

配置节点互信

配置节点互信

安装GBase 8s,并初始化实例(primary)

非实例化安装GBase 8s

——

配置环境变量

配置onconfig相关参数

配置onconfig相关参数

调整sqlhosts,加入辅节点信息

调整sqlhosts,同主节点

重启主节点实例

——

在主节点上注册RHAC节点(onmode -d add RSS )

——

进行L0备份

——

——

进行L0备份的恢复

——

将辅节点注册到主节点(onmode -d RSS )

查看节点状态(onstat -g rss)

查看节点状态(onstat -g rss)

安装GBase 8s
首先,我们需要分别在主节点和辅节点安装GBase 8s 数据库。安装过程也不做赘述。
注意:主节点安装完需要初始化实例,辅节点不初始化实例!!!

修改主节点的sqlhosts文件和配置文件
主节点完成初始化实例之后,我们需要修改onconfig文件;
SERVERNUM和DBSERVERNUM 可以不做修改(只要保证主节点和辅节点不一样即可),
剩下三个参数初始化之后都是默认值,需要我们进行修改。其中DRAUTO是控制故障转移的参数,当主节点发生故障的时,辅节点怎么成为主节点就靠这个参数来控制。参数详细信息可看下表:

参数

说明

SERVERNUM

131

实例唯一标识,最大值255

DBSERVERNAME

prim

实例名

HA_ALIAS(选配)

prim

高可用环境中的实例别名,如果没配置则使用实例名

DRAUTO

0或3

0:不进行自动故障转移

3:由CM接管

LOG_INDEX_BUILDS

1

必选,将索引数据写入逻辑日志

修改完onconfig文件之后,修改sqlhosts文件,sqlhosts文件中加入辅节点的信息即可,如下所示:

[gbasedbt@prim ~]$ cd /opt/gbase/etc/
[gbasedbt@prim etc]$ cat sqlhosts.prim 
prim onsoctcp 192.168.56.201 9088
[gbasedbt@prim etc]$ vi sqlhosts.prim 
[gbasedbt@prim etc]$ cat sqlhosts.prim 
prim onsoctcp 192.168.1.1 9088
rhac onsoctcp 192.168.1.2 9088

修改完配置文件之后,主节点需要重启,让修改的参数生效。

修改辅节点的配置文件和profile文件
首先我们修改onconfig文件,主要修改SERVERNUM、DBSERVERNAME、HA_ALIAS等参数,让其和主节点不一致。

参数

说明

SERVERNUM

132

实例唯一标识,最大值255

DBSERVERNAME

rhac

实例名

HA_ALIAS(选配)

rhac

高可用环境中的实例别名,如果没配置则使用实例名

DRAUTO

0或3

0:不进行自动故障转移

3:由CM接管

LOG_INDEX_BUILDS

1

必选,将索引数据写入逻辑日志

sqlhost文件与主节点相同即可
修改profile文件,将profile文件中的prim修改成rhac即可。

[gbasedbt@rhac ~]$ cat profile.rhac 
export GBASEDBTSERVER=rhac
export GBASEDBTDIR=/opt/gbase
export GBASEDBTSQLHOSTS=/opt/gbase/etc/sqlhosts.rhac
export ONCONFIG=onconfig.rhac
export PATH=/opt/gbase/bin:$PATH
export PATH=/opt/gbase/sbin:$PATH
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1

完成上述操作之后,我们可以source一下环境变量,之后查看数据库服务状态,此时辅节点应该是关闭状态。

[gbasedbt@rhac ~]$ source profile.rhac
[gbasedbt@rhac ~]$ onstat -
Your evaluation license will expire on 2024-11-20 00:00:00
shared memory not initialized for GBASEDBTSERVER 'rhac'
辅节点创建chunk
首先在主节点查看dbs的存放路径,在辅节点创建相同的文件夹。

[gbasedbt@prim rhac_dbs]$ ll
总用量 8527872
-rw-rw---- 1 gbasedbt gbasedbt 104857600 11月 21 10:00
datadbs1_1-rw-rw---- 1 gbasedbt gbasedbt 3481272320 11月 21 10:28
llogdbs-rw-rw---- 1 gbasedbt gbasedbt 3481272320 11月 21 10:28
plogdbs-rw-rw---- 1 gbasedbt gbasedbt 209715200 11月 21 10:28
rootdbs-rw-rw---- 1 gbasedbt gbasedbt 727711744 11月 21 09:58
sbspace1-rw-rw---- 1 gbasedbt gbasedbt 727711744 11月 21 09:58
tmpdbs1[gbasedbt@prim rhac_dbs]$ pwd /opt/gbase/rhac_dbs
在辅节点 /opt/gbase 目录下创建rhac_dbs目录,之后再根据主节点chunk的名称再辅节点创建chunk。如上所示,主节点一共有六个chunk,因此在辅节点我们也创建6个chunk,并且将chunk的权限修改为660。

[gbasedbt@rhac ~]$ cd /opt/gbase/
[gbasedbt@rhac gbase]$ mkdir rhac_dbs
[gbasedbt@rhac gbase]$ cd rhac_dbs/
[gbasedbt@rhac rhac_dbs]$ touch datadbs1_1 llogdbs plogdbs rootdbs sbspace1 tmpdbs1
[gbasedbt@rhac rhac_dbs]$ ll
总用量 0
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 datadbs1_1
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 llogdbs
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 plogdbs
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 rootdbs
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 sbspace1
-rw-rw-r-- 1 gbasedbt gbasedbt 0 11月 21 10:37 tmpdbs1
[gbasedbt@rhac rhac_dbs]$ chmod 660 *
[gbasedbt@rhac rhac_dbs]$ ll
总用量 0
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 datadbs1_1
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 llogdbs
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 plogdbs
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 rootdbs
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 sbspace1
-rw-rw---- 1 gbasedbt gbasedbt 0 11月 21 10:37 tmpdbs1
至此安装,初始化,配置文件修改等步骤已全部完成。

配置互信
GBase 8s集群部署的时候,互信的方法很多,这里主要介绍配置 .rhosts 文件的方法

用户主目录内的“.rhosts”文件内容是受信任的{主机~用户}关系对。授予特定主机上的某一特定账号以信任关系。简单的说.rhosts是同一用户在不同主机间的信任,只信任被信主机的相应的某个用户。

.rhosts方式配置互信适用于对操作系统安全要求比较低,互信需要指定到用户级别。root用户管理严格。这种情况可以使用gbasedbt用户修改.rhosts方式配置互信。

配置方法如下:
首先修改 /etc/hosts 文件,主辅节点使用root用户执行:vi /etc/hosts。在/etc/hosts文件下添加主辅节点的ip地址及主机名。主辅两台服务器配置一样。

[root@localhost opt]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.1 prim
192.168.1.2 rhac
修改完 /etc/hosts 文件之后,修改 .rhosts 文件,在gbasedbt用户家目录下新建.rhosts 文件,主节点和辅节点在文件中互相添加对方的主机名和互信用户gbasedbt。

[gbasedbt@hac ~]$ cat .rhosts
prim gbasedbt
hac gbasedbt
最后配置正确的sqlhosts文件即可完成互信。sqlhosts文件的配置前面已完成,至此配置互信完成。

搭建RHAC集群

搭建集群前的准备工作完成了之后,就可以搭建集群关系了。
首先,我们需要设置主节点,命令中的rhac是辅节点实例的名称。之后可以查看集群状态,我们会发现rhac是Disconnected状态。

[gbasedbt@prim rhac_dbs]$ onmode -d add RSS rhac
Your evaluation license will expire on 2024-11-20 00:00:00
[gbasedbt@prim rhac_dbs]$ onstat -g cluster
Your evaluation license will expire on 2024-11-20 00:00:00
On-Line -- Up 00:00:47 -- 674664 Kbytes
Primary Server:prim
Current Log Page:7,4081
Index page logging status: Enabled
Index page logging was enabled at: 2023/11/21 10:39:46

Server ACKed Log Applied Log Supports Status
(log, page) (log, page) Updates
rhac 0,0 0,0 No ASYNC(RSS),Disconnected,Defined
接下来辅节点进行数据恢复,确保在执行以下命令之前,辅节点的状态是关闭状态。
在主节点执行以下命令:

[gbasedbt@rhac ~]$ onstat - #辅节点
Your evaluation license will expire on 2024-11-20 00:00:00
shared memory not initialized for GBASEDBTSERVER 'rhac'

主节点

[gbasedbt@prim rhac_dbs]$ ontape -s -L 0 -t STDIO | ssh 192.168.56.202 "source /home/gbasedbt/profile.rhac && ontape -p -t STDIO"
Your evaluation license will expire on 2024-11-20 00:00:00
gbasedbt@192.168.56.202's password:
Your evaluation license will expire on 2024-11-20 00:00:00
Your evaluation license will expire on 2024-11-20 00:00:00
在主节点执行完此命令之后,我们可以查看辅节点的状态,辅节点此时会变成Fast Recovery状态。

[gbasedbt@rhac ~]$ onstat - #辅节点
Your evaluation license will expire on 2024-11-20 00:00:00
Fast Recovery -- Up 00:01:47 -- 597864 Kbytes
此时,我们需要设置辅节点。
在辅节点执行以下命令,执行完命令之后,可以查看辅节点的状态,此时辅节点的状态会有两种变化,首先会变成Fast Recovery (RSS)状态,之后会变成Read-Only (RSS)状态。此时我们可以查看集群状态,此时rhac是Connected状态。

[gbasedbt@rhac ~]$ onmode -d RSS prim                 
Your evaluation license will expire on 2024-11-20 00:00:00
[gbasedbt@rhac ~]$ onstat -
Your evaluation license will expire on 2024-11-20 00:00:00
Fast Recovery (RSS) -- Up 00:02:27 -- 1135464 Kbytes
[gbasedbt@rhac ~]$ onstat -g cluster
Your evaluation license will expire on 2024-11-20 00:00:00Read-Only (RSS) -- Up 00:02:57 -- 1135464 Kbytes
Primary Server:prim
Index page logging status: Enabled
Index page logging was enabled at: 2023/11/21 10:39:46

Server ACKed Log    Supports     Status
      (log, page)  Updates
rhac   7,4092       No           ASYNC(RSS),Connected,Active

至此,RHAC集群关系搭建完毕。

通过这篇文章,我们了解了RHAC的基本原理和搭建步骤。RHAC作为一种高效的数据库高可用性解决方案,不仅能够提供数据的异步复制,还能够在网络条件不理想的情况下保持高效的通信。随着技术的不断进步,RHAC将继续为企业的数据安全和业务连续性提供强有力的支持。感谢您的阅读。

相关文章
|
3天前
|
存储 数据库
快速搭建南大通用GBase 8s数据库SSC共享存储集群
本文介绍如何GBase8s 数据库 在单机环境中快速部署SSC共享存储集群,涵盖准备工作、安装数据库、创建环境变量文件、准备数据存储目录、修改sqlhost、设置onconfig、搭建sds集群及集群检查等步骤,助你轻松完成集群功能验证。
|
1天前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
2月前
|
存储 缓存 关系型数据库
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
在云原生存算分离架构下,多计算集群的实现从技术方案上看似乎并不存在过多难题。但从产品的角度而言,具备成熟易用的多计算集群能力且能运用于用户实际业务场景中,还有较多核心要点需要深度设计
阿里云数据库 SelectDB 多计算集群核心设计要点揭秘与场景应用
|
3月前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
44 1
|
6月前
|
SQL 物联网 数据挖掘
StarRocks:从概念到应用的下一代分析型数据库
在大数据时代,企业对数据处理的需求日益增长,特别是在实时数据分析方面。StarRocks 是一种新兴的分布式关系型数据库,专为快速且高并发的实时分析设计。本文将从 StarRocks 的基本概念入手,逐步深入到其应用层面,探讨这一技术如何在现实世界中发挥作用。
292 1
|
6月前
|
SQL 关系型数据库 分布式数据库
西电数据库实验二:XDSQL与PolarDB对比实验
实验二 XDSQL与PolarDB对比实验 姓名:贾瑞  学号:21009201172
|
NoSQL Cloud Native 关系型数据库
一张图读懂阿里云数据库架构和配置选择
一张图读懂阿里云数据库架构和配置选择,阿里云数据库大全
851 1
|
SQL 安全 JavaScript
【数据库视频】自动化概述
【数据库视频】自动化概述
|
6月前
|
机器学习/深度学习 关系型数据库 分布式数据库
配置 madlib for PolarDB 实现数据库机器学习功能
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB结合madlib, 让PolarDB具备机器学习功能.mad...
98 0
|
存储 SQL 运维
新型数据库TIDB简介
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,这里从整体架构与MySQL的兼容性等方面进行了介绍
4763 0
新型数据库TIDB简介
下一篇
无影云桌面