在CentOS 7上搭建OpenTenBase集群从源码到生产环境的全流程指南

一、OpenTenBase 简介

OpenTenBase 是一款 面向高可用和高扩展场景的分布式关系型数据库集群平台,核心特点是支持多主节点写入、数据自动同步以及强一致事务处理。

在实际部署中,OpenTenBase 可以运行在一台或多台服务器上,业务数据分布存储在多个物理节点中。用户在使用时,只需像访问普通数据库一样提交 SQL 语句,OpenTenBase 会自动完成查询拆分、调度执行以及结果汇总,对上层应用透明。

在数据存储层面,OpenTenBase 提供了两种表存储模式:

  • distributed(分布式表)

  • replicated(复制表)

当 SQL 请求进入系统后,协调节点会根据表类型和数据分布策略,将请求下发到对应的数据节点执行,最终返回完整结果。


二、OpenTenBase 的整体架构解析

OpenTenBase 采用 Share Nothing(无共享)分布式架构。在这种架构下:

  • 各节点相互独立

  • 不共享磁盘和内存

  • 通过网络协议进行通信

  • 支持横向扩展

这意味着,OpenTenBase 可以部署在普通的 x86 服务器上,而无需依赖昂贵的专用硬件,具备良好的性价比和扩展能力。


三、OpenTenBase 的三大核心组件

1. Coordinator(协调节点,CN)

协调节点是整个集群的访问入口,主要职责包括:

  • 接收客户端请求

  • 生成和优化查询执行计划

  • 将 SQL 请求分发到对应的数据节点

  • 汇总执行结果并返回给客户端

需要注意的是:
CN 节点只保存系统级元数据,不存储具体业务数据
多个 CN 节点之间是对等关系,对外提供一致的数据库视图。


2. Datanode(数据节点,DN)

数据节点负责:

  • 实际存储业务数据分片

  • 执行协调节点下发的 SQL 操作

  • 返回执行结果

在集群中,每个 DN 节点只处理自身负责的数据,多个 DN 节点可以并行工作,从而显著提升整体吞吐能力。


3. GTM(全局事务管理器)

GTM 是 OpenTenBase 实现分布式事务一致性的关键组件,主要功能包括:

  • 管理全局事务 ID

  • 协调分布式事务提交与回滚

  • 维护全局对象(如序列等)

在多节点并发写入场景下,GTM 能确保事务的一致性和可靠性。


四、从源码开始部署 OpenTenBase(CentOS 7 实战)

本文以 CentOS 7 虚拟机环境 为例,演示 OpenTenBase 的基本安装流程。


1. 安装依赖环境

yum -y install gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git

2. 创建运行用户

注意:所有参与集群部署的服务器都需要创建相同用户

mkdir /data
useradd -d /data/opentenbase -s /bin/bash -m opentenbase
passwd opentenbase

3. 获取源码

可从 Gitee 或 GitHub 拉取源码:

git clone https://gitee.com/mirrors/OpenTenBase.git
# 或
git clone https://github.com/OpenTenBase/OpenTenBase.git

4. 编译与安装

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/opentenbase
make -j$(nproc)
sudo make install

五、初始化数据库实例

1. 创建数据库用户与数据目录

sudo useradd -m otb
sudo passwd otb
sudo mkdir -p /data/opentenbase
sudo chown -R otb:otb /data/opentenbase

2. 初始化数据库

su - otb
echo "export PATH=/usr/local/opentenbase/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
initdb -D /data/opentenbase

六、服务管理与基本使用

启动与停止数据库

pg_ctl -D /data/opentenbase -l logfile start
pg_ctl -D /data/opentenbase stop
pg_ctl -D /data/opentenbase restart

基本使用示例

psql -U otb -d postgres
CREATE DATABASE testdb;
\c testdb
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
age INT
);
INSERT INTO users VALUES (DEFAULT, 'Alice', 25), (DEFAULT, 'Bob', 30);
SELECT * FROM users;

七、配置开机自启动(systemd)

创建服务文件:

sudo vi /etc/systemd/system/opentenbase.service

写入内容:

[Unit]
Description=OpenTenBase Database Service
After=network.target
[Service]
Type=forking
User=otb
ExecStart=/usr/local/opentenbase/bin/pg_ctl -D /data/opentenbase -l /data/opentenbase/logfile start
ExecStop=/usr/local/opentenbase/bin/pg_ctl -D /data/opentenbase stop
ExecReload=/usr/local/opentenbase/bin/pg_ctl -D /data/opentenbase restart

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reexec
sudo systemctl enable opentenbase
sudo systemctl start opentenbase

八、OpenTenBase 冷热数据分离原理简述

在实际生产环境中,OpenTenBase 支持通过 节点分组(Group) 实现冷热数据分离:

  • 热数据:存放在高性能 DN 组,频繁访问

  • 冷数据:存放在低频访问 DN 组,降低资源占用

例如:

  • 2022-01-01 之后的数据作为热数据

  • 更早的数据划分为冷数据

通过执行计划可以清晰看到:

  • 热数据查询命中 default_group

  • 冷数据查询命中 cold_group

从而实现查询性能与资源利用率的平衡。


九、总结

通过以上步骤,你已经完成了 从源码编译到基本可用的 OpenTenBase 集群部署。在使用方式上,它与 PostgreSQL 保持高度兼容,非常适合逐步上手。

如果是初次使用,建议:

  • 先熟悉基础 SQL 操作

  • 再尝试分布式表和冷热数据分离

  • 最后再进行生产级集群优化

本文主要作为入门级参考,帮助你理解 OpenTenBase 的核心思想与部署流程。

官方文档可参考:
👉 https://docs.opentenbase.org/

原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/2113.html

(0)
admin的头像admin
上一篇 2025年10月20日 上午12:00
下一篇 2025年10月21日 上午12:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

QQ
分享本页
返回顶部