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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容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将继续为企业的数据安全和业务连续性提供强有力的支持。感谢您的阅读。

相关文章
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
176 5
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
5月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
555 1
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
201 62
|
2月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
|
6月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
2月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
81 11