首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenTenBase 分布式数据库集群:从部署到管理 - opentenbase_ctl 工具指南

OpenTenBase 分布式数据库集群:从部署到管理 - opentenbase_ctl 工具指南

原创
作者头像
用户11829647
发布2025-09-17 23:48:42
发布2025-09-17 23:48:42
9800
代码可运行
举报
运行总次数:0
代码可运行

引言​

在当今数据驱动的时代,企业面临着海量数据存储、高并发访问及线性扩展的严峻挑战。传统集中式数据库在应对这些挑战时往往力不从心,分布式数据库因此成为构建现代化应用架构的核心基石。OpenTenBase,作为一款源自Postgres-XL、深度融合了PostgreSQL强大生态的企业级分布式数据库,以其优异的分布式事务处理、水平扩展能力和与标准SQL的良好兼容性,为企业关键业务提供了理想的数据库解决方案。

然而,分布式系统的强大功能往往伴随着部署与运维复杂度的提升。手动配置与管理一个包含全局事务管理器(GTM)、协调节点(CN)和数据节点(DN)的集群是一项繁琐且易错的任务。正因如此,OpenTenBase提供了开箱即用的自动化集群管理工具——opentenbase_ctl。本指南将全面详解如何从零开始,利用opentenbase_ctl工具高效完成OpenTenBase集群的编译、部署、配置与日常管理,助您轻松驾驭企业级分布式数据库集群。

一、OpenTenBase 集群基础架构

OpenTenBase 是一个基于 Postgres-XL 项目发展而来的高级企业级分布式数据库管理系统,它支持 SQL 标准的扩展子集,包括事务、外键、用户定义的类型和函数,并增加了并行计算、安全、管理、审计等企业级功能。

一个完整的 OpenTenBase 集群由三个核心组件协同工作:

  • GTM (Global Transaction Manager):全局事务管理器,负责分配全局唯一的事务ID并确保集群事务一致性。
  • Coordinate Node (协调节点, CN):业务访问入口,负责 SQL 解析、查询规划与数据分发,仅存储全局元数据,不存储业务数据。
  • Data Node (数据节点, DN):存储业务数据分片,执行 CN 分发的查询/写入请求,支持主备架构保障数据可靠性。

在数据访问流程中,客户端首先连接到协调节点提交SQL查询,协调节点解析SQL并生成分布式执行计划,然后将计划分发给相关的数据节点,各数据节点并行执行查询片段后将结果返回给协调节点,最终由协调节点汇总结果返回给客户端。

二、opentenbase_ctl 与 pgxc_ctl 的区别

pgxc_ctl 是 Postgres-XL 原生的集群管理工具,它需要通过复杂的配置文件(pgxc_ctl.conf)定义所有节点参数,虽然提供精细化的控制,但配置过程相对繁琐,适合深入了解集群架构的高级用户使用。

opentenbase_ctl 则是 OpenTenBase 提供的自动化封装工具,它使用简化的配置文件(opentenbase_config.ini),能够自动生成底层复杂的 pgxc_ctl 配置,并自动处理软件包分发和节点初始化流程,大大简化了部署流程,适合大多数用户快速部署和管理集群。

特性

opentenbase_ctl

pgxc_ctl

配置复杂度

低(单一简化配置文件)

高(复杂多参数配置)

自动化程度

高(全自动包分发、初始化)

低(需多步骤手动部署)

部署效率

高(一键式部署)

低(多步骤手动部署)

适用场景

标准环境快速部署

定制化特殊需求部署

维护难度

简单(集中化管理)

复杂(分散化配置)

配置文件

opentenbase_config.ini

pgxc_ctl.conf

学习成本

低(快速上手)

高(需深入理解架构)

三、系统准备与依赖安装

3.1 系统要求

  • 操作系统: OpenEuler 22.03-LTS 或更高版本
  • 内存: 至少 8GB RAM(推荐 16GB+)
  • 磁盘空间: 至少 50GB 可用空间
  • 网络: 集群内节点网络通畅,SSH互通

