日期:2026 年 6 月 6 日
作者:张煜

引言

作为高校开放原子开源社团的成员,我们在平时的技术实践中经常需要快速搭建数据库环境用于学习和项目验证。OpenTenBase 5.0 作为一款开源分布式关系型数据库,其"GTM+CN+DN"架构设计清晰,适合校园场景下的分布式数据库学习。但传统的手动编译部署流程步骤繁琐、依赖复杂,对新手不够友好。
本文记录我们基于腾讯云 OrcaTerm AI 终端助手,通过自然语言交互的方式完成 OpenTenBase 5.0 从源码编译到集群启动的全流程实践。OrcaTerm AI 能够根据我们的描述自动生成命令、分析报错并提供修复建议,大幅降低了部署门槛,整个过程从原来的数小时缩短到 30 分钟左右(受编译时间影响,实际操作时间在 15 分钟左右)。
本文适用场景:校园技术社团活动、个人学习实践、教学实验环境搭建。
官方README_ZH文件

阅读提示:每一点下方文本框中为Prompt,下方为输入提示词后对话情况示范与执行结果示范
本教程已经过复现,确保能完整正确地完成编译部署操作。当前Prompt仍有优化空间,欢迎友好交流讨论

环境要求

项目 要求(截止2026年6月6日)
操作系统 TencentOS 2, TencentOS 3, OpenCloudOS 8.x, CentOS 7, CentOS 8, Ubuntu 18.04
内存 最小 8G RAM
磁盘空间 至少 20GB 可用空间
网络 需要访问外网下载依赖包和源码
工具 腾讯云 OrcaTerm(含 AI 助手功能)

这里我选择的是 OpenCloudOS 9 系统,详细配置如下:
image.png


一、OrcaTerm 环境接入与 AI 助手准备

1.1 登录 OrcaTerm

通过腾讯云控制台进入 OrcaTerm 终端,选择目标 CVM 实例一键登录。
屏幕截图 2026-06-06 130721 - 副本.png
OrcaTerm AI 助手位于终端界面右侧顶部,点击即可唤起。目前支持混元、DeepSeek、Kimi 等多个模型,默认使用混元大模型即可满足需求。本次教程中使用模型为Kimi。
屏幕截图 2026-06-06 131856.png
image.png

1.2 AI 助手交互模式说明

OrcaTerm AI 有两种核心用法:

  1. AI 问答界面:右侧边栏输入自然语言描述,AI 返回完整命令步骤
  2. AI 命令搜索:在终端命令行右键选择"AI 命令搜索",输入需求快速获取命令

本文主要使用 AI 问答界面 进行多轮对话式部署。OrcaTerm AI 每日提供 50 次免费问答额度,完成本文全流程约消耗 20~30 次,完全够用。


二、环境准备(AI 辅助)

2.1 关闭防火墙和 SELinux

直接向 AI 提问:

我想在OpenCloudOS 上部署 OpenTenBase 5.0,需要关闭防火墙和 SELinux,给出命令

对话详情:

image.png

BASH

systemctl stop firewalld && systemctl disable firewalld && setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

执行后AI生成:

命令执行结果如下:

防火墙(firewalld)

  • firewalld 服务未安装,因此停止/禁用命令返回了错误。OpenCloudOS 默认可能未使用 firewalld,建议检查实际使用的防火墙服务:
    BASH
    systemctl status iptables
    systemctl status nftables
    

SELinux

  • ✅ 已临时关闭:setenforce 0
  • ✅ 已永久禁用:修改 /etc/selinux/configSELINUX=disabled

建议补充命令 如果系统使用的是 iptablesnftables,可使用以下命令关闭:
BASH

# 关闭并禁用 iptables
systemctl stop iptables && systemctl disable iptables

# 或关闭并禁用 nftables
systemctl stop nftables && systemctl disable nftables

# 清空现有规则(谨慎执行)
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

如需继续部署 OpenTenBase 5.0,请确认当前防火墙实际使用的服务类型。

此时不必继续处理防火墙相关问题,继续部署即可。

2.2 安装系统依赖

继续问 AI:

OpenTenBase 5.0 在 OpenCloudOS 上编译需要哪些依赖?给出完整的 dnf 安装命令,包括 gcc、cmake、readline、openssl、uuid、bison、flex、libxml2、libxslt 等

对话详情:

屏幕截图 2026-06-06 135921.png

BASH

dnf install -y gcc gcc-c++ cmake make readline-devel openssl-devel libuuid-devel bison flex libxml2-devel libxslt-devel zlib-devel perl-ExtUtils-Embed python3-devel libicu-devel pam-devel libevent-devel libyaml-devel lz4-devel

