首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenTenBase 5.0部署V2

OpenTenBase 5.0部署V2

作者头像
胖头鱼的鱼缸
发布2026-07-02 14:52:50
发布2026-07-02 14:52:50
170
举报

数据库管理-第384期 OpenTenBase 5.0部署V2(20251104)

914fcc7ad57defa7868c3be1ca7fb4f5.jpg
914fcc7ad57defa7868c3be1ca7fb4f5.jpg

没想到吧,前面刚刚吐槽了OpenTenBase 5.0的软件部署,今天我就又来了。在翻查OpenTenBase的Github时,发现最近更新了RPM包,虽然文档对这个RPM包没有任何说明,但还是尝试使用RPM包部署一下。

https://github.com/OpenTenBase/OpenTenBase/releases/tag/v5.0

image.png
image.png

1 RPM包部署

1.1 清理环境

直接重新克隆操作系统。这里做了个调整,把每台机器的CPU从2调整为3(低于3核,GTM将无法绑核)。

1.2 解读RPM包

安装RPM包之前,得先了解下这个包的安装内容与流程。

1.2.1 依赖
代码语言:javascript
复制
dnf deplist opentenbase-5.0-i.x86_64.rpm
image.png
image.png

从依赖可以看到,除了基本需求外,几乎没有外部依赖。

1.2.2 安装内容
代码语言:javascript
复制
rpm -qlp opentenbase-5.0-i.x86_64.rpm
image.png
image.png
image.png
image.png

RPM包会在/usr/local/install下生成软件路径,共生成2410个文件(包含目录)。从文件内容来看,需求的依赖基本包含在其中了。

1.2.3 RPM操作脚本
代码语言:javascript
复制
rpm -q --scripts opentenbase-5.0-i.x86_64.rpm
image.png
image.png

看起来RPM安装过程不会涉及用户创建操作。

1.3 安装RPM

代码语言:javascript
复制
dnf -y install opentenbase-5.0-i.x86_64.rpm
image.png
image.png

1.4 其他操作

主要是根据新生成的文件信息增加环境变量:

代码语言:javascript
复制
su - opentenbase
vim ~/.bash_profile

添加/修改为以下内容:

代码语言:javascript
复制
export OPENTENBASE_HOME=/usr/local/install/opentenbase
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=/lib:/var/lib:/usr/lib:/usr/lib64:$OPENTENBASE_HOME/lib

1.5 一点疑惑

在2.6安装过程中,其他节点的软件是在数据库部署过程中自动分发的,但RPM包会怎样?后面摸索一下。(虚拟机先打个快照)

咨询了一下原厂研发,需要每个节点都部署软件

2 部署数据库组件

组件路径如下:

image.png
image.png

2.1 配置公共参数

代码语言:javascript
复制
mkdir -p /data/opentenbase/global/
cat > /data/opentenbase/global/postgresql.conf.user <<EOF 
listen_addresses = '0.0.0.0'
max_connections = 500
max_pool_size = 65535
shared_buffers = 1GB                    
max_prepared_transactions = 2000
maintenance_work_mem = 256MB
wal_level = logical
max_wal_senders = 64
max_wal_size = 1GB
min_wal_size = 256MB
log_destination = 'csvlog'
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%A-%H.log' 
synchronous_commit = local
synchronous_standby_names = ''
EOF

2.2 部署GTM主

otb01节点执行:

2.2.1 初始化GTM
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/gtm
initgtm -Z gtm -D /data/opentenbase/data/gtm
mkdir /data/opentenbase/data/gtm/gtm_xlog/archive_status	
image.png
image.png
2.2.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/gtm/gtm.conf 

内容如下:

代码语言:javascript
复制
#配置gtm节点名称
nodename = 'gtm_1' 

#允许服务监听范围,*允许监听所有 IP 地址  
listen_addresses = '*' 

#监听端口号
port = 5001

#做为GTM主节点提供服务
startup = ACT
2.2.4 启动GTM
代码语言:javascript
复制
gtm_ctl -Z gtm -D /data/opentenbase/data/gtm start
image.png
image.png
2.2.5 检查GTM状态
代码语言:javascript
复制
gtm_ctl -Z gtm -D /data/opentenbase/data/gtm status -H 127.0.0.1 -P 5001
image.png
image.png

2.3 部署GTM备

otb02节点执行:

