【GBase 8c V5_3.0.0 分布式部署(单机安装)】

ops/2024/9/19 11:50:07/ 标签: postgresql, 数据库

GBase 8c数据库分布式形态采用share nothing的分布式架构,计算节点和存储节点分离。节点间通过高速网络进行通信,所有节点都有主从互备,确保系统的极致高可用。

本文主要包含GBase 8c V5_3.0.0 分布式部署(单机安装)的简单流程,供测试。

一、架构介绍

image.png


GBase 8c分布式数据库实际包含CN、DN、GTM和HA管理组件,各个组件具体介绍如下:

CN:协调器

CN:协调器,采用完全对等的部署方式。对外提供接口,负责进行SQL解析和优化、生成执行计划,并协调数据节点进行数据查询和写入。在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据;在部署上,CN多个节点完全对等的部署方式,每个节点在同一时间对外都提供相同的数据库视图,所以我们的CN节点高可用可以根据实际的业务需求,部署1个或多个都可以,多个CN节点可以部署在同机房、同城、异地都可以。

DN:数据节点

DN:数据节点,采用主备的高可用架构,主备之间可以配置同步或异步方式。用于处理存储本节点相关的元数据,每个节点还存储它所在的业务数据的分片。在功能上,DN节点负责完成执行协调器节点分发的执行请求,完成数据存储和本地数据查询和写入;在部署上,DN节点每个高可用组采用主从备份的方式,可以部署单主、一主一从以及一主多从的部署方式均可,主从之间可以配置为同步的备份方式也可以配置为异步的备份方式,也可以在一个高可用组内同时存在同步和异步的节点,一般同机房同城的节点之间采用同步的备份方式,异地的节点之间采用异步的备份方式。

GTM:全局事务管理器

GTM:全局事务管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式。主要是做分布式事务,负责生成并维护全局时间戳,保证集群数据一致性。在部署上,GTM的与DN节点的部署类似,也是一主多从的备份方式,节点间可以采用同步的备份方式也可以采用异步的备份方式。

HA Center / DCS(等效于ETCD)

HA Center(等效于ETCD):集群状态管理器,采用Raft的复制协议。存储各个节点的高可用状态,负责在故障情况下判断集群各个节点状态。

GHA Server(等效于patroni)

GHA Server(等效于patroni):集群管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式。用以管理整个集群各个节点的高可用状态(主备、死活等)。GHA Server的主备信息与DN类似,也是将leader信息存在HA Center上,谁先写谁就是主,需要周期更新,如果超过TTL没更新就会删掉leader信息,其他节点去写就能写进去就变成leader了。

具体在server服务器上体现的是高可用进程:
gha_server是主要运行在管理节点的服务进程,管理整个集群节点间进程和集群状态,具体工作原理如下:

  • rpc:消息通信,gha_ctl所有消息都是通过rpc发给gha_server,gha_server处理完之后通过rpc发给gha_agent,gha_agent返给gha_server再返出去
  • arbiter:决策进程,是gha_server最繁忙的进程。 用来决策节点死活、断网等。
  • leader checker:gha_server本身是主备的架构,为了防止出现双主的情况,做了主的检测。leader ping所有的ha center节点,如果都失败说明孤岛了,就自己把leader让出来。
  • cluster_info_publisher:网络拓扑信息通信,周期发给gha_agent。
  • dcs_updater:因为gha_server内部存的状态信息会频繁变化,有时候往ha center上写会写失败,写失败就放到dcs_updater里面置个标志位,接着往下写(为了保证ha center上的状态都是最新的是正确的)

GHA Agent

GHA Agent跟着每个CN和DN上都有,作为代理,接收GHA Server的消息并处理。

gha_agent运行在每个节点上,执行由gha_server进程下发或主动监控上报消息给gha_server,具体工作原理如下:

  • rpc:和gha_server进行消息通信
  • reporter:周期查询数据库状态,会周期(3秒)更新给gha_server的arbiter。
  • state reporter:取自己节点的pgxcnode表周期更新给gha_server,gha_server跟自己的网络拓扑对比,发现跟自己的网络拓扑不一样就做查缺补漏
  • ha state reporter:为了防止出现DN双主,现在的高可用系统在判断DN主坏掉的过程是gha_server收不到gha_agent的消息了。但是如果是断网的情况,就会有主备倒换的误操作(DN主没坏,只是跟gha_server通不上信了),就会双主。为了防止出现双主的情况, ha state reporter用于DN备机与DN主机周期通信,需要半数以上DN备机判断DN主失联才会触发主备倒换。
  • leader checker:DN或者GTM的主发现自己进入孤岛,就会自动把自己的leader让出来并重启。

