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
。

GaussDB
轻量化部署文档:
部署方案
GaussDB
的部署方案也非常丰富,根据客户需求来。这里包括
TPOPS
和客户
GaussDB
的部署方案。简单来说主要考虑点就是客户机房特点和高可用容灾需求。严格来说
TPOPS
的部署方案跟它要管理的
GaussDB
的部署方案也有一定关系。本文暂且只讨论
TPOPS
的部署方案。
TPOPS
的部署方案支持单机房部署和同城双机房部署。
单机房一主两备部署。
TPOPS
的元数据库也是
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
的部署过程中会在操作系统里创建相关账户。这里信息复制自部署文档。需要提前确保账户名没有被使用。
账户名 | 说明 |
| 操作系统权限用户。登录 |
| user_edit_file.conf 中指定用户 service_group_id 、 service_user_id ,默认值为1010。若已被占用,可修改为其他值。配置文件默认路径 /data/docker-service/config/user_edit_file.conf 。 |
| |
| |
|
操作系统设置
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 = no # 是否使用cgroup限制资源(需要和DRS合部时,配置为yes,其余场景配置为no)复制
IP
。一般客户生产机器可能有至少两个网段,一个管理网段,一个业务网段。从配置文件看
TPOPS
可以部署在管理网段,业务高斯数据库部署在业务网段,
TPOPS
还有个业务网段
IP
跟业务数据库通信。
前置检查
/data/docker-service/appctl.sh
,部署前需要执行前置检查(
precheck
)。
[root@gauss68 docker-service]# sh appctl.sh precheck
*** CHECK BASE SETTINGS ***
check python | OK
check jdk | OK
check net tools | OK
check expect | OK: Installed expect.
check secc | OK: Installed secc.
check libcgroup | OK: Installed libcgroup.
check dos2unix | OK: Installed dos2unix.
check custom dir | OK
check install mode | OK: Single mode.
check IP format | OK
check net condition | OK
start check node authentication
check node authentication success.
Now scp precheck files...
scp precheck files done
Now doing precheck for 10.0.0.68
[WARNING]-[check_users]===>[10.0.0.68: [service sftpservice] will be used, if the users already exists, we will delete the user before creating it.]
Precheck all completed.
[root@gauss68 docker-service]#复制
LANG
设置、可用内存、账户上等等。
正式部署
cd /data/docker-service
sh appctl.sh install复制
/opt/cloud/logs/deploye/install.log
。可以一边部署一边查看日志。部署时间跟服务器能力有关。
16C64G
虚拟机,部署大概用了 25 分钟左右。如果虚拟机配置很差(比如说 CPU),部署过程中可能有些微服务检查会不通过导致部署失败。部署如果失败了,从日志里可以看到更详细的部署信息和失败原因。
[root@gauss68 docker-service]# sh appctl.sh install
*** CHECK BASE SETTINGS ***
check python | OK
check jdk | OK
check net tools | OK
check expect | OK: Installed expect.
check secc | OK: Installed secc.
check libcgroup | OK: Installed libcgroup.
check dos2unix | OK: Installed dos2unix.
check custom dir | OK
check install mode | OK: Single mode.
check IP format | OK
check net condition | OK
start check node authentication
check node authentication success.
[WARNING]The non-standard single-node deployment mode does not support the high reliability mode and has the risk of single point failure. Are you sure you want to continue the installation? (y/n):y
*** UNTAR SERVICE ***
untar service | OK
*** BUILD MICRO SERVICE IMAGES ***
[NOTICE] The packages has already been distributed, skip
*** DISTRIBUTE PACKAGES ***
[NOTICE] The packages has already been distributed, skip
[NOTICE] If you want to redistribute the packages, please remove /data/docker-service/config/FIRST_DISTRIBUTE_ON.
*** PREPARE ***
10.0.0.68 | OK
Now doing precheck for 10.0.0.68
[WARNING]-[check_users]===>[10.0.0.68: [service sftpservice] will be used, if the users already exists, we will delete the user before creating it.]
Precheck all completed.
Start to init manifest...
init manifest successful for 10.0.0.68.
======== current level: patch ========
patch | complete
base_env | complete
======== current level: base_enviornment ========
docker | complete
InfluxDB | complete
sftp | complete
gaussdb | complete
======== current level: CommonbaseData ========
common-base | complete
======== current level: PlatformData ========
platform-data | complete
======== current level: Zookeeper ========
zookeeper | complete
GaussDB-feature-data | complete
GaussDB-data | complete
======== current level: Kafka ========
kafka | complete
======== current level: docker_service ========
common-service | complete
monitor-service | complete
rds-ha-admin | complete
resource-manager | complete
workflow | complete
======== current level: gaussdb_service ========
auth | complete
gaussdb-console | complete
luban | complete
ots | complete
GaussDB-open-api | complete
GaussDB-instancemanager | complete
GaussDB-backupmanager | complete
Installation progress [24/24] ==> 100.00%
Upload sftp packages done for 10.0.0.68
请登录「云数据库GaussDB管理平台-任务中心」查看安装包上传任务状态
Welcome to TPOPS:
https://{EIP}:8443/gaussdb/#/login
EIP: Elastic IP address of any TPOPS node复制
cd /data/docker-service && sh appctl.sh health_check
start check node authentication
check node authentication success.
----------------------------------------------------------------------------------------------------
ip | Component | Component Status | HTTP Code | Details
----------------------------------------------------------------------------------------------------
10.0.0.68 | docker | OK | 200 | -
10.0.0.68 | influxdb | OK | 200 | -
10.0.0.68 | sftp | OK | 200 | -
10.0.0.68 | MetaDB | OK | 200 | -
10.0.0.68 | zookeeper | OK | 200 | -
10.0.0.68 | kafka | OK | 200 | -
10.0.0.68 | console | OK | 200 | -
10.0.0.68 | commmon-service | OK | 200 | -
10.0.0.68 | rds-ha-admin | OK | 200 | -
10.0.0.68 | resource-manager | OK | 200 | -
10.0.0.68 | workflow | OK | 200 | -
10.0.0.68 | GaussDB-instancemanager | OK | 200 | -
10.0.0.68 | GaussDB-open-api | OK | 200 | -
10.0.0.68 | GaussDB-backupmanager | OK | 200 | -
10.0.0.68 | monitor-service | OK | 200 | -
10.0.0.68 | auth | OK | 200 | -
10.0.0.68 | luban | OK | 200 | -
10.0.0.68 | ots | OK | 200 | -
----------------------------------------------------------------------------------------------------复制
health_check
参数,那么修改
appctl.sh
文件,增加
health_check
参数。
vim +414 appctl.sh
allow_actions=("upgrade" "rollback" "upgrade_all" "install" "uninstall_all" "uninstall_single" "cleanup_single" "cleanup_all" "uninstall_service" "precheck" "prepar e" "distribute" "repair" "health_check")复制
TPOPS 介绍
TPOPS
登录地址:
https://{EIP}:8443/gaussdb/#/login
,换我的环境就是
https://10.0.0.68:8443/gaussdb/#login
。登录初始用户是
admin
,初始密码是
Gauss_246
,第一次登录会要求修改初始密码。