2.3.1 初始化GTM
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/gtm
initgtm -Z gtm -D /data/opentenbase/data/gtm
mkdir /data/opentenbase/data/gtm/gtm_xlog/archive_status	
image.png
image.png
2.3.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/gtm/gtm.conf 

内容如下:

代码语言:javascript
复制
#配置gtm节点名称
nodename = 'gtm_2' 

#允许服务监听范围,*允许监听所有 IP 地址  
listen_addresses = '*' 

#监听端口号
port = 5001

#做为GTM备节点提供服务
startup = STANDBY

#配置GTM主节点信息
active_host = '10.10.10.101' 
active_port = 5001
2.3.4 启动GTM
代码语言:javascript
复制
gtm_ctl -Z gtm -D /data/opentenbase/data/gtm start
image.png
image.png
2.3.5 检查GTM状态
代码语言:javascript
复制
gtm_ctl -Z gtm -D /data/opentenbase/data/gtm status -H 127.0.0.1 -P 5001
image.png
image.png

2.4 部署CN01

otb01节点执行:

2.4.1 初始化CN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/cn01
initdb --locale=zh_CN.UTF-8 -U opentenbase -E utf8 -D /data/opentenbase/data/cn01 --nodename=cn01 --nodetype=coordinator --master_gtm_nodename gtm_1 --master_gtm_ip 10.10.10.101 --master_gtm_port 5001
image.png
image.png
2.4.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/cn01/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 30004
pooler_port=30005
include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
代码语言:javascript
复制
vim /data/opentenbase/data/cn01/pg_hba.conf

添加以下内容,实际生产replication/all看配置CN节点IP地址:

代码语言:javascript
复制
host    replication    all    0.0.0.0/0    trust 
host    all            all    0.0.0.0/0    trust

host    all            all    0.0.0.0/0    md5
2.4.3 启动CN
代码语言:javascript
复制
pg_ctl -Z coordinator -D /data/opentenbase/data/cn01 start
2.4.4 检查CN状态
代码语言:javascript
复制
pg_ctl -Z coordinator -D /data/opentenbase/data/cn01 status
image.png
image.png

2.5 部署CN02

otb02节点执行:

2.5.1 初始化CN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/cn02
initdb --locale=zh_CN.UTF-8 -U opentenbase -E utf8 -D /data/opentenbase/data/cn02 --nodename=cn02 --nodetype=coordinator --master_gtm_nodename gtm_1 --master_gtm_ip 10.10.10.101 --master_gtm_port 5001
image.png
image.png
2.5.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/cn02/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 30004
pooler_port=30005
include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
代码语言:javascript
复制
vim /data/opentenbase/data/cn02/pg_hba.conf

添加以下内容,实际生产replication/all看配置CN节点IP地址:

代码语言:javascript
复制
host    replication    all    0.0.0.0/0    trust 
host    all            all    0.0.0.0/0    trust

host    all            all    0.0.0.0/0    md5
2.5.3 启动CN
代码语言:javascript
复制
pg_ctl -Z coordinator -D /data/opentenbase/data/cn02 start
2.5.4 检查CN状态
代码语言:javascript
复制
pg_ctl -Z coordinator -D /data/opentenbase/data/cn02 status
image.png
image.png

2.6 部署DN01主

otb03节点执行:

2.6.1 初始化DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn01
initdb --locale=zh_CN.UTF-8 -U opentenbase -E utf8 -D /data/opentenbase/data/dn01 --nodename=dn01 --nodetype=datanode --master_gtm_nodename gtm_1 --master_gtm_ip 10.10.10.101 --master_gtm_port 5001
image.png
image.png
2.6.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn01/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 40004
pooler_port=40005
include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
代码语言:javascript
复制
vim /data/opentenbase/data/dn01/pg_hba.conf

添加以下内容,实际生产replication/all看配置DN节点IP地址:

代码语言:javascript
复制
host    replication    all    0.0.0.0/0    trust 
host    all            all    0.0.0.0/0    trust
2.6.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn01 start
2.6.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn01 status
image.png
image.png

2.7 部署DN02主

otb04节点执行:

2.7.1 初始化DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn02
initdb --locale=zh_CN.UTF-8 -U opentenbase -E utf8 -D /data/opentenbase/data/dn02 --nodename=dn02 --nodetype=datanode --master_gtm_nodename gtm_1 --master_gtm_ip 10.10.10.101 --master_gtm_port 5001
image.png
image.png
2.7.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn02/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 40004
pooler_port=40005
include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
代码语言:javascript
复制
vim /data/opentenbase/data/dn02/pg_hba.conf