部署一套GBase 8c单机分布式环境至少需要以下节点:

  • 1个 GHA_SERVER 节点
  • 1个 DCS 节点
  • 1个 GTM 节点
  • 1个 CN 节点
  • 1个 DN 节点(2个 DN 节点才能体验到数据分布式特性)

二、准备环境

1.用户配置

groupadd gbase
useradd -m -d /home/gbase gbase -g gbase
passwd gbasevi /etc/sudoers
//按键“i”进入编辑模式,在打开文件如下位置,增加gbase用户及权限:## Allow root to run any commands anywhere
root ALL=(ALL) ALL
gbase ALL=(ALL) NOPASSWD:ALL

2.配置系统内核信号量参数

//配置系统内核参数,避免信号量不足无法初始化。编辑系统内核的配置文件,修改参数:echo "kernel.sem = 40960 2048000 40960 20480" >> /etc/sysctl.conf//并执行sysctl -p使配置生效sysctl -p

3.互信配置

当前分布式版本中,虽然我们部署在一台服务器上,但因为部署安装包的过程中默认会使用 ssh 协议进行安装,因此我们仍需要配置单台服务器的ssh免密互信。

[root@gbase8c ~]$ su - gbase
[gbase@gbase8c ~]$ mkdir ~/.ssh
[gbase@gbase8c ~]$ chmod 700 ~/.ssh
[gbase@gbase8c ~]$ ssh-keygen -t rsa//将公钥文件上传至本机(此操作需输入gbase用户密码),本机IP请根据实际情况修改。
[gbase@gbase8c ~]$ ssh-copy-id gbase@IP

4.调整 overcommit 参数

Overcommit指的是进程能够申请到的内存,可能比实际可用内存大。这是Linux为了提高内存的利用率,以便能够运行更多的程序。在这种情况下,有的进程分配内存可能会失败,而有的进程则可能被操作系统kill掉。此处机制是由 vm.overcommit_memory参数进行控制,该参数有3个可选值:

  • vm.overcommit_memory = 0:允许 overcommit,申请内存的时候根据⼀定的算法估算可用的内存量, 拒绝明显无效的请求(比如⼀次malloc的内存超过了系统总内存)
  • vm.overcommit_memory = 1:允许 overcommit,申请内存的时候不进行限制
  • vm.overcommit_memory = 2:不允许 overcommit

一般默认的vm.overcommit_memory参数为0。测试环境可以将此值调节成1,来设定总是允许申请的内存超过物理内存大小。
调整方式:

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p

三、部署分布式数据库

1、上传安装包并解压

[root@gbase8c ~]$ su - gbase
[gbaset@gbase8c ~]$ mkdir /home/gbase/gbase_package

上传安装包到/home/gbase/gbase_package 目录下,并进行解压

tar -xf GBase8cV5_S3.0.0B114_centos7.8_x86_64.tar.gz
tar -xf GBase8cV5_S3.0.0B114_CentOS_x86_64.tar.bz2

2、编辑 yml 配置文件

编辑gbase.yml

 cp /home/gbase/gbase_package/gbase.yml /home/gbase
vim /home/gbase/gbase.yml

例如,我们在一台服务器上部署1个GTM、1个CN、3个DN节点以及其他高可用相关节点,根据安装环境修改配置文件中的host参数等信息。配置文件内容如下:

