首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenTenBase ACE优雅填坑N种姿势

OpenTenBase ACE优雅填坑N种姿势

作者头像
胖头鱼的鱼缸
发布2026-07-02 14:53:06
发布2026-07-02 14:53:06
1010
举报

数据库管理-第385期 OpenTenBase ACE优雅填坑N种姿势(20251106)

914fcc7ad57defa7868c3be1ca7fb4f5.jpg
914fcc7ad57defa7868c3be1ca7fb4f5.jpg

在这次部署OpenTenbase的过程中,遇到了不少的问题,结合上一篇文章和后续实际使用中填坑的过程,看看我(一个看不懂源码的DBA)是如何解决这些问题的。

1 CPU核心数

在前一期专门提到过,需要将虚拟机的CPU数量调到>2,如果CPU核心是1或者2,在启动GTM的时候,日志中会出现以下问题:

d4f9eafa284be7540774423db59f8dea.png
d4f9eafa284be7540774423db59f8dea.png

这是一个OpenTenbase 5.0对CPU数量的要求,即≥3。

2 LD_LIBRARY_PATH

首先在RHEL8中,LD_LIBRARY_PATH环境变量默认是空的:

image.png
image.png

因此按照官方文档的方式配置环境变量,会出现找不到库文件的问题:

代码语言:javascript
复制
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
#这样配置其实就只配置了$OPENTENBASE_HOME/lib

如果手动指定为下面的方式,也会出现问题:

代码语言:javascript
复制
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:/lib:/var/lib:/usr/lib:/usr/lib64
image.png
image.png

因为LD_LIBRARY_PATH存在顺序问题,因此需要将$OPENTENBASE_HOME/lib放在最后,即:

代码语言:javascript
复制
export LD_LIBRARY_PATH=/lib:/var/lib:/usr/lib:/usr/lib64:$OPENTENBASE_HOME/lib

3 libpq.so.5

前文中另一个比较“莫名其妙”的问题则是psql调用libpq.so.5时出现的报错,这个是查遍国内网各大网站和LLM都不能有效解决的。我的思路则是检查$OPENTENBASE_HOME/lib下libpq.so.*文件的关系:

image.png
image.png

我们可以看到libpq.so.5其实是libpq.so.5.13的软连接,再关联在官方文档中psql登录后的反馈:

image.png
image.png

我的猜测是部署过程和psql调用需要使用不同版本的libpq.so库文件,结合上一节的处理,将libpq.so.5.10软连接到了/usr/lib64/libpq.so.5,解决了该问题。

4 使用数据库

4.1 创建GROUP

代码语言:javascript
复制
psql -h 10.10.10.101 -p 30004 -d postgres -U opentenbase
代码语言:javascript
复制
create default node group default_group with (dn01,dn02,dn03);
create sharding group to group default_group;

按照之前的部署会报错:

7e3aa6e934f50152c2915fc96ffd34ec.png
7e3aa6e934f50152c2915fc96ffd34ec.png

检查报错信息和日志,个人猜测是数据库参数文件内存配置不足,因此进行了下面一些调整:

代码语言:javascript
复制
cat > /data/opentenbase/global/postgresql.conf.user <<EOF 
listen_addresses = '0.0.0.0'
max_connections = 2000
max_pool_size = 65535
shared_buffers = 2GB                    
max_prepared_transactions = 2000
maintenance_work_mem = 512MB
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

然后按照dn03备->dn02备->dn01备->dn03主->dn02主->dn01主->cn02->cn01的顺序关闭对应组件,再按照部署顺序启动这些组件,在重启组件的过程中,otb01节点配置的/usr/lib64/libpq.so.5软连接并未对操作产生影响。然后就可以正常操作了:

image.png
image.png

4.2 查询GROUP

代码语言:javascript
复制
select * from pgxc_group;
image.png
image.png

4.3 创建用户与数据库

代码语言:javascript
复制
create user test with password 'test';
create database test;
alter database test owner to test;
image.png
image.png

4.4 创建测试表

代码语言:javascript
复制
psql -h 10.10.10.101 -p 30004 -d test -U test
代码语言:javascript
复制
create table test
(
id int not null,
name varchar(20),
primary key(id)
)
distribute by shard(id)
to group default_group;
image.png
image.png

4.5 插入测试数据

代码语言:javascript
复制
insert into test values(1,'opentenbase');
insert into test values(2,'ace');
insert into test values(3,'yhw');
commit;
image.png
image.png

总结

本期对前面处理的问题和实际使用过程中我的解决问题的思路与方法进行了总结,了解到在OpenTenbase 5.0中还新增了opentenbase_ctl可以实现快速部署,稍后再尝试一下。 老规矩,知道写了些啥。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库管理-第385期 OpenTenBase ACE优雅填坑N种姿势(20251106)
    • 1 CPU核心数
    • 2 LD_LIBRARY_PATH
    • 3 libpq.so.5
    • 4 使用数据库
      • 4.1 创建GROUP
      • 4.2 查询GROUP
      • 4.3 创建用户与数据库
      • 4.4 创建测试表
      • 4.5 插入测试数据
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档