3.2 创建专用用户和目录

代码语言:javascript
代码运行次数:0
运行
复制
# 使用 root 用户操作
sudo mkdir -p /data
sudo useradd -m -d /data/opentenbase -s /bin/bash opentenbase
sudo passwd opentenbase # 为 opentenbase 用户设置密码
​
# 将用户添加到 sudoers
sudo usermod -aG wheel opentenbase
echo "opentenbase ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers
​
# 创建数据存储目录
sudo mkdir -p /home/opentenbase/data/{gtm,coord,dn_m,dn_s}
sudo chown -R opentenbase:opentenbase /home/opentenbase/data
sudo chown -R opentenbase:opentenbase /data/opentenbase

3.3 安装系统依赖

代码语言:javascript
代码运行次数:0
运行
复制
# 切换到 opentenbase 用户
su - opentenbase
​
# 更新系统
sudo dnf update -y
​
# 安装基础依赖
sudo dnf install -y \
    gcc \
    gcc-c++ \
    make \
    cmake \
    readline-devel \
    zlib-devel \
    openssl-devel \
    uuid-devel \
    bison \
    flex \
    git \
    libcurl-devel \
    libxml2-devel \
    libxslt-devel \
    perl-IPC-Run \
    perl-Test-Simple \
    tcl-devel \
    python3-devel \
    rpm-build \
    pkgconfig \
    krb5-devel \
    openldap-devel \
    vim \
    libssh2-devel \
    sshpass

3.4 编译安装特定版本依赖

1. 下载并编译安装 zstd (高性能压缩库)

代码语言:javascript
代码运行次数:0
运行
复制
cd /tmp
wget https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.tar.gz
tar -xzf zstd-1.5.2.tar.gz
cd zstd-1.5.2
​
# 编译安装到 /usr/local 目录
make -j$(nproc)
sudo make install PREFIX=/usr/local
​
# 更新系统的库缓存路径
sudo ldconfig

2. 下载并编译安装 lz4 (高速压缩库)

代码语言:javascript
代码运行次数:0
运行
复制
cd /tmp
wget https://github.com/lz4/lz4/archive/v1.9.4.tar.gz
tar -xzf v1.9.4.tar.gz
cd lz4-1.9.4
​
# 编译安装到 /usr/local 目录
make -j$(nproc)
sudo make install PREFIX=/usr/local
​
# 更新系统的库缓存路径
sudo ldconfig

3. 确保 libxml2 开发包正确安装

代码语言:javascript
代码运行次数:0
运行
复制
sudo dnf install -y libxml2-devel libxml2
​
# 验证安装是否成功
xml2-config --version
xml2-config --cflags
xml2-config --libs

4. 下载并编译安装 CLI11 (命令行解析库)

代码语言:javascript
代码运行次数:0
运行
复制
cd /tmp
git clone https://github.com/CLIUtils/CLI11.git
cd CLI11
mkdir build && cd build
cmake .. -DCLI11_TESTING=OFF -DCLI11_EXAMPLES=OFF
make -j$(nproc)
sudo make install

3.5 配置环境变量

代码语言:javascript
代码运行次数:0
运行
复制
echo 'export SOURCECODE_PATH=/data/opentenbase/OpenTenBase' >> ~/.bashrc
echo 'export INSTALL_PATH=/data/opentenbase/install' >> ~/.bashrc
echo 'export PG_HOME=$INSTALL_PATH/opentenbase_bin_v5.0' >> ~/.bashrc
echo 'export PATH=$PG_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$PG_HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export LC_ALL=C' >> ~/.bashrc
source ~/.bashrc

3.6 配置 SSH 免密登录

代码语言:javascript
代码运行次数:0
运行
复制
# 生成 SSH 密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
​
# 将公钥添加到 authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
​
# 测试本地免密登录
ssh localhost date

3.7 关闭防火墙和 SELinux

代码语言:javascript
代码运行次数:0
运行
复制
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
​
# 关闭 SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