执行后AI生成:

OpenTenBase 5.0 编译依赖安装完成!
已安装的依赖包(21个)

包名 版本 用途
cmake 3.26.5 构建系统
gcc / gcc-c++ 12.3.1 C/C++ 编译器
readline-devel 8.2 命令行编辑支持
openssl-devel 3.0.12 SSL/TLS 加密支持
libuuid-devel 2.39.1 UUID 生成支持
bison 3.8.2 语法分析器生成器
flex 2.6.4 词法分析器生成器
libxml2-devel 2.11.5 XML 解析支持
libxslt-devel 1.1.38 XSLT 转换支持
zlib-devel 1.2.13 压缩库
perl-ExtUtils-Embed 1.35 Perl 扩展支持
python3-devel 3.11.6 Python 扩展支持
libicu-devel 74.2 Unicode/国际化支持
pam-devel 1.5.3 认证模块支持
libevent-devel 2.1.12 事件驱动库
libyaml-devel 0.2.5 YAML 解析支持
lz4-devel 1.9.4 快速压缩支持
已预装的包:gcc、gcc-c++、make、bison、flex、zlib-devel、perl-ExtUtils-Embed
执行的完整命令
BASH
dnf install -y gcc gcc-c++ cmake make readline-devel openssl-devel libuuid-devel bison flex libxml2-devel libxslt-devel zlib-devel perl-ExtUtils-Embed python3-devel libicu-devel pam-devel libevent-devel libyaml-devel lz4-devel

环境已准备就绪,可以继续进行 OpenTenBase 5.0 的源码下载和编译。

注意cli11-devel 在部分系统仓库中可能不可用,如果 dnf 找不到,可以用 dnf search cli11 确认包名,或者从源码编译安装 CLI11。

如果遇到上述情况,补充提示词如下:

dnf 找不到 cli11-devel 包,怎么解决?给出从源码编译安装 CLI11 的完整命令

2.3 创建用户与目录

创建 OpenTenBase 专用用户 opentenbase,家目录 /data/opentenbase,同时创建 /data/opentenbase 目录并设置正确权限,给出完整命令

对话详情:
屏幕截图 2026-06-06 141358.png

BASH

# 创建 opentenbase 用户
mkdir -p /data/opentenbase && useradd -d /data/opentenbase -m -s /bin/bash opentenbase && chown -R opentenbase:opentenbase /data/opentenbase && chmod 755 /data/opentenbase && id opentenbase

执行后AI生成:

OpenTenBase 专用用户创建完成!
执行结果

步骤 状态 说明
``
创建目录 /data/opentenbase
无输出(命令成功,静默返回)
``
创建用户 opentenbase
UID=1001, GID=1001
设置家目录 ``
/data/opentenbase
设置目录权限 755(所有者可读写执行,其他用户可读可执行)
用户信息
BASH
uid=1001(opentenbase) gid=1001(opentenbase) groups=1001(opentenbase)

执行的完整命令
BASH

mkdir -p /data/opentenbase && \
useradd -d /data/opentenbase -m -s /bin/bash opentenbase && \
chown -R opentenbase:opentenbase /data/opentenbase && \
chmod 755 /data/opentenbase && \
id opentenbase

后续可以使用 su - opentenbase 切换到该用户进行 OpenTenBase 的编译和部署操作。


三、源码获取与编译

3.1 获取源码

从 GitHub 克隆 OpenTenBase 最新源码到 /data/opentenbase/OpenTenBase,要求加速下载,给出 git clone 命令。如果 GitHub 连不上,给出 Gitee 镜像地址

对话详情:

屏幕截图 2026-06-06 142145.png

BASH

git clone --depth=1 https://ghfast.top/https://github.com/OpenTenBase/OpenTenBase.git /data/opentenbase/OpenTenBase

执行后AI生成:

OpenTenBase 源码克隆完成!
执行结果

步骤 状态 详情
安装 git 版本 2.43.7
克隆源码 共 8,419 个文件,32.44 MiB
克隆信息
  • 目标目录:/data/opentenbase/OpenTenBase
  • 使用加速镜像:https://ghfast.top/https://github.com/OpenTenBase/OpenTenBase.git
  • 克隆方式:--depth=1(仅下载最新版本,节省空间和时间)

执行的完整命令

  1. 安装 git:

BASH

dnf install -y git
  1. 使用 GitHub 加速镜像克隆:

BASH

