约翰尼德普的小心脏 發表於 2025-10-21 00:00:00

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>什么是OpenTenBase</li><li>OpenTenBase源码编译安装<ul class="second_class_ul"><li>安装依赖</li><li>创建opentenbase用户</li><li>源码获取</li><li>编译安装</li><li>初始化数据库</li><li>初始化数据库集群</li><li>启动与停止服务</li><li>基本使用示例</li><li>开机自启动配置</li></ul></li><li>总结<ul class="second_class_ul"><li>官网教程链接</li></ul></li><li>OpenTenBase配置冷热数据分离<ul class="second_class_ul"><li>一、环境配置</li><li>二、冷热数据分离的配置步骤</li></ul></li><li>三、创建表<ul class="second_class_ul"><li>四、插入数据</li><li>五、验证</li></ul></li></ul></div><p class="maodian"></p><h2>什么是OpenTenBase</h2>
<p>OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将 OpenTenBase 配置一台或者多台主机上, OpenTenBase 数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是 distributed 或者 replicated ,当向OpenTenBase发送查询 SQL时, OpenTenBase 会自动向数据节点发出查询语句并获取最终结果。</p>
<p>OpenTenBase 采用分布式集群架构(如下图), 该架构分布式为无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转,各处理单元之间通过网络协议进行通信,并行处理和扩展能力更好,这也意味着只需要简单的x86服务器就可以部署 OpenTenBase 数据库集群</p>
<p style="text-align:center"><img alt="https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/11456577/20250823-efa47977.png?q-sign-algorithm=sha1&amp;q-ak=AKID5-yd54daW5Ks9MuQ6q1_lu8nL6-JrQHh8nc2lb_c9lhwtMoT4_bdnBQtw72dh80o&amp;q-sign-time=1755945712%3B1755949312&amp;q-key-time=1755945712%3B1755949312&amp;q-header-list=host&amp;q-url-param-list=&amp;q-signature=5a8e40534d59464829713b60f658728f81db0a46&amp;x-cos-security-token=j6aH3TLGYGHUyXZfwT5F9j5O9JNBmYza3d2ce82e0f48120f1e36e53e77cd520b8_XeTEM6cE3Us8iA4fctU8b00OvC0Re_SZqiVa4yEEie42wIwpTPmwFu65BZBu5-5s9SfqnlIspGz77LiML9TyhW2-Lvt5LDkP2Y8zUjRLqu0zf1q9drwuLkAgBd-7Ifs-AZwQYyNNhP3JCVVjTkm9QGRnUUrFd41ah2CJmNcAZg9-1D9B3TNOuzIQHgJvtisOUk95YvrO2CaRLbhKgECPnhdKlDlLCs9zr0UasDX41TXdRm0LjA2iqP0WflZagBhsmedalNxdQOqLB_Yw5ZrA6btqqfymvYhrdHokob3PRD2R1eT44cKs75xtBt-7g0RQ_mn6EySEZTkRxiv5L5G-B6AcWDUx4VBKwkIvgVIPHGSsy74FQfqRHwJHgfEwl8iHQZ4BXHjaXLE3DWHsaPpX51K1D68Zz0HAgdqFWMPThtTXJo0_y8kxbnz_3uZq2VJi4QqSA3uSVJuUpgR_USz802v_XvF5PiaTjDnq0zTn4IVw4c2xeZTggj3gwYDOTq7y0D8C7k5rIh9O51CSw5IPleRnKoGrgeSOyj1hO8Ci1g4xyrtNNPWx20pZhkwvlHI9ve8JfhCRZG53ld03m7kuNlpgoHhH-DnJRT67RMBkN0uMxp9TnTEDP1F058_XsKr7yMl_applKR_e4gcSEdSzAhFKZPxx2si4_KoXI6DBmO2LM57LHlGdi_SXEV9x2u" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494U38.png" /></p>
<p>下面简单解读一下OpenTenBase的三大模块</p>
<p>Coordinator:协调节点(简称CN)<br />业务访问入口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。</p>
<p>Datanode:数据节点(简称DN)<br />每个节点还存储业务数据的分片在功能上,DN节点负责完成执行协调节点分发的执行请求。</p>
<p>GTM:全局事务管理器(Global Transaction Manager)<br />负责管理集群事务信息,同时管理集群的全局对象,比如序列等。</p>
<p>接下来,让我们来看看如何从源码开始,完成到OpenTenBase集群环境的搭建。</p>
<p class="maodian"></p><h2>OpenTenBase源码编译安装</h2>
<p>我们这里使用虚拟机里面的CentOS 7进行测试</p>
<p class="maodian"></p><h3>安装依赖</h3>
<div class="dxycode"><pre class="brush:bash;">yum -yinstall gcc make readline-devel zlib-devel openssl-devel uuid-devel bison flex git</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494Q25.png" /></p>
<p class="maodian"></p><h3>创建opentenbase用户</h3>
<p>注意:所有需要安装OpenTenBase集群的机器上都需要创建</p>
<div class="dxycode"><pre class="brush:bash;">mkdir /data
useradd-d /data/opentenbase -s /bin/bash -m opentenbase
passwd opentenbase # set password</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494V42.png" /></p>
<p class="maodian"></p><h3>源码获取</h3>
<p>这里使用的是国内的gitee,大家也可以使用github上面的</p>
<div class="dxycode"><pre class="brush:bash;">git clone https://gitee.com/mirrors/OpenTenBase.git</pre></div>
<div class="dxycode"><pre class="brush:bash;">git clone https://github.com/OpenTenBase/OpenTenBase.git</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494U52.png" /></p>
<p class="maodian"></p><h3>编译安装</h3>
<div class="dxycode"><pre class="brush:bash;"># 创建编译目录
mkdir build &amp;&amp; cd build
# 配置编译选项
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/opentenbase
# 编译并安装
make -j$(nproc)
sudo make install</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494S95.png" /></p>
<p class="maodian"></p><h3>初始化数据库</h3>
<p>创建数据库用户和目录</p>
<div class="dxycode"><pre class="brush:bash;"># 创建数据库用户
sudo useradd -m otb
sudo passwd otb
# 创建数据目录
sudo mkdir -p /data/opentenbase
sudo chown -R otb:otb /data/opentenbase</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164949207.png" /></p>
<p class="maodian"></p><h3>初始化数据库集群</h3>
<p>切换到 otb 用户执行:</p>
<div class="dxycode"><pre class="brush:bash;">su - otb
# 设置环境变量
echo "export PATH=/usr/local/opentenbase/bin:\$PATH" &gt;&gt; ~/.bashrc
source ~/.bashrc
# 初始化数据库
initdb -D /data/opentenbase</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164949195.png" /></p>
<p class="maodian"></p><h3>启动与停止服务</h3>
<div class="dxycode"><pre class="brush:bash;"># 启动数据库
pg_ctl -D /data/opentenbase -l logfile start
# 停止数据库
pg_ctl -D /data/opentenbase stop
# 重启数据库
pg_ctl -D /data/opentenbase restart</pre></div>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494a09.png" /></p>
<p class="maodian"></p><h3>基本使用示例</h3>
<div class="dxycode"><pre class="brush:sql;"># 进入数据库
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;</pre></div>
<p class="maodian"></p><h3>开机自启动配置</h3>
<div class="dxycode"><pre class="brush:bash;">sudo vi /etc/systemd/system/opentenbase.service</pre></div>
<p>写入以下内容:</p>
<div class="dxycode"><pre class="brush:bash;">
Description=OpenTenBase Database Service
After=network.target

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