gha_server:- gha_server1:host: 172.20.10.8port: 20001
dcs:- host: 172.20.10.8port: 2379
gtm:- gtm1:host: 172.20.10.8agent_host: 172.20.10.8role: primaryport: 6666agent_port: 8001work_dir: /home/gbase/data/gtm
coordinator:- cn1:host: 172.20.10.8agent_host: 172.20.10.8role: primaryport: 5432agent_port: 8003work_dir: /home/gbase/data/coord/cn1
datanode:- dn1:- dn1_1:host: 172.20.10.8agent_host: 172.20.10.8role: primaryport: 15432agent_port: 8005work_dir: /home/gbase/data/dn1/dn1_1- dn2:- dn2_1:host: 172.20.10.8agent_host: 172.20.10.8role: primaryport: 15442agent_port: 8006work_dir: /home/gbase/data/dn2/dn2_1- dn3:- dn3_1:host: 172.20.10.8agent_host: 172.20.10.8role: primaryport: 15452agent_port: 8007work_dir: /home/gbase/data/dn3/dn3_1
env:# cluster_type allowed values: multiple-nodes, single-inst, default is multiple-nodescluster_type: multiple-nodespkg_path: /home/gbase/gbase_packageprefix: /home/gbase/gbase_dbversion: V5_S3.0.0B114user: gbaseport: 22third_ssh: false
# constant:
#   virtual_ip: 100.0.1.254/24

3、部署分布式数据库

通过安装目录script工具库下的gha_ctl工具进行安装部署,执行命令:

[gbase@gbase8c ~]$ /home/gbase/gbase_package/script/gha_ctl install -c gbase -p /home/gbase/
  • -c参数:指定数据库名称,为可选字段。缺省默认值gbase。
  • -p参数:指定配置文件保存路径,为可选字段。缺省默认值/home/gbase。

安装过程报了缺少 patch包的问题,yum install -y patch后解决

image.png

我因为本地内存配置太小起不来库,因此手动调整gtm、cn、dn节点的内存参数,手动拉起数据库
最后启动成功的结果显示
 

image.png


部署成功后,使用gha_ctl monitor查看节点运行情况(跟dcs的地址和端口)

[gbase@gbase8c ~]$ gha_ctl monitor -c gbase -l http://172.20.10.6:2379 -H

image.png

登录cn节点

image.png

cn的数据库,默认postgres数据库下的schema还是挺多的。

image.png


http://www.ppmy.cn/ops/110919.html

相关文章

AI创意引擎:优化Prompt提示词的高效提问技巧

AI内容创作的精髓:提示词(Prompt) 在AI领域中,提示词(Prompt)是与模型沟通的关键工具。提示词不仅决定了AI生成内容的方向和质量,还在优化模型输出、提升用户体验中扮演着至关重要的角色。因此…

【pgAdmin4】使用psql命令行执行查询时,使用占位符(:v1)传入参数

目录 0.环境 1.相关知识点 2.举例 3.详细操作 0.环境 windows11 pgAdmin4 8.10 1.相关知识点 占位符如何理解? SQL语句中的占位符是一种用于代表参数的特殊符号,通常以"?"或":"开头。它们被用来构建可重用的SQL语句&#xff0…

Grafana 汉化

点击 Home -> Administration 点击 Default preferences 点击 中文(简体)后点击 Save 即可

遥感技术在生态系统碳储量、碳收支、碳排放、碳循环以及人为源排放反演等领域的技术发展,实践角度解决遥感技术在生态、能源、大气等领域的碳排放监测及模拟问题

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点,已成为监测全球碳盘查不可或缺的技术手段,卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。本教程的目的就是梳理碳中和与碳达峰对卫星遥感的现实需求,系统总结遥感技术在生态系…

唯徳知识产权管理系统 DownloadFileWordTemplate 文件读取漏洞复现

0x01 产品简介 唯徳知识产权管理系统,由深圳市唯德科创信息有限公司精心打造,旨在为企业及代理机构提供全方位、高效、安全的知识产权管理解决方案。该系统集成了专利、商标、版权等知识产权的全面管理功能,并通过云平台实现远程在线办公,提升工作效率。是一款集知识产权申…

Radware Alteon 负载均衡-基于URL Filetype的七层负载均衡

作者:Xiaolei Ren Radware Alteon作为一款高性能的负载均衡器,其基于URL Filetype的七层负载均衡功能为众多企业提供了灵活、高效的解决方案。 该案例实现如下需求:当客户端访问服务器时,默认访问10.200.1.100,在ht…

快手自研Spark向量化引擎正式发布,性能提升200%

Blaze 是快手自研的基于Rust语言和DataFusion框架开发的Spark向量化执行引擎,旨在通过本机矢量化执行技术来加速Spark SQL的查询处理。Blaze在快手内部上线的数仓生产作业也观测到了平均30%的算力提升,实现了较大的降本增效。本文将深入剖析blaze的技术原…