git clone --depth=1 https://ghfast.top/https://github.com/OpenTenBase/OpenTenBase.git /data/opentenbase/OpenTenBase

备用方案(如果 GitHub 连不上)
如果加速镜像不可用,可以使用 Gitee 镜像:
BASH

git clone --depth=1 https://gitee.com/opentenbase/OpenTenBase.git /data/opentenbase/OpenTenBase

目录权限建议 克隆完成后,建议将源码目录权限设置为 opentenbase 用户:
BASH

chown -R opentenbase:opentenbase /data/opentenbase/OpenTenBase

源码已就绪,可以继续进行编译和安装操作。

过程中可能出现提醒git工具未安装情况,点击执行自动安装即可

3.2 编译主程序

编译 OpenTenBase 5.0 主程序,源码在 /data/opentenbase/OpenTenBase,安装路径 /data/opentenbase/install/opentenbase_bin_v5.0。要求:启用 user-switch、libxml、openssl、ossp-uuid,关闭 license 检查,开启调试信息 CFLAGS=“-g”。给出设置环境变量、configure、make、make install 的完整命令序列

对话详情:

屏幕截图 2026-06-06 142841.png

BASH

cd /data/opentenbase/OpenTenBase && export CFLAGS="-g" && ./configure --prefix=/data/opentenbase/install/opentenbase_bin_v5.0 --enable-user-switch --with-libxml --with-openssl --with-ossp-uuid --disable-license-check

关键参数说明

  • --disable-license:绕过许可证检查(等价于 -DNOLIC
  • --with-ossp-uuid:启用 UUID 支持
  • CFLAGS="-g":开启调试符号,便于后续排查问题
  • make -sj:静默模式并行编译,输出更干净

执行后AI生成:

OpenTenBase 5.0 的编译环境准备与 configure 配置已全部完成。

完成情况

步骤 状态 说明
关闭 SELinux ``````
setenforce 0 + /etc/selinux/config 设为 disabled
安装编译依赖 21 个包(gcc、cmake、readline-devel、openssl-devel 等)
安装额外依赖 git 2.43.7、libzstd-devel 1.5.5、lz4-static 1.9.4、uuid-devel 1.6.2
创建用户 ````
opentenbase(UID=1001),家目录 /data/opentenbase
克隆源码 ``
/data/opentenbase/OpenTenBase(8,419 文件)
解决静态库路径 ````
/usr/local/lib/libzstd.a/usr/local/lib/liblz4.a 符号链接
configure 配置 成功生成 GNUmakefile、Makefile.global、pg_config.h

配置结果

  • 安装前缀/data/opentenbase/install/opentenbase_bin_v5.0
  • 编译器gcc (Tencent Compiler 12.3.1.8) 12.3.1 20230912
  • 调试符号-g 已启用
  • 编译器宏-D_PG_ORCL_ -DPGXC -DXCP -D_USER_SWITCH_
  • UUID 库:系统 uuid.h-lossp-uuid 链接成功

下一步操作

执行编译和安装:
BASH

cd /data/opentenbase/OpenTenBase
make -j$(nproc)
make install

如需继续执行编译,请告知。

过程中可能会发现缺少 zstd 库、lz4 开发库等,需要先安装相关依赖包,OrcaTerm AI同样会直接给出相关安装命令,我们直接点击执行后OrcaTerm AI便会帮助我们配置好相关文件

3.3 编译扩展模块

编译 OpenTenBase 5.0 的 contrib 扩展模块,源码在 /data/opentenbase/OpenTenBase,需要先设置 make_signature 可执行权限,然后编译 pgxc_ctl 等扩展并安装,给出完整命令

对话详情:

屏幕截图 2026-06-06 144045.png

BASH

cd /data/opentenbase/OpenTenBase && chmod +x make_signature

执行后AI生成:

OpenTenBase 5.0 编译安装任务已全部完成。
安装结果

  • 安装路径:/data/opentenbase/install/opentenbase_bin_v5.0/
  • 状态:Postgres-XL installation complete

📦 已安装组件

  • 二进制工具:pg_ctl、psql、pg_basebackup、pg_dump、pg_restore、pgbench、opentenbase_tool、createdb、dropdb 等
  • 库文件:PL/pgSQL (plpgsql.so)、OraPLSQL (oraplsql.so) 等扩展
  • 共享文件:扩展 SQL 脚本、配置文件模板
  • 头文件:PostgreSQL 服务器开发头文件
  • 开发框架:pgxs(用于后续扩展开发)

🔮 接下来您可能需要

  1. 编译安装 contrib 扩展(如 pgxc_ctl)
  2. 调整安装目录权限为 opentenbase 用户
  3. 初始化数据库集群并配置集群节点
  4. 配置环境变量(PATH、PGDATA 等)
  5. 启动数据库服务并验证连接

这部分可能会有libcurl-devel包未安装导致编译失败的情况,同样直接执行OrcaTerm AI给出的相关命令即可解决问题


四、环境配置

4.1 环境变量

OpenTenBase 安装路径是 /data/opentenbase/install/opentenbase_bin_v5.0,帮我生成需要写入 /data/opentenbase/.bash_profile 的环境变量,包括 PATH、LD_LIBRARY_PATH、LC_ALL,给出完整内容和使配置生效的命令

对话详情:

屏幕截图 2026-06-06 145659.png

BASH

ls -la /home/opentenbase/.bash_profile 2>/dev/null || echo "FILE_NOT_FOUND"; getent passwd opentenbase | cut -d: -f6

点击执行后 AI生成:

OpenTenBase 环境变量配置已完成并生效。
📄 配置文件内容/data/opentenbase/.bash_profile):
BASH

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

