华为高斯数据库(GaussDB
)是目前国产数据库中综合实力比较靠前的数据库之一。高斯数据库有单机开源版openGauss
和企业版(包括集中式和分布式)。本文主要分享GaussDB
企业版在普通服务器上部署的过程和原理简介。初次接触,困难较多。个人观点,仅供参考。如有不当,欢迎留言。
部署准备
企业版软件下载路径
华为官网产品非常丰富,包罗万象,数据库只是其中一款产品。加上还有华为云网站和相关产品,导致搜索GaussDB
产品,很难找到正确的地址。这里就直接发地址信息如下:
https://support.huawei.com/carrier/navi?coltype=software#col=software&path=PBI1-253383977/PBI1-23710112/PBI1-23710137/PBI1-251517148
打开这个地址时会要求先登录华为support
网站,需要注册一个账号。然后普通的账户没有权限下载,需要升级为“合作方”账户。登录后,网站上方会有“账户升级”入口。需要有华为商务团队引导。
打开网站后页面如下:
这些版本是 GaussDB 企业版私有云部署的版本,是基于 PG 内核修改的那个版本(另外还有 GaussDB DWS 版本以后有机会再看)。我是测试就选择推荐的最新版本。点进去后,页面如下:
每个版本还分两个类型:轻量化和HCS
。这也是容易疑惑的地方。有些概念参考网友解释记录如下:
-
HC(Huawei Cloud)
:指华为公有云,使用特点是用华为的机房以及华为的运维服务。 -
HCS(Huawei Cloud Stack)
:指华为私有云技术栈(云底座),使用特点是客户的机房以及华为的技术栈以及华为的运维服务。
GaussDB
企业版支持在HCS
上部署,也支持独立部署(不依赖云底座),后者就叫轻量化部署。轻量化部署类型的软件看起来非常多,主要是这里面含有了 GaussDB
的运维管控平台TPOPS
(OLTP OPS
的简称)、数据迁移产品DRS
。这些软件都要下载,下载使用华为云专用下载客户端ICS
。
ICS
从官网下载的软件包非常多,都是有用的。很多软件包都是压缩包文件,里面还有更详细的软件包,软件包虽然非常多,但是在下面的部署文档里都有详细说明。
除了软件还要下载对应版本的 GaussDB
轻量化部署文档:
后面的部署过程完全参考这个文档。这个文档的质量非常高。
部署方案
GaussDB
的部署方案也非常丰富,根据客户需求来。这里包括 TPOPS
和客户GaussDB
的部署方案。简单来说主要考虑点就是客户机房特点和高可用容灾需求。严格来说TPOPS
的部署方案跟它要管理的GaussDB
的部署方案也有一定关系。本文暂且只讨论TPOPS
的部署方案。
运维平台 TPOPS
的部署方案支持单机房部署和同城双机房部署。
-
单机房一主两备部署。
推测如果是测试,一台物理机也够了,不要高可用能力。生产环境肯定要三台服务器才有完整的高可用能力。之所以是三台的原因估计是因为TPOPS
的元数据库也是GaussDB
,其高可用能力需要三副本(一主两备)才行。
-
同城双机房部署
这个部署架构下依然是三台服务器,区别是有一台服务器部署到同城备机房了。这种架构下如果主机房故障了,元数据库的高可用怎么实现。推测 GaussDB 的主备复制有两种技术:一是类似 Paxos
一致性协议,一种是Quorum
复制协议。
这次测试我只有一台虚拟机用于TPOPS
部署。
部署资源要求
官方文档要求部署服务器资源是8C64G
,能管控 60 个主机(节点)。这个要求对于普通玩家来说太高了,我勉强凑足 60G 内存虚拟机先试一下,后期再看怎么精简部署资源要求。
要精简资源就得先了解部署对资源的使用特点。TPOPS
是由多个产品组件协同工作。为了方便部署,这些组件除了元数据库外都使用Docker
容器技术部署。容器内应用的相关目录映射到宿主机上。在部署过程中有下面几个目录比较特别。
-
/data/docker-service
: 安装工具包解压缩的推荐目录。部署的运行命令是一个Shell
脚本:appctl.sh
。 -
/opt/cloud
:TPOPS
主程序文件公共目录。 -
/opt/cloud/logs
:TPOPS
各个服务组件的日志目录。用于分析主程序安装日志以及各个服务组件安装日志。 -
/opt/GaussDB
:TPOPS
元数据库软件和数据目录。为了性能最大化,这个目录建议使用独立的文件系统。 -
/opt/sftphome
:sftp
软件服务工作目录,TPOPS
会使用sftp
在管理平台和数据库节点之间传输软件包。 -
/opt/docker
:docker
服务工作和数据存储目录。不过大部分服务组件都有做卷映射,实际数据并不在这个路径下。 -
/opt/influxdb
:TPOPS
存储监控告警的数据库(influxdb
)工作目录。 -
/opt/backup
:备份用的路径,暂时没有用到。
DRS
是用于数据迁移的,暂时不用部署。相关目录就不提了。
部署账户
TPOPS
的部署过程中会在操作系统里创建相关账户。这里信息复制自部署文档。需要提前确保账户名没有被使用。
账户名 | 说明 |
|
操作系统权限用户。登录 |
|
启动微服务进程的用户,可在安装配置文件 |
|
元数据库使用的操作系统用户。 |
|
SFTP服务用户。 |
|
时序数据库InfluxDB使用的操作系统用户。 |
操作系统设置
GaussDB
的部署对主机也有设置要求,下面只是简述,要求如下:
-
时区要求是
UTC
时区。kylin
系统默认安装的时区是CST,+0800
需要修改掉。 -
时间源和同步设置。推荐用
chrony
同步时间。 -
配置
yum
源。 -
配置
zypper
源。 -
关闭防火墙。
正式部署
上传软件包
默认部署时工作目录使用/data/
。
-
解压缩安装包
DBS-docker-service_*_all.tar.gz
到目录/data
。
tar -zxvf DBS-docker-service_24.1.31.2024052916541361_all.tar.gz -C /data
-
上传以下安装包到目录
/data/docker-service/pkgs
下。
软件包名 | 软件包说明 |
DBS-MetaDB_Kylin_Centralized_*.tar.gz |
元数据库内核包 |
DBS-GaussDB-Server_.tar.gz DBS-Platform-Server.tar.gz DBS-GaussDBConsole-Server*_.tar.gz |
微服务包 |
GaussDB_OS_PATCH_.zip DBS-tools__all.tar.gz |
实例安装包 |
编辑配置文件
配置文件里会有部署的服务器信息。
cd /data/docker-service/config
vi user_edit_file.conf
[user_edit]
ssh_port = 22
gauss_path = /opt/gaussdb # 元数据库安装目录(不能在/home目录下)
node1_ip = 10.0.0.68 # 节点1本机IP地址(执行节点IP地址)
influxdb_install_ip1 = 10.0.0.68 # InfluxDB安装节点1
sftp_install_ip1 = 10.0.0.68 # SFTP安装节点1
main_path = /opt/cloud # 微服务运行目录, 目录可自定义,仅支持自定义第一级目录,二级目录cloud不允
许修改
node1_ip2 = 10.0.0.68 # 节点1可以和GaussDB实例地址通信的IP地址(执行节点可以和GaussDB实例通信的
IP地址,要求可以和GaussDB实例SSH通以及Ping通)
log_path = /opt/cloud/logs # 日志目录, 目录可自定义,仅支持自定义第一级目录,二级目录cloud及之后目
录不允许修改
sftp_path = /opt/sftphome # SFTP数据目录, 目录可自定义,仅支持自定义第一级目录,二级目录sftphome
不允许修改
influx_path = /opt/influxdb # InfluxDB数据目录,需要保证influxDB_install_ip1以及influxDB_install_ip2节点
InfluxDB的父目录都有InfluxDB用户的可执行权限(如遍历父目录,对目录执行chmod a+x /directory_1/
directory_2),目录可自定义,仅支持自定义第一级目录,二级目录influxdb目录不允许修改
docker_path = /opt/docker # Docker数据目录, 目录可自定义,仅支持自定义第一级目录,二级目录docker
不允许修改,如果用户环境已安装Docker,则以用户配置为准,该项配置不生效。
backup_path = /opt/backup # 备份数据目录, 目录可自定义,仅支持自定义第一级目录,二级目录backup不
允许修改
service_group_id = 1010 # Service用户ID(需未被使用)
service_user_id = 1010 # Service用户组ID(需未被使用)
uninstall_all = yes # 卸载时需将参数值配置成yes,默认为no
use_cgroup =&nb