WantedBy=multi-user.target</pre></div>
<p>启用并启动:</p>
<div class="dxycode"><pre class="brush:bash;">sudo systemctl daemon-reexec
sudo systemctl enable opentenbase
sudo systemctl start opentenbase</pre></div>
<p class="maodian"></p><h2>总结</h2>
<p>到这里,你已经在 CentOS 7 上完成了 OpenTenBase 的安装与配置,可以像 PostgreSQL 一样使用它。如果你是第一次接触,建议从简单的 SQL 语句和表操作入手,然后逐步尝试 OpenTenBase 的分布式特性。<br />本文档只是给用户一个简单的指引,演示如何从源码开始,一步一步搭建一个完整的OpenTenBase集群。</p>
<p class="maodian"></p><h3>官网教程链接</h3>
<p>https://docs.opentenbase.org/</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-2510211649491K.png" /></p>
<p class="maodian"></p><h2>OpenTenBase配置冷热数据分离</h2>
<p class="maodian"></p><h3>一、环境配置</h3>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-25102116494b46.png" /></p>
<p class="maodian"></p><h3>二、冷热数据分离的配置步骤</h3>
<p>以下是在 OpenTenBase 中配置冷热数据分离的基本步骤:</p>
<p><strong>2.1 参数配置</strong></p>
<p>1)确认冷热数据分离界线</p>
<p>示例:以年度为单位, 记录时间小于2022-01-01为冷数据,大于2022-01-01为热数据</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-2510211649501B.png" /></p>
<p><strong>注意:以上参数要求所有DN上均需要修改,重启DN生效。</strong></p>
<p><strong>2.2 创建冷数据组</strong></p>
<p>1)查看当前组和DN节点</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164950Z2.png" /></p>
<p>2)查看当前节点信息</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164950505.png" /></p>
<p>3)创建冷数据组</p>
<p>从上面查询可以确认,dn003未被使用</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164951349.png" /></p>
<p class="maodian"></p><h2>三、创建表</h2>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164951123.png" /></p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164951209.png" /></p>
<p class="maodian"></p><h3>四、插入数据</h3>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164952S6.png" /></p>
<p class="maodian"></p><h3>五、验证</h3>
<p><strong>5.1 验证热数据访问的节点</strong></p>
<p>当前从2022-01-01开始为热数据</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164952592.png" /></p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164953W2.png" /></p>
<p>可以看到执行计划访问的dn001和dn002是热数据所在的default_group组。</p>
<p><strong>5.2 验证冷数据访问的节点</strong></p>
<p>当前inserttimeforhis小于2022-01-01开始为冷数据</p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20251021/2-251021164953335.png" /></p>
<p>可以看到执行计划访问的dn003是冷数据所在的cold_group组。</p>
<p>以上就是在 CentOS 7 上搭建 OpenTenBase 集群:从源码到生产环境的全流程指南的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: 在CentOS 7上搭建OpenTenBase集群从源码到生产环境的全流程指南