# OpenTenBase v5.0 Environment Variables
export OPENTENBASE_HOME=/data/opentenbase/install/opentenbase_bin_v5.0
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:$LD_LIBRARY_PATH
export LC_ALL=C

验证结果

  • PATH:已包含 /data/opentenbase/install/opentenbase_bin_v5.0/bin
  • LD_LIBRARY_PATH:已包含 /data/opentenbase/install/opentenbase_bin_v5.0/lib
  • LC_ALLC
  • pg_ctl --versionPostgreSQL 10.0 @ OpenTenBase_v5.0
  • psql --versionPostgreSQL 10.0 @ OpenTenBase_v5.0

🔮 接下来您可能需要

  1. 初始化数据库集群(initdbpgxc_ctl init all
  2. 配置 postgresql.conf 和 pg_hba.conf
  3. 启动数据库服务
  4. 创建数据库和用户

4.2 配置 SSH 免密登录

为 opentenbase 用户配置 SSH 免密登录本机,要求非交互式生成密钥(无需输入密码),自动配置 authorized_keys,给出完整命令

对话详情:

屏幕截图 2026-06-06 150052.png

BASH

su - opentenbase -c 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "opentenbase@localhost" && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "=== SSH Key Generated ===" && ls -la ~/.ssh/ && echo "=== authorized_keys content ===" && cat ~/.ssh/authorized_keys && echo "=== SSH Test ===" && ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no localhost echo "SSH免密登录成功"'

执行后AI生成:

opentenbase 用户 SSH 免密登录本机配置已完成。
执行结果

  • 密钥类型:RSA 4096 位
  • 私钥路径:/data/opentenbase/.ssh/id_rsa
  • 公钥路径:/data/opentenbase/.ssh/id_rsa.pub
  • 授权密钥:/data/opentenbase/.ssh/authorized_keys
  • 权限设置:.ssh 目录 700,authorized_keys 600,id_rsa 600
  • SSH 测试:ssh localhost 免密登录成功

📋 完整命令(如需在其他节点复用):
BASH

su - opentenbase -c 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "opentenbase@localhost" && cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

🔮 接下来您可能需要

  1. 将公钥分发到其他集群节点实现节点间免密
  2. 配置 pgxc_ctl 集群管理工具
  3. 初始化 OpenTenBase 数据库集群

五、集群初始化(集中式模式)

5.1 创建配置文件

我需要一份 OpenTenBase 集中式模式(centralized)的配置文件 opentenbase_config.ini,要求:单节点部署,IP 是 10.6.0.11,实例名 opentenbase_single,安装包路径 /data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz,数据节点配置目录 /home/opentenbase/opentenbase_ctl/postgres.conf,SSH 用户 opentenbase,日志级别 DEBUG。给出完整的 INI 文件内容并完成配置

对话详情:

屏幕截图 2026-06-06 150637.png

执行后AI生成:

OpenTenBase 集中式模式配置文件已创建完成。
📄 文件路径/data/opentenbase/opentenbase_config.ini
📋 完整配置内容
INI

[common]
# OpenTenBase Centralized Mode Configuration
# Deployment mode: single node (centralized)

# Instance name
instance_name = opentenbase_single

# Deployment mode: centralized | distributed
deploy_mode = centralized

# SSH configuration
ssh_user = opentenbase
ssh_port = 22

# Log level: DEBUG | INFO | WARN | ERROR
log_level = DEBUG

# Installation package path
install_package = /data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz

# Installation directory
install_dir = /data/opentenbase/install/opentenbase_bin_v5.0

# Data directory base path
data_dir = /data/opentenbase/data

# Configuration directory
config_dir = /home/opentenbase/opentenbase_ctl

[coordinator]
# Coordinator node configuration (single node mode)
name = coord1
ip = 10.6.0.11
port = 30004
pooler_port = 30005

[datanode]
# Data node configuration (single node mode)
name = dn1
ip = 10.6.0.11
port = 30006

# Data node specific configuration file
datanode_config = /home/opentenbase/opentenbase_ctl/postgres.conf

[gtm]
# Global Transaction Manager configuration (single node mode)
name = gtm
ip = 10.6.0.11
port = 30001

[gtm_proxy]
# GTM Proxy configuration (optional for single node)
name = gtm_proxy1
ip = 10.6.0.11
port = 30002

[cluster]
# Cluster-wide settings
max_connections = 100
shared_buffers = 256MB
wal_level = replica
archive_mode = off
listen_addresses = '*'

# Encoding
server_encoding = UTF8
client_encoding = UTF8

# Locale
lc_messages = C
lc_monetary = C
lc_numeric = C
lc_time = C

🔧 配置说明

  • 部署模式centralized(集中式单节点)
  • 实例名opentenbase_single
  • 节点 IP10.6.0.11
  • SSH 用户opentenbase
  • 日志级别DEBUG
  • 安装包路径/data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz
  • 数据节点配置/home/opentenbase/opentenbase_ctl/postgres.conf
  • 端口规划:GTM(30001)、GTM Proxy(30002)、Coordinator(30004/30005)、DataNode(30006)

🔮 接下来您可能需要

  1. 创建数据节点配置文件 /home/opentenbase/opentenbase_ctl/postgres.conf
  2. 使用 pgxc_ctl 工具初始化集群
  3. 启动 OpenTenBase 服务并验证连接

配置要点

  • type=centralized:集中式模式,无独立 GTM 和 Coordinator
  • slave=:留空,单节点不需要从节点
  • package=:指向打包后的二进制分发包路径

5.2 准备 postgres.conf

准备 OpenTenBase 的 postgres.conf 配置文件,从安装目录的 postgresql.conf.sample 复制到 /home/opentenbase/opentenbase_ctl/postgres.conf,同时创建日志目录,给出命令

对话详情:

屏幕截图 2026-06-06 150854.png

BASH

ls -la /data/opentenbase/install/opentenbase_bin_v5.0/share/postgresql/postgresql.conf.sample 2>/dev/null && echo "SAMPLE_FOUND" || echo "SAMPLE_NOT_FOUND"

执行后AI生成:

OpenTenBase 配置文件和日志目录已准备完成。
执行结果

  • 配置文件路径/home/opentenbase/opentenbase_ctl/postgres.conf
  • 来源文件/data/opentenbase/install/opentenbase_bin_v5.0/share/postgresql/postgresql.conf.sample
  • 日志目录/data/opentenbase/log/
  • 权限设置opentenbase:opentenbase

📋 完整命令
BASH

mkdir -p /home/opentenbase/opentenbase_ctl
mkdir -p /data/opentenbase/log
cp /data/opentenbase/install/opentenbase_bin_v5.0/share/postgresql/postgresql.conf.sample /home/opentenbase/opentenbase_ctl/postgres.conf
chown -R opentenbase:opentenbase /home/opentenbase/opentenbase_ctl /data/opentenbase/log

📄 配置文件说明

  • 文件大小:26,146 字节(包含所有默认参数和注释)
  • 内容来源:OpenTenBase 安装目录的 postgresql.conf.sample
  • 可根据需要编辑 postgres.conf 调整数据库参数(如 max_connectionsshared_bufferslisten_addresses 等)

🔮 接下来您可能需要

  1. 编辑 postgres.conf 调整关键参数(端口、内存、连接数等)
  2. 配置 pg_hba.conf 访问控制
  3. 使用 pgxc_ctl 初始化并启动 OpenTenBase 集群

5.3 打包二进制(用于分发部署)

将 OpenTenBase 安装目录 /data/opentenbase/install/opentenbase_bin_v5.0 打包成 tar.gz 文件,输出到 /data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz,给出命令

对话详情:

屏幕截图 2026-06-06 151234.png

BASH

cd /data/opentenbase/install && tar -czf opentenbase-5.21.8-i.x86_64.tar.gz opentenbase_bin_v5.0 && echo "=== 打包完成 ===" && ls -lh opentenbase-5.21.8-i.x86_64.tar.gz && echo "=== 文件校验 ===" && sha256sum opentenbase-5.21.8-i.x86_64.tar.gz && echo "=== 包内内容预览 ===" && tar -tzf opentenbase-5.21.8-i.x86_64.tar.gz | head -20

执行后AI生成:

OpenTenBase 安装包打包已完成。
执行结果

  • 输出文件/data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz
  • 文件大小:28 MB
  • SHA256 校验159d2b851d3e9f4a23310a02c225f5c38d13fa785702355f169e9d223a5f9067

📋 完整命令
BASH

cd /data/opentenbase/install
tar -czf opentenbase-5.21.8-i.x86_64.tar.gz opentenbase_bin_v5.0

📦 包内内容预览

  • opentenbase_bin_v5.0/lib/ — 库文件(libpgcommon.a、libpgport.a、libecpg.so 等)
  • opentenbase_bin_v5.0/bin/ — 二进制工具(pg_ctl、psql、pg_dump 等)
  • opentenbase_bin_v5.0/share/postgresql/ — 共享文件和扩展
  • opentenbase_bin_v5.0/include/postgresql/server/ — 开发头文件

🔮 接下来您可能需要

  1. 将安装包分发到其他服务器节点
  2. 使用此安装包进行集中式或分布式部署
  3. 备份安装包用于后续环境恢复

5.4 使用 opentenbase_ctl 初始化集群

此处Prompt存在部分问题,部分配置和端口缺失会导致反复配置或者错误初始化分布式节点,此时中断任务查询集中式初始化情况即可,不会影响初始化结果,后续会优化改进

使用 opentenbase_ctl 初始化 OpenTenBase 集中式集群,配置文件在 /data/opentenbase/opentenbase_config.ini,给出 install 命令。如果 install 失败,给出手动执行 initdb 的备用方案

对话详情:

屏幕截图 2026-06-06 151540.png

BASH

ls -la /data/opentenbase/install/opentenbase_bin_v5.0/bin/opentenbase_tool 2>/dev/null && echo "TOOL_FOUND" || echo "TOOL_NOT_FOUND"

执行后AI生成:

OpenTenBase 集中式单节点集群已完成初始化,各组件状态正常:
集群状态确认:

  • GTM:运行中 (pid 55801)
  • Coordinator:运行中 (pid 153822),监听 30004/30008
  • DataNode:运行中 (pid 133771),监听 30006/30009,pg_is_in_recovery = f

已完成的配置:

  • pgxc_ctl.conf 已修正 forward_port 避免端口冲突
  • 许可证已部署到各节点数据目录
  • pg_hba.conf 已添加 10.6.0.11/32 和 10.0.0.0/8 的 trust 规则
  • pgxc_node 表已同步 Coordinator 和 DataNode 的节点配置

集中式功能验证:

  • psql 连接 Coordinator 成功:PostgreSQL 10.0 @ OpenTenBase_v5.0
  • DataNode 直接连接正常,不在恢复模式
  • 节点组 ng_default 已创建(分布式功能可选)

六、启动数据库

使用 pg_ctl 启动

使用 pg_ctl 启动 OpenTenBase 数据节点,数据目录在 /data/opentenbase/data/dn,节点类型 datanode,日志输出到数据目录下的 pg_ctl_start.log,给出完整启动命令

对话详情:

屏幕截图 2026-06-06 181320.png

这里因为测试时纠正了错误路径所以显示为重新启动

BASH

su - opentenbase -c "/data/opentenbase/install/opentenbase_bin_v5.0/bin/pg_ctl start -Z datanode -D /data/opentenbase/data/dn -l /data/opentenbase/data/dn/pg_ctl_start.log"

执行后AI生成:

DataNode 已成功启动。
启动确认:

  • 进程:运行中(pid 243834)
  • 命令:postgres --datanode -D /data/opentenbase/data/dn
  • 日志:已重定向至 logging collector,后续日志将写入 pg_log 目录

完整的 pg_ctl 启动命令:
BASH

su - opentenbase -c "/data/opentenbase/install/opentenbase_bin_v5.0/bin/pg_ctl start -Z datanode -D /data/opentenbase/data/dn -l /data/opentenbase/data/dn/pg_ctl_start.log"

参数说明:

  • -Z datanode:指定节点类型为 DataNode(OpenTenBase 必需参数)
  • -D /data/opentenbase/data/dn:数据目录路径
  • -l /data/opentenbase/data/dn/pg_ctl_start.log:启动日志输出路径

对应的停止命令:
BASH

su - opentenbase -c "/data/opentenbase/install/opentenbase_bin_v5.0/bin/pg_ctl stop -Z datanode -D /data/opentenbase/data/dn"

七、验证安装

7.1 检查进程和端口

检查 OpenTenBase 是否启动成功,给出查看 postgres 进程和监听端口的命令

屏幕截图 2026-06-06 181937.png

ps aux | grep -E 'postgres|gtm' | grep -v grep; echo '---'; ss -tlnp | grep -E '30004|30006|30008|30001|30002' || echo 'no matching ports'

执行后AI生成:

OpenTenBase 集群启动成功,各组件运行正常。

进程状态:

组件 进程 PID 状态
GTM gtm -D /data/opentenbase/data/gtm 55801 运行中
Coordinator postgres --coordinator 153822 运行中
DataNode postgres --datanode 243834 运行中

监听端口:

端口 组件 用途
30001 GTM GTM 服务
30004 Coordinator 主服务端口
30006 DataNode 主服务端口
30008 Coordinator Forward 端口

常用查看命令:
BASH

# 查看 postgres 和 gtm 进程
ps aux | grep -E 'postgres|gtm' | grep -v grep

# 查看 OpenTenBase 相关端口监听
ss -tlnp | grep -E '30001|30004|30006|30008'

# 查看所有监听中的端口
ss -tlnp | grep postgres

# 查看特定端口(如 30004)
ss -tlnp | grep 30004

7.2 连接测试

使用 psql 连接 OpenTenBase,用户 opentenbase,数据库 postgres,执行 SELECT version() 查看版本,给出命令

对话详情:

屏幕截图 2026-06-06 182524.png

BASH

su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT version();'"

执行后AI生成:

psql 连接成功,OpenTenBase 版本信息如下:
BASH

PostgreSQL 10.0 @ OpenTenBase_v5.0 (commit: b612d77cb)
2026-06-06 14:37:46 on x86_64-pc-linux-gnu, compiled by
gcc (Tencent Compiler 12.3.1.8) 12.3.1 20230912 (OpenCloudOS 12.3.1.8-1), 64-bit

完整命令:
BASH

su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT version();'"

参数说明:

  • -h 10.6.0.11:Coordinator 主机地址
  • -p 30004:Coordinator 服务端口
  • -U opentenbase:数据库用户
  • -d postgres:连接的数据库
  • -c 'SELECT version();':执行的 SQL 语句

交互式连接(不带 -c):
BASH

su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres"

7.3 查看节点信息

查看集群节点信息,给出查看所有节点名称、类型、状态和端口的方法

对话详情:

屏幕截图 2026-06-06 183520.png

BASH

su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT node_name, node_type, node_host, node_port, node_forward_port, nodeis_primary, nodeis_preferred FROM pgxc_node ORDER BY node_type;'"

执行后AI生成:

集群节点信息查询完成,当前 OpenTenBase 集群配置如下:
节点列表(pgxc_node):

节点名 类型 主机 端口 Forward端口 是否主节点 是否优先
gtm G (GTM) 10.6.0.11 30001 0
coord1 C (Coordinator) 10.6.0.11 30004 30008
dn1 D (DataNode) 10.6.0.11 30006 30009
节点组(pgxc_group):
组名 是否默认组 成员
ng_default 16387
查看集群节点信息的常用命令:
BASH
# 查看所有节点名称、类型、主机、端口
su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT node_name, node_type, node_host, node_port, node_forward_port, nodeis_primary FROM pgxc_node ORDER BY node_type;'"

# 查看节点组信息
su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT * FROM pgxc_group;'"

# 查看完整节点信息
su - opentenbase -c "psql -h 10.6.0.11 -p 30004 -U opentenbase -d postgres -c 'SELECT * FROM pgxc_node;'"

节点类型说明:

  • G = GTM(全局事务管理器)
  • C = Coordinator(协调器)
  • D = DataNode(数据节点)

八、排障指南

大部分情况OrcaTerm AI会自动排障并解决,本部分作为参考

8.1 opentenbase_ctl install 报错配置解析失败

现象:日志中出现 Failed to parse configuration fileThere are some errors in the datanodes configurations
原因opentenbase_config.ini[datanodes] 段的 slave= 为空时,解析器可能报错。
解决:确认集中式模式不需要 slave 节点,检查配置文件中不要有多余空格。如仍失败,改用手动 initdb 方式(见 5.4 节)。

8.2 启动时报 gtm 相关错误

现象:集中式模式启动时出现 GTM 连接失败的日志。
原因:集中式模式无独立 GTM 进程,需检查 postgresql.conf 中的 gtm_hostgtm_port 是否配置正确。
解决:确认使用的是集中式模式配置,不需要单独启动 GTM。

8.3 pg_ctl 启动失败

现象pg_ctl start 后进程未启动。
原因:未指定节点类型。
解决:必须加 -Z datanode 参数:
bash

pg_ctl -Z datanode -D /path/to/data start

8.4 连接被拒绝

排查步骤
bash

# 1. 检查防火墙
sudo systemctl status firewalld

# 2. 检查 SELinux
getenforce

# 3. 检查 pg_hba.conf
su - opentenbase -c "cat /home/opentenbase/run/instance/opentenbase_single/dn0001/data/pg_hba.conf | grep -v '^#' | grep -v '^$'"

确保 pg_hba.conf 中有允许 0.0.0.0/0 访问的规则。

8.5 环境变量不生效

解决:确认执行了 source ~/.bash_profile。如果 .bashrc 中有覆盖 PATH 的操作,检查是否存在冲突。

【需补充截图】:AI 分析报错并给出修复建议的问答截图(如有)。


九、总结

通过本教程,我们可以在腾讯云轻量级的 OpenCloudOS 云服务器上成功部署了 OpenTenBase 5.0 集中式实例。使用 OrcaTerm AI 辅助的主要提效点:
表格

环节 传统方式 AI辅助方式
依赖安装 查文档逐个确认包名 描述需求,AI 生成完整 dnf 命令
编译配置 手动拼接 configure 参数 AI 自动生成含 --disable-license 等关键参数的命令
配置文件 手写 INI/Shell 配置 描述场景(集中式/分布式、IP、路径),AI 直接生成
故障排查 搜索报错信息 粘贴日志,AI 分析原因并给出修复命令
关键经验
  • 集中式模式适合开发测试,部署步骤比分布式少很多
  • --disable-license 是绕过许可证检查的关键参数(等价于编译时加 -DNOLIC
  • opentenbase_ctl install 只执行 initdb,不会自动启动,启动需单独执行
  • pg_ctl 启动时必须加 -Z datanode 指定节点类型

目录结构速查
plain

/data/opentenbase/
├── data                          # 数据目录
│   ├── coord                     # Coordinator 数据
│   ├── dn                        # DataNode 数据
│   └── gtm                       # GTM 数据
├── install                       # 安装目录
│   ├── opentenbase-5.21.8-i.x86_64.tar.gz
│   └── opentenbase_bin_v5.0      # 二进制文件
├── log                           # 日志目录
├── OpenTenBase                   # 源码目录
│   ├── src                       # 源代码
│   ├── contrib                   # 扩展模块
│   ├── doc                       # 文档
│   ├── docker                    # Docker 配置
│   └── ...                       # 其他源码文件
├── opentenbase_config.ini        # 配置文件
├── pgxc_ctl                      # pgxc_ctl 工作目录
│   ├── pgxc_log                  # pgxc_ctl 日志
│   └── tmp                       # 临时文件
├── pgxc_ctl.conf                 # pgxc_ctl 配置文件
├── pgxz_license                  # 许可证目录
│   └── license.info              # 许可证文件
└── .ssh                          # SSH 密钥

附录:OrcaTerm AI 提问模板

以下是本文中使用的核心 Prompt,可直接在 OrcaTerm AI 中复用:

  1. 环境准备

    “OpenCloudOS 上部署 OpenTenBase,需要关闭防火墙和 SELinux,给出命令”

  2. 依赖安装

    “OpenTenBase 5.0 在 OpenCloudOS 上编译需要哪些依赖?给出完整的 dnf 安装命令,包括 gcc、cmake、readline、openssl、uuid、bison、flex、libxml2、libxslt 等”

  3. 编译命令

    “编译 OpenTenBase 5.0 主程序,安装路径 /data/opentenbase/install/opentenbase_bin_v5.0,启用 user-switch、libxml、openssl、ossp-uuid,关闭 license 检查,开启调试信息,给出完整的 configure 和 make 命令”

  4. 生成配置

    “我需要一份 OpenTenBase 集中式模式配置文件,单节点部署,IP 是 [你的IP],数据节点目录在 /home/opentenbase/run/instance/opentenbase_single/dn0001/data,安装包路径 [你的包路径],给出 opentenbase_config.ini 内容”

  5. 排障提问:遇到报错时直接粘贴错误日志,加前缀:

    “OpenTenBase 部署报错:[粘贴日志],怎么解决?”

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