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

目 录

什么是OpenTenBase

OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将 OpenTenBase 配置一台或者多台主机上, OpenTenBase 数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是 distributed 或者 replicated ,当向OpenTenBase发送查询 SQL时, OpenTenBase 会自动向数据节点发出查询语句并获取最终结果。

OpenTenBase 采用分布式集群架构(如下图), 该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署 OpenTenBase 数据库集群

下面简单解读一下OpenTenBase的三大模块

  • Coordinator:协调节点(简称CN)

    业务访问入口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。

  • Datanode:数据节点(简称DN)

    每个节点还存储业务数据的分片在功能上,DN节点负责完成执行协调节点分发的执行请求。

  • GTM:全局事务管理器(Global Transaction Manager)

    负责管理集群事务信息,同时管理集群的全局对象,比如序列等。

接下来,让我们来看看如何从源码开始,完成到OpenTenBase集群环境的搭建。

OpenTenBase源码编译安装

我们这里使用虚拟机里面的CentOS 7进行测试

安装依赖

bash 复制代码
yum -y install gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git

创建opentenbase用户

注意:所有需要安装OpenTenBase集群的机器上都需要创建

bash 复制代码
mkdir /data
useradd -d /data/opentenbase -s /bin/bash -m opentenbase
passwd opentenbase # set password

源码获取

这里使用的是国内的gitee,大家也可以使用github上面的

bash 复制代码
git clone https://gitee.com/mirrors/OpenTenBase.git
bash 复制代码
git clone https://github.com/OpenTenBase/OpenTenBase.git

编译安装

bash 复制代码
# 创建编译目录
mkdir build && cd build

# 配置编译选项
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/opentenbase

# 编译并安装
make -j$(nproc)
sudo make install

初始化数据库

创建数据库用户和目录

bash 复制代码
# 创建数据库用户
sudo useradd -m otb
sudo passwd otb

# 创建数据目录
sudo mkdir -p /data/opentenbase
sudo chown -R otb:otb /data/opentenbase

初始化数据库集群

切换到 otb 用户执行:

bash 复制代码
su - otb

# 设置环境变量
echo "export PATH=/usr/local/opentenbase/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

# 初始化数据库
initdb -D /data/opentenbase

启动与停止服务

bash 复制代码
# 启动数据库
pg_ctl -D /data/opentenbase -l logfile start

# 停止数据库
pg_ctl -D /data/opentenbase stop

# 重启数据库
pg_ctl -D /data/opentenbase restart

基本使用示例

bash 复制代码
# 进入数据库
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 (name, age) VALUES ('Alice', 25), ('Bob', 30);

# 查询数据
SELECT * FROM users;

开机自启动配置

bash 复制代码
sudo vi /etc/systemd/system/opentenbase.service

写入以下内容:

ini 复制代码
[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

启用并启动:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl enable opentenbase
sudo systemctl start opentenbase

总结

到这里,你已经在 CentOS 7 上完成了 OpenTenBase 的安装与配置,可以像 PostgreSQL 一样使用它。如果你是第一次接触,建议从简单的 SQL 语句和表操作入手,然后逐步尝试 OpenTenBase 的分布式特性。

本文档只是给用户一个简单的指引,演示如何从源码开始,一步一步搭建一个完整的OpenTenBase集群。

官网教程链接

bash 复制代码
https://docs.opentenbase.org/
相关推荐
REDcker1 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng2 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟2 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记2 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday3 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256733 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无4 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801685 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
码云数智-大飞5 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
Strugglingler5 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file