添加以下内容,实际生产replication/all看配置DN节点IP地址:

代码语言:javascript
复制
host    replication    all    0.0.0.0/0    trust 
host    all            all    0.0.0.0/0    trust
2.7.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn02 start
2.7.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn02 status
image.png
image.png

2.8 部署DN03主

otb05节点执行:

2.8.1 初始化DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn03
initdb --locale=zh_CN.UTF-8 -U opentenbase -E utf8 -D /data/opentenbase/data/dn03 --nodename=dn03 --nodetype=datanode --master_gtm_nodename gtm_1 --master_gtm_ip 10.10.10.101 --master_gtm_port 5001
image.png
image.png
2.8.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn03/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 40004
pooler_port=40005
include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
代码语言:javascript
复制
vim /data/opentenbase/data/dn03/pg_hba.conf

添加以下内容,实际生产replication/all看配置DN节点IP地址:

代码语言:javascript
复制
host    replication    all    0.0.0.0/0    trust 
host    all            all    0.0.0.0/0    trust
2.8.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn03 start
2.8.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn03 status
image.png
image.png

2.9 部署DN01备

otb04节点执行:

2.9.1 生成备DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn01
pg_basebackup -p 40004 -h 10.10.10.103 -U opentenbase -D /data/opentenbase/data/dn01 -X f -P -v
chmod 700 /data/opentenbase/data/dn01
image.png
image.png
2.9.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn01/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 50004
pooler_port=50005
代码语言:javascript
复制
vim /data/opentenbase/data/dn01/recovery.conf

调整以下内容:

代码语言:javascript
复制
standby_mode = on 
primary_conninfo = 'host = 10.10.10.103 port = 40004 user = opentenbase application_name = s1'
2.9.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn01 start
2.9.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn01 status
image.png
image.png

2.10 部署DN02备

otb05节点执行:

2.10.1 生成备DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn02
pg_basebackup -p 40004 -h 10.10.10.104 -U opentenbase -D /data/opentenbase/data/dn02 -X f -P -v
chmod 700 /data/opentenbase/data/dn02
image.png
image.png
2.10.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn02/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 50004
pooler_port=50005
代码语言:javascript
复制
vim /data/opentenbase/data/dn02/recovery.conf

调整以下内容:

代码语言:javascript
复制
standby_mode = on 
primary_conninfo = 'host = 10.10.10.104 port = 40004 user = opentenbase application_name = s1'
2.10.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn02 start
2.10.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn02 status
image.png
image.png

2.11 部署DN03备

otb03节点执行:

2.11.1 生成备DN
代码语言:javascript
复制
mkdir -p /data/opentenbase/data/dn03
pg_basebackup -p 40004 -h 10.10.10.105 -U opentenbase -D /data/opentenbase/data/dn03 -X f -P -v
chmod 700 /data/opentenbase/data/dn03
image.png
image.png
2.11.2 修改配置文件
代码语言:javascript
复制
vim /data/opentenbase/data/dn03/postgresql.conf

调整以下内容:

代码语言:javascript
复制
port = 50004
pooler_port=50005
代码语言:javascript
复制
vim /data/opentenbase/data/dn03/recovery.conf

调整以下内容:

代码语言:javascript
复制
standby_mode = on 
primary_conninfo = 'host = 10.10.10.105 port = 40004 user = opentenbase application_name = s1'
2.11.3 启动DN
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn03 start
2.11.4 检查DN状态
代码语言:javascript
复制
pg_ctl -Z datanode -D /data/opentenbase/data/dn03 status
image.png
image.png

至此所有数据库组件部署完成。

3 配置路由

3.1 配置CN01

代码语言:javascript
复制
psql -h 10.10.10.101 -p 30004 -d postgres -U opentenbase

这里需要注意的是,如果直接将lib库指定到/usr/local/install/opentenbase/lib下,会直接调用其中的libpq.so.5库文件,会有以下的报错:

image.png
image.png

需要在root用户下执行,psql才能正常执行:

代码语言:javascript
复制
ln -s /usr/local/install/opentenbase/lib/libpq.so.5.10 /usr/lib64/libpq.so.5
image.png
image.png
代码语言:javascript
复制
alter node cn01 with (host='10.10.10.101',port=30004);
create node cn02 with (type=coordinator,host='10.10.10.102',port=30004,primary=false,preferred=false);
create node dn01 with (type=datanode,host='10.10.10.103',port=40004,primary=false,preferred=false);
create node dn02 with (type=datanode,host='10.10.10.104',port=40004,primary=false,preferred=false);
create node dn03 with (type=datanode,host='10.10.10.105',port=40004,primary=false,preferred=false);
select pgxc_pool_reload();
image.png
image.png