Anaconda 安装与使用教程

Anaconda 安装与使用教程 介绍 Anaconda 是一个用于科学计算的 Python 和 R 的发行版,它包含了众多流行的科学计算、数据分析、机器学习等领域的库。本教程旨在帮助初学者快速上手 Anaconda,并学会如何使用其管理环境以及安装包。 第一步:…

Linux下的gcc与gdb

目录 Linux下的gcc与gdb 代码编译与链接 函数库 gdb介绍和安装 gdb基本使用指令 示例代码 debug模式和release模式 基本指令 进入gdb调试与显示调试代码 创建断点与删除断点 启用和禁用断点 执行代码 逐语句和逐过程调试 断点跳转 显示指定变量以及对应内容 打印变量的值 执行到…

代码随想录算法day30 | 动态规划算法part03 | 01背包问题 二维 ,01背包问题 一维,416. 分割等和子集

正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,但基本理解的都不够深入。 背包问题,力扣上没有原题,题目是在卡码网找的 动态规划:01背包理论基础 本…

简单易懂的方式来解释机器学习(ML)和深度学习(DL)的区别与联系

让我们从多个角度出发,用一些简单易懂的方式来解释机器学习(ML)和深度学习(DL)的区别与联系。 1. 概念上的区别 机器学习 想象一下你在教一个小孩子如何分辨猫和狗。你可能会给这个孩子看很多猫和狗的照片&#xff…

Unity-Time类

目录 Time.timeScale Time.deltaTime Time.unscaledDeltaTime Time.time Time.frameCount Time.fixedDeltaTime Time.timeScale 时间缩放比例 时间停止 Time.timeScale 0; //回复正常 //Time.timeScale 1; //2倍速 …

VSCode 离线安装中文语言包

1.插件市场 Extensions for Visual Studio family of products | Visual Studio Marketplace 输入: language 在version history里面下载相应的版本,若没有就下载最新的 在下面安装 安装完重启就可以了。 可能会提示的失败: Unable to ins…

【vscode】 快速生成react组件

在VSCode中快速生成React组件的方法主要包括使用内置的代码片段和安装第三方插件。以下是具体的步骤和方法: 使用内置代码片段‌ VSCode支持用户自定义代码片段,你可以通过输入特定的前缀,然后按下Tab键,来快速生成React组件的基…

Cenos7镜像+Docker问题

前言 好用的镜像 阿里 curl -o /etc/yum.repos.d/Centos7-aliyun.repo https://mirrors.wlnmp.com/centos/Centos7-aliyun-x86_64.repo科大 curl -o /etc/yum.repos.d/Centos7-ustc.repo https://mirrors.wlnmp.com/centos/Centos7-ustc-x86_64.repo网易 curl -o /etc/yum…

概率论原理精解【14】

文章目录 拓扑空间拓扑空间映射一、连续映射二、同胚映射三、开映射与闭映射四、其他映射五、映射空间 第一可数空间第一可数性公理第一可数空间的性质例子与反例 邻域基定义性质例子应用 参考文献 拓扑空间 拓扑空间映射 是一个相当宽泛且复杂的话题,因为拓扑空间…

HW蓝队某知名大厂面试题分享

🤟 基于入门网络安全/黑客打造的资源包无偿分享中: 👉黑客&网络安全入门&进阶学习资源包 应急响应流程 1)首先判断服务器资产、影响范围以及严重程度,确认有没有必要将服务器下线隔离,然后根据服务…

基于python+django+mysql+Nanodet检测模型的水稻虫害检测系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

第158天:安全开发-Python-Socket编程反弹Shell分离免杀端口探针域名爆破

前置知识 使用 socket 模块 1. 导入模块 首先,你需要导入 Python 的 socket 模块。 import socket 2. 创建套接字 使用 socket.socket() 函数创建一个新的套接字。这个函数可以接收两个参数:地址族和套接字类型。 地址族(Address Family&…

筑牢网络安全防线:为数字时代保驾护航

《筑牢网络安全防线:为数字时代保驾护航》 一、网络安全:数字时代的关键课题 网络安全在当今数字时代的重要性愈发凸显。2024 年国家网络安全宣传周以 “网络安全为人民,网络安全靠人民” 为主题,深刻体现了网络安全与每个人息息…