四、源码编译与安装

4.1 获取源码

代码语言:javascript
代码运行次数:0
运行
复制
mkdir -p $SOURCECODE_PATH
cd /data/opentenbase/
git clone https://github.com/OpenTenBase/OpenTenBase

4.2 编译安装

代码语言:javascript
代码运行次数:0
运行
复制
cd ${SOURCECODE_PATH}
rm -rf ${INSTALL_PATH}/opentenbase_bin_v5.0
chmod +x configure*
./configure --prefix=${INSTALL_PATH}/opentenbase_bin_v5.0 --enable-user-switch --with-libxml --disable-license --with-openssl --with-ossp-uuid CFLAGS="-g"
make clean
make -sj
make install
chmod +x contrib/pgxc_ctl/make_signature
cd contrib
make -sj
make install

4.3 创建安装包

代码语言:javascript
代码运行次数:0
运行
复制
cd ${INSTALL_PATH}/opentenbase_bin_v5.0
tar -zcf ${INSTALL_PATH}/opentenbase-5.21.8-i.x86_64.tar.gz *

五、opentenbase_ctl 集群配置

5.1 创建配置文件

创建配置文件 $INSTALL_PATH/opentenbase_config.ini

代码语言:javascript
代码运行次数:0
运行
复制
# 实例配置
[instance]
name=opentenbase_cluster
type=distributed
package=/data/opentenbase/install/opentenbase-5.21.8-i.x86_64.tar.gz
​
# GTM 配置
[gtm]
master=192.168.1.101
slave=192.168.1.102
​
# 协调节点配置
[coordinators]
master=192.168.1.101,192.168.1.102
slave=192.168.1.103
nodes-per-server=1
​
# 数据节点配置
[datanodes]
primary=192.168.1.101,192.168.1.102
standby=192.168.1.103,192.168.1.104
nodes-per-server=1
​
# 服务器访问配置
[server]
ssh-user=opentenbase
ssh-password=your_password
ssh-port=22
​
# 端口配置
[port]
gtm=6666
coord=5432,5433
datanode=5434,5435,5436,5437
​
# 数据目录配置
[dir]
gtm=/home/opentenbase/data/gtm
coord=/home/opentenbase/data/coord
datanode=/home/opentenbase/data/dn_m,/home/opentenbase/data/dn_s
​
# 日志配置
[log]
level=INFO

5.2 配置参数详解

[instance] 部分
  • name: 集群标识名称,支持字母、数字、下划线
  • type: 集群类型,分布式(distributed)或集中式(centralized)
  • package: OpenTenBase安装包的绝对路径
[gtm] 部分
  • master: GTM主节点IP地址,只能配置一个
  • slave: GTM备节点IP地址,可配置多个(逗号分隔)
[coordinators] 部分
  • master: CN主节点IP地址列表
  • slave: CN备节点IP地址列表
  • nodes-per-server: 每台服务器部署的CN实例数(默认1)
[datanodes] 部分
  • primary: DN主节点IP地址列表
  • standby: DN备节点IP地址列表
  • nodes-per-server: 每台服务器部署的DN实例数(默认1)
[server] 部分
  • ssh-user: 用于集群部署的系统用户名
  • ssh-password: 对应用户的密码
  • ssh-port: SSH服务端口号
[port] 部分
  • gtm: GTM服务端口
  • coord: 协调节点端口列表
  • datanode: 数据节点端口列表
[dir] 部分
  • gtm: GTM数据目录
  • coord: 协调节点数据目录
  • datanode: 数据节点数据目录列表

六、集群部署与管理

6.1 生成详细配置

代码语言:javascript
代码运行次数:0
运行
复制
cd $INSTALL_PATH
opentenbase_ctl generate -c opentenbase_config.ini

此命令会根据简化的 opentenbase_config.ini 生成详细的 pgxc_ctl.conf 配置文件。

6.2 集群安装