TPOPS
首页
GaussDB 安装
GaussDB
实例安装向导。基本上安装之前也是需要先添加主机到对应的
AZ
里。部署的方案有多种,有主备版、分布式版。

GaussDB
主备版本

GaussDB
分布式版本
GaussDB
的架构原理,这次就不探索了。
TPOPS 功能浏览
菜单
TPOPS
是一个运维平台,对实例运维、监控巡检、容灾、备份等运维功能重点展示。。运维任务采用的是任务流机制,调用的是部署时的微服务
workflow
。
任务中心
对于每个任务可以查看任务详情,任务异常的时候可以做部分介入处理(修改任务上下文、重试任务或跳过任务)。

TPOPS
任务详情
监控巡检

TPOPS
监控

GaussDB
实例,所以监控和巡检都没有数据。
告警平台
告警详情里会给出 一些告警原因分析、处理建议等。
参数模板
GaussDB
的参数非常多,不同部署方案下参数选择也不尽相同,所以
TPOPS
默认提供了一些参数模板。
DBMind
实例

TPOPS
的
DBMind
实例管理
DBMind
作为
GaussDB
数据库的一部分,通过集成先进的
AI
技术,为数据库提供了自动化监控、预警、优化和故障恢复等能力。通过
DBMind
,用户可以轻松发现数据库中的问题,实现秒级的问题根因分析,并自动给出优化建议。此外,
DBMind
还可以自动预测数据库的性能瓶颈,提前进行资源调整,确保数据库的稳定运行。
平台管理
license
、平台用户、审计中心、告警模板和系统告警配置等、SSL 证书等。

TPOPS
平台管理
总结
GaussDB
运维平台部署体验还是很顺畅的。
TPOPS
平台架构采取了微服务的设计加
docker
容器的技术,使得对部署资源最低要求不低(
8C64G
)。微服务的架构也让人看到产品升级策略会相对比较灵活。个别组件的问题修复可以单独升级。并且整体部署架构扩容也很方便。如果是管理上千个数据库实例节点,可以将多个微服务分开部署,推测不管是同机房还是跨机房部署都能很好适应。部署平台使用的是
shell
语言,微服务推测使用的
java
、
tomcat
和
docker
技术,里面有很多
devops
的实践经验,因此对客户自身
devops
建设也有一定参考价值。平台的使用有一定技术门槛,都是常见的基础开发运维技术。熟悉
shell
和微服务技术的运维也可以修改部署脚本,定制化部署或升级。
openGauss
的。所以深入使用很多东西还需要自己探索。