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

原文链接:https://www.gbase.cn/community/post/4725

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

今天,我们将探讨南大通用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集群的部署十分相似。

安装GBase 8s

首先,我们需要分别在主节点和辅节点安装GBase 8s 数据库。安装过程也不做赘述。

注意:主节点安装完需要初始化实例,辅节点不初始化实例!!!

修改主节点的sqlhosts文件和配置文件

主节点完成初始化实例之后,我们需要修改onconfig文件;

SERVERNUM和DBSERVERNUM 可以不做修改(只要保证主节点和辅节点不一样即可),

剩下三个参数初始化之后都是默认值,需要我们进行修改。其中DRAUTO是控制故障转移的参数,当主节点发生故障的时,辅节点怎么成为主节点就靠这个参数来控制。参数详细信息可看下表:

修改完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 9088rhac onsoctcp 192.168.1.2 9088

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

修改辅节点的配置文件和profile文件

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

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:00shared 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/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.1    prim192.168.1.2    rhac

修改完 /etc/hosts 文件之后,修改 .rhosts 文件,在gbasedbt用户家目录下新建.rhosts 文件,主节点和辅节点在文件中互相添加对方的主机名和互信用户gbasedbt。

[gbasedbt@hac~]$ cat .rhosts prim gbasedbthac  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:00On-Line -- Up 00:00:47 -- 674664 Kbytes

Primary Server:prim

Current Log Page:7,4081Index page logging status: Enabled

Index page logging was enabled at: 2023/11/21 10:39:46Server 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:00shared 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:00gbasedbt@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:00Fast 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:00Fast 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:46Server ACKed Log    Supports    Status      (log, page)  Updates

rhac  7,4092      No          ASYNC(RSS),Connected,Active

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

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

原文链接:https://www.gbase.cn/community/post/4725

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容