代码语言:javascript
代码运行次数:0
运行
复制
opentenbase_ctl install -c opentenbase_config.ini

安装过程包含以下步骤:

  1. 创建软件包
  2. 传输并解压到各个服务器
  3. 安装GTM主节点
  4. 安装CN和DN主节点
  5. 安装所有备节点
  6. 创建节点组

6.3 集群状态检查

代码语言:javascript
代码运行次数:0
运行
复制
opentenbase_ctl status -c opentenbase_config.ini

该命令显示集群的详细状态信息,包括实例名称、版本号、各个节点的运行状态,以及主CN节点的连接信息。

6.4 集群管理命令

代码语言:javascript
代码运行次数:0
运行
复制
# 启动集群
opentenbase_ctl start -c opentenbase_config.ini
​
# 停止集群
opentenbase_ctl stop -c opentenbase_config.ini
​
# 重启集群
opentenbase_ctl restart -c opentenbase_config.ini
​
# 清理集群(删除数据文件)
opentenbase_ctl clean -c opentenbase_config.ini
​
# 重新初始化集群
opentenbase_ctl reinit -c opentenbase_config.ini

七、集群使用与验证

7.1 连接集群

代码语言:javascript
代码运行次数:0
运行
复制
export LD_LIBRARY_PATH=$PG_HOME/lib
export PATH=$PG_HOME/bin:$PATH
 psql -h 127.0.0.1 -p 30004

7.2 基本操作验证

代码语言:javascript
代码运行次数:0
运行
复制
-- 查看集群节点信息
SELECT * FROM pgxc_node;
​
-- 创建默认节点组和分片组
CREATE DEFAULT NODE GROUP default_group WITH (dn001);
CREATE SHARDING GROUP TO GROUP default_group;
​
-- 创建测试数据库和分布式表
CREATE DATABASE testdb;
\c testdb
​
CREATE TABLE dist_table (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    create_time TIMESTAMP DEFAULT NOW()
) DISTRIBUTE BY SHARD(id) TO GROUP default_group;
​
-- 插入和查询测试数据
INSERT INTO dist_table (name) VALUES ('测试数据1'), ('测试数据2'), ('测试数据3');
SELECT * FROM dist_table;
​
-- 查看数据分布情况
SELECT xc_node_id, COUNT(*) FROM dist_table GROUP BY xc_node_id;

结语​

通过本文的详细阐述,我们系统地完成了从系统准备、依赖配置、源码编译到使用opentenbase_ctl工具一键部署和管理OpenTenBase分布式集群的全过程。正如所见,opentenbase_ctl工具极大地简化了集群管理的复杂度,将用户从繁琐的多节点配置中解放出来,使企业能够快速、可靠地搭建起高性能的分布式数据库平台。

祝您部署顺利,尽情享受分布式数据库带来的强大能力!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言​​
  • 一、OpenTenBase 集群基础架构
  • 二、opentenbase_ctl 与 pgxc_ctl 的区别
  • 三、系统准备与依赖安装
    • 3.1 系统要求
    • 3.2 创建专用用户和目录
    • 3.3 安装系统依赖
    • 3.4 编译安装特定版本依赖
    • 3.5 配置环境变量
    • 3.6 配置 SSH 免密登录
    • 3.7 关闭防火墙和 SELinux
  • 四、源码编译与安装
    • 4.1 获取源码
    • 4.2 编译安装
    • 4.3 创建安装包
  • 五、opentenbase_ctl 集群配置
    • 5.1 创建配置文件
    • 5.2 配置参数详解
      • [instance] 部分
      • [gtm] 部分
      • [coordinators] 部分
      • [datanodes] 部分
      • [server] 部分
      • [port] 部分
      • [dir] 部分
  • 六、集群部署与管理
    • 6.1 生成详细配置
    • 6.2 集群安装
    • 6.3 集群状态检查
    • 6.4 集群管理命令
  • 七、集群使用与验证
    • 7.1 连接集群
    • 7.2 基本操作验证
  • 结语​​
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档