后续截图省略。

3.2 配置CN02

代码语言:javascript
复制
psql -h 10.10.10.102 -p 30004 -d postgres -U opentenbase
代码语言:javascript
复制
alter node cn02 with (host='10.10.10.102',port=30004);
create node cn01 with (type=coordinator,host='10.10.10.101',port=30004,primary=false,preferred=false);
create node dn01 with (type=datanode,host='10.10.10.103',port=40004,primary=false,preferred=false);
create node dn02 with (type=datanode,host='10.10.10.104',port=40004,primary=false,preferred=false);
create node dn03 with (type=datanode,host='10.10.10.105',port=40004,primary=false,preferred=false);
select pgxc_pool_reload();

3.3 配置DN01

代码语言:javascript
复制
psql -h 10.10.10.103 -p 40004 -d postgres -U opentenbase
代码语言:javascript
复制
alter node dn01 with (host='10.10.10.103',port=40004);
create node cn01 with (type=coordinator,host='10.10.10.101',port=30004,primary=false,preferred=false);
create node cn02 with (type=coordinator,host='10.10.10.102',port=30004,primary=false,preferred=false);
create node dn02 with (type=datanode,host='10.10.10.104',port=40004,primary=false,preferred=false);
create node dn03 with (type=datanode,host='10.10.10.105',port=40004,primary=false,preferred=false);
select pgxc_pool_reload();

3.4 配置DN02

代码语言:javascript
复制
psql -h 10.10.10.104 -p 40004 -d postgres -U opentenbase
代码语言:javascript
复制
alter node dn02 with (host='10.10.10.104',port=40004);
create node cn01 with (type=coordinator,host='10.10.10.101',port=30004,primary=false,preferred=false);
create node cn02 with (type=coordinator,host='10.10.10.102',port=30004,primary=false,preferred=false);
create node dn01 with (type=datanode,host='10.10.10.103',port=40004,primary=false,preferred=false);
create node dn03 with (type=datanode,host='10.10.10.105',port=40004,primary=false,preferred=false);
select pgxc_pool_reload();

3.5 配置DN03

代码语言:javascript
复制
psql -h 10.10.10.105 -p 40004 -d postgres -U opentenbase
代码语言:javascript
复制
alter node dn03 with (host='10.10.10.105',port=40004);
create node cn01 with (type=coordinator,host='10.10.10.101',port=30004,primary=false,preferred=false);
create node cn02 with (type=coordinator,host='10.10.10.102',port=30004,primary=false,preferred=false);
create node dn01 with (type=datanode,host='10.10.10.103',port=40004,primary=false,preferred=false);
create node dn02 with (type=datanode,host='10.10.10.104',port=40004,primary=false,preferred=false);
select pgxc_pool_reload();

3.6 路由信息查询

代码语言:javascript
复制
psql -h 10.10.10.101 -p 30004 -d postgres -U opentenbase
代码语言:javascript
复制
select * from pgxc_node;
image.png
image.png

总结

本期用RPM的方式部署了OpenTenbase 5.0,而且用了比较麻烦的方式按组件部署,中间还是遇到一些小问题。目前还没有到使用阶段。 老规矩,知道写了些啥。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胖头鱼的鱼缸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库管理-第384期 OpenTenBase 5.0部署V2(20251104)
    • 1 RPM包部署
      • 1.1 清理环境
      • 1.2 解读RPM包
      • 1.3 安装RPM
      • 1.4 其他操作
      • 1.5 一点疑惑
    • 2 部署数据库组件
      • 2.1 配置公共参数
      • 2.2 部署GTM主
      • 2.3 部署GTM备
      • 2.4 部署CN01
      • 2.5 部署CN02
      • 2.6 部署DN01主
      • 2.7 部署DN02主
      • 2.8 部署DN03主
      • 2.9 部署DN01备
      • 2.10 部署DN02备
      • 2.11 部署DN03备
    • 3 配置路由
      • 3.1 配置CN01
      • 3.2 配置CN02
      • 3.3 配置DN01
      • 3.4 配置DN02
      • 3.5 配置DN03
      • 3.6 路由信息查询
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档