暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

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

原创 胖头鱼的鱼缸 2025-11-05
395

数据库管理384期 2025-11-04

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

作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE OpenTenbase ACE 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809 IFClub:胖头鱼的鱼缸 除授权转载并标明出处外,均为“非法”抄袭

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

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

image.png

1 RPM包部署

1.1 清理环境

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

1.2 解读RPM包

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

1.2.1 依赖

dnf deplist opentenbase-5.0-i.x86_64.rpm

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

1.2.2 安装内容

rpm -qlp opentenbase-5.0-i.x86_64.rpm

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

1.2.3 RPM操作脚本

rpm -q --scripts opentenbase-5.0-i.x86_64.rpm

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

1.3 安装RPM

dnf -y install opentenbase-5.0-i.x86_64.rpm

image.png

1.4 其他操作

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

su - opentenbase vim ~/.bash_profile

添加/修改为以下内容:

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

2.1 配置公共参数

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

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

2.2.2 修改配置文件

vim /data/opentenbase/data/gtm/gtm.conf

内容如下:

#配置gtm节点名称 nodename = 'gtm_1' #允许服务监听范围,*允许监听所有 IP 地址 listen_addresses = '*' #监听端口号 port = 5001 #做为GTM主节点提供服务 startup = ACT

2.2.4 启动GTM

gtm_ctl -Z gtm -D /data/opentenbase/data/gtm start

image.png

2.2.5 检查GTM状态

gtm_ctl -Z gtm -D /data/opentenbase/data/gtm status -H 127.0.0.1 -P 5001

image.png

2.3 部署GTM备

otb02节点执行:

2.3.1 初始化GTM

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

2.3.2 修改配置文件

vim /data/opentenbase/data/gtm/gtm.conf

内容如下:

#配置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

gtm_ctl -Z gtm -D /data/opentenbase/data/gtm start

image.png

2.3.5 检查GTM状态

gtm_ctl -Z gtm -D /data/opentenbase/data/gtm status -H 127.0.0.1 -P 5001

image.png

2.4 部署CN01

otb01节点执行:

2.4.1 初始化CN

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

2.4.2 修改配置文件

vim /data/opentenbase/data/cn01/postgresql.conf

调整以下内容:

port = 30004 pooler_port=30005 include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
vim /data/opentenbase/data/cn01/pg_hba.conf

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

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

pg_ctl -Z coordinator -D /data/opentenbase/data/cn01 start

2.4.4 检查CN状态

pg_ctl -Z coordinator -D /data/opentenbase/data/cn01 status

image.png

2.5 部署CN02

otb02节点执行:

2.5.1 初始化CN

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

2.5.2 修改配置文件

vim /data/opentenbase/data/cn02/postgresql.conf

调整以下内容:

port = 30004 pooler_port=30005 include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
vim /data/opentenbase/data/cn02/pg_hba.conf

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

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

pg_ctl -Z coordinator -D /data/opentenbase/data/cn02 start

2.5.4 检查CN状态

pg_ctl -Z coordinator -D /data/opentenbase/data/cn02 status

image.png

2.6 部署DN01主

otb03节点执行:

2.6.1 初始化DN

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

2.6.2 修改配置文件

vim /data/opentenbase/data/dn01/postgresql.conf

调整以下内容:

port = 40004 pooler_port=40005 include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
vim /data/opentenbase/data/dn01/pg_hba.conf

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

host replication all 0.0.0.0/0 trust host all all 0.0.0.0/0 trust

2.6.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn01 start

2.6.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn01 status

image.png

2.7 部署DN02主

otb04节点执行:

2.7.1 初始化DN

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

2.7.2 修改配置文件

vim /data/opentenbase/data/dn02/postgresql.conf

调整以下内容:

port = 40004 pooler_port=40005 include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
vim /data/opentenbase/data/dn02/pg_hba.conf

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

host replication all 0.0.0.0/0 trust host all all 0.0.0.0/0 trust

2.7.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn02 start

2.7.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn02 status

image.png

2.8 部署DN03主

otb05节点执行:

2.8.1 初始化DN

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

2.8.2 修改配置文件

vim /data/opentenbase/data/dn03/postgresql.conf

调整以下内容:

port = 40004 pooler_port=40005 include_if_exists ='/data/opentenbase/global/postgresql.conf.user'
vim /data/opentenbase/data/dn03/pg_hba.conf

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

host replication all 0.0.0.0/0 trust host all all 0.0.0.0/0 trust

2.8.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn03 start

2.8.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn03 status

image.png

2.9 部署DN01备

otb04节点执行:

2.9.1 生成备DN

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

2.9.2 修改配置文件

vim /data/opentenbase/data/dn01/postgresql.conf

调整以下内容:

port = 50004 pooler_port=50005
vim /data/opentenbase/data/dn01/recovery.conf

调整以下内容:

standby_mode = on primary_conninfo = 'host = 10.10.10.103 port = 40004 user = opentenbase application_name = s1'

2.9.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn01 start

2.9.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn01 status

image.png

2.10 部署DN02备

otb05节点执行:

2.10.1 生成备DN

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

2.10.2 修改配置文件

vim /data/opentenbase/data/dn02/postgresql.conf

调整以下内容:

port = 50004 pooler_port=50005
vim /data/opentenbase/data/dn02/recovery.conf

调整以下内容:

standby_mode = on primary_conninfo = 'host = 10.10.10.104 port = 40004 user = opentenbase application_name = s1'

2.10.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn02 start

2.10.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn02 status

image.png

2.11 部署DN03备

otb03节点执行:

2.11.1 生成备DN

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

2.11.2 修改配置文件

vim /data/opentenbase/data/dn03/postgresql.conf

调整以下内容:

port = 50004 pooler_port=50005
vim /data/opentenbase/data/dn03/recovery.conf

调整以下内容:

standby_mode = on primary_conninfo = 'host = 10.10.10.105 port = 40004 user = opentenbase application_name = s1'

2.11.3 启动DN

pg_ctl -Z datanode -D /data/opentenbase/data/dn03 start

2.11.4 检查DN状态

pg_ctl -Z datanode -D /data/opentenbase/data/dn03 status

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

3 配置路由

3.1 配置CN01

psql -h 10.10.10.101 -p 30004 -d postgres -U opentenbase

这里需要注意的是,如果直接将lib库指定到/usr/local/install/opentenbase/lib下,会直接调用其中的libpq.so.5库文件,会有以下的报错:
image.png
需要在root用户下执行,psql才能正常执行:

ln -s /usr/local/install/opentenbase/lib/libpq.so.5.10 /usr/lib64/libpq.so.5

image.png

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
后续截图省略。

3.2 配置CN02

psql -h 10.10.10.102 -p 30004 -d postgres -U opentenbase
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

psql -h 10.10.10.103 -p 40004 -d postgres -U opentenbase
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

psql -h 10.10.10.104 -p 40004 -d postgres -U opentenbase
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

psql -h 10.10.10.105 -p 40004 -d postgres -U opentenbase
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 路由信息查询

psql -h 10.10.10.101 -p 30004 -d postgres -U opentenbase
select * from pgxc_node;

image.png

总结

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

最后修改时间:2025-11-06 10:02:22
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论