首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenTenBase 5.0 编译与使用实践

OpenTenBase 5.0 编译与使用实践

原创
作者头像
muzimu
修改2026-04-22 12:58:31
修改2026-04-22 12:58:31
2580
举报

日期:2025 年 9 月 11 日

作者:李枨、张瑞

概述

作为OpenTenBase 俱乐部成员,我们基于在 CentOS 8 系统上成功编译部署 OpenTenBase 5.0 的实践经验,完成了从源码构建到功能验证的全流程技术落地,并重点解决了编译过程中因第三方组件引发的许可证兼容性问题,形成可复用的安装与配置指南。

OpenTenBase 作为一款面向高可靠性和横向扩展能力的分布式关系型数据库,其“GTM+CN+DN”架构逻辑清晰、部署灵活,仅需普通 x86 服务器即可构建完整集群,不仅适用于高校教学实验与科研验证场景,也能为校内中小型应用系统提供稳定的数据底座,充分契合校园技术实践对低成本、易维护、可拓展的综合需求。

在实际操作中,我们以 CentOS 8(或兼容的 RHEL 8 系统)为基础环境,系统完成了依赖库安装、许可证问题规避、源码编译与链接等关键步骤,成功构建 OpenTenBase 5.0 可执行程序;随后完成单机多节点集群的初始化与启动,通过精细化配置 GTM(全局事务管理器)、CN(协调节点)和 DN(数据节点)的角色与通信参数,保障了集群内部事务一致性与服务稳定性。

本指南详细记录了编译过程中常见的许可证冲突问题及其解决方案,并提供了完整的环境准备、编译步骤、集群配置与启停流程,具备强实操性与可复制性。后续我们将以此为基础,探索 OpenTenBase 在校园业务中的深度应用,推动“数据库 + AI”“分布式架构 + 教学管理”等融合场景的技术创新,助力 OpenTenBase 在高校生态中落地生根。

环境要求

系统环境

  • 操作系统: Rocky Linux 8.10(点击下载)
  • 内存: 至少 4GB RAM (推荐 8GB+)
  • 磁盘空间: 至少 20GB 可用空间
  • 网络: 需要访问外网下载依赖包

用户权限

  • 需要具有 sudo 权限的用户账户
  • 建议创建专用的 opentenbase 用户

一、环境准备

1.1 创建专用用户

代码语言:bash
复制
# 创建数据目录
sudo mkdir /data

# 创建 opentenbase 用户
sudo useradd -d /data/opentenbase -s /bin/bash -m opentenbase

# 设置密码
sudo passwd opentenbase

# 添加 sudo 权限
sudo visudo
# 在文件中添加:opentenbase ALL=(ALL) ALL

1.2 安装系统依赖

代码语言:bash
复制
# 切换到 opentenbase 用户
su - opentenbase

# 安装基础开发工具
sudo yum groupinstall -y "Development Tools"
# 启用 powertools 仓库( 解决uuid-devel和perl-IPc-Run找不到问题 )
sudo yum config-manager --set-enabled powertools
sudo yum install -y epel-release  # 安装 EPEL 仓库
sudo yum 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

# 下载zstd源码
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

# 编译安装
make
sudo make install PREFIX=/usr/local

# 更新库路径
sudo ldconfig

# 设置环境变量
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

# 下载lz4源码
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

# 编译安装
make
sudo make install PREFIX=/usr/local

# 更新库路径
sudo ldconfig

# 设置环境变量
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"

# 首先检查当前的包管理器状态
sudo dnf clean all

# 安装libxml2-devel及其依赖包
sudo dnf install -y libxml2-devel libxml2 cmake-filesystem xz-devel zlib-devel pkgconfig

# 验证安装
rpm -qa | grep libxml2
# 检查xml2-config命令是否可用
which xml2-config

# 检查pkg-config是否能找到libxml-2.0
pkg-config --exists libxml-2.0 && echo "libxml2 found" || echo "libxml2 NOT found"

# 查看libxml2的配置信息
xml2-config --version
xml2-config --cflags
xml2-config --libs

# 下载CLI11源码
cd /tmp
git clone https://github.com/CLIUtils/CLI11.git
cd CLI11

mkdir build 
cd build


cmake ..
make clean
make -j4
sudo make install
dnf repolist

二、源码获取与编译

2.1 获取源码

代码语言:bash
复制
# 获取源码
cd /data/opentenbase
git clone -b v5.0-release_new https://github.com/OpenTenBase/OpenTenBase.git
# 连接不上github的时候,可使用 gitee.com 加速(推荐)
git clone -b v5.0-release_new https://gitee.com/mirrors/OpenTenBase.git

# 设置环境变量
export SOURCECODE_PATH=/data/opentenbase/OpenTenBase
export INSTALL_PATH=/data/opentenbase/install #(不存在的话自行创建该文件夹)

如果连接不上github,可以尝试用gitee,或者禁用防火墙。

以下为成功的截图

2.2 编译主程序

代码语言:bash
复制
# 进入源码目录
cd ${SOURCECODE_PATH}

# 设置执行权限
chmod +x configure*

# 清理之前的编译(如果之前搞过)
make distclean 2>/dev/null || true
rm -rf /data/opentenbase/install/opentenbase_bin_v2.0
rm -f config.status config.log

# 配置编译 - 关键:添加 SSE4.2 支持和 DNOLIC 标志
CFLAGS="-g -O2 -w -msse4.2 -mcrc32 -DNOLIC" \
CXXFLAGS="-g -O2 -w -msse4.2 -mcrc32 -DNOLIC" \
./configure --prefix=/data/opentenbase/install/opentenbase_bin_v2.0 \
    --enable-user-switch \
    --with-openssl \
    --with-ossp-uuid \
    --with-libxml

# 编译主程序
make -j4
make install

2.3 编译扩展模块

代码语言:bash
复制
# 设置执行权限
chmod +x contrib/pgxc_ctl/make_signature

# 进入 contrib 目录
cd contrib
make clean
# 编译扩展模块 - 关键:使用正确的编译标志,如果卡住请使用回车键
make -j4

# 安装扩展模块
make install

三、其中关键问题解决思路(出现问题可以看看)

3.1 许可证问题解决

问题: 编译时出现许可证相关错误,无法创建数据库。

解决方案:

  1. 添加 SSE4.2 CPU 指令集支持:-msse4.2 -mcrc32
  2. 添加 DNOLIC 编译标志:-DNOLIC

这两个标志的组合可以绕过许可证检查,允许正常使用所有功能。

3.2 编译依赖问题

pgvector 模块 C99 错误:

代码语言:bash
复制
# 解决方案:添加 C99 标准支持
make CFLAGS+='-std=gnu99' -j4

opentenbase_ctl 模块 C++17 错误:

代码语言:bash
复制
# 解决方案:使用 devtoolset-8 提供的 GCC 8
source /opt/rh/devtoolset-8/enable
make CXXFLAGS+='-std=c++17' CMAKE=cmake3 -j4

以上是解决思路

四、环境配置

4.1 设置环境变量

代码语言:bash
复制
# 编辑 ~/.bashrc
vim ~/.bashrc

# 添加以下内容
export OPENTENBASE_HOME=/data/opentenbase/install/opentenbase_bin_v2.0
export PATH=$OPENTENBASE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$OPENTENBASE_HOME/lib:${LD_LIBRARY_PATH}
export LC_ALL=C

# 使环境变量生效
source ~/.bashrc

4.2关闭 SELINUX 和 配置防火墙

代码语言:bash
复制
sudo vim /etc/sysconfig/selinux

● 临时关闭 SELinux

○ 使用命令getenforce查看 SELinux 当前状态,如果返回Enforcing,表明 SELinux 处于强制模式。

○ 执行命令setenforce 0,将 SELinux 设置为宽容模式(Permissive),即临时关闭 SELinux。此时 SELinux 会记录违反策略的行为但不会阻止它们,不过系统重新启动后 SELinux 将会恢复到之前的状态。

● 永久关闭 SELinux

○ 编辑 SELinux 配置文件/etc/selinux/config,可以使用命令vi /etc/selinux/config。

○ 在文件中找到SELINUX=enforcing这一行,将其改为SELINUX=disabled

○ 保存文件并重启系统,命令为reboot。重启后 SELinux 就会被永久关闭。

配置防火墙
代码语言:bash
复制
# 开放GTM端口
sudo firewall-cmd --permanent --add-port=6666/tcp

# 开放Coordinator端口
sudo firewall-cmd --permanent --add-port=30004/tcp

# 开放Datanode端口
sudo firewall-cmd --permanent --add-port=20008/tcp

# 重新加载防火墙规则
sudo firewall-cmd --reload

4.3配置 SSH 免密登录(opentenbase 用户下进行)

代码语言:bash
复制
su - opentenbase
ssh-keygen -t rsa # 一路回车即可
ssh-copy-id -i ~/.ssh/id_rsa.pub opentenbase@localhost # 回答yes
# 修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys

# 测试ssh登录(如果成功则不需要输入密码)
ssh localhost

# 如果ssh登录需要密码,则检查/etc/ssh/sshd_config配置:
sudo vim /etc/ssh/sshd_config

#确保以下配置未被注释(去掉前面的#号):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RSAAuthentication yes
PasswordAuthentication yes

# 重启ssh服务
sudo systemctl restart sshd

# 再次测试
ssh localhost

五、集群配置与启动

5.1单节点集群部署(推荐入门)

创建集群配置文件
代码语言:bash
复制
# 创建配置文件
cat > /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf << 'EOF'
#!/usr/bin/env bash

#---- OVERALL -----------------------------------------------------------------------------
pgxcOwner=opentenbase
pgxcUser=$pgxcOwner
pgxcInstallDir=/data/opentenbase/install/opentenbase_bin_v2.0
tmpDir=/tmp
localTmpDir=$tmpDir
configBackup=y
configBackupHost=localhost
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak

#---- GTM --------------------------------------------------------------------------------
gtmName=gtm
gtmMasterServer=localhost
gtmMasterPort=6666
gtmMasterDir=/data/opentenbase/data/gtm
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=none

gtmSlave=n
gtmSlaveName=gtmSlave
gtmSlaveServer=none
gtmSlavePort=20001
gtmSlaveDir=none
gtmSlaveSpecificExtraConfig=none

gtmProxy=n
gtmProxyNames=()
gtmProxyServers=()
gtmProxyPorts=()
gtmProxyDirs=()
gtmPxyExtraConfig=none
gtmPxySpecificExtraConfig=()

#---- Coordinators --------------------------------------------------------------------
coordMasterDir=/data/opentenbase/data/coord_master
coordSlaveDir=/data/opentenbase/data/coord_slave
coordArchLogDir=/data/opentenbase/data/coord_archlog

coordNames=(cn001)
coordPorts=(30004)
poolerPorts=(30014)
coordForwardPorts=(30024)
coordPgHbaEntries=(0.0.0.0/0)

coordMasterServers=(localhost)
coordMasterDirs=(/data/opentenbase/data/coord_master/cn001)
coordMaxWALsender=5
coordMaxWALSenders=(5)

coordSlave=n
coordSlaveSync=n
coordSlaveServers=(none)
coordSlavePorts=(30005)
coordSlavePoolerPorts=(30015)
coordSlaveForwardPorts=(30025)
coordSlaveDirs=(none)
coordArchLogDirs=(none)

coordExtraConfig=none
coordSpecificExtraConfig=(none)
coordSpecificExtraPgHba=(none)

#---- Datanodes -----------------------------------------------------------------------
datanodeMasterDir=/data/opentenbase/data/dn_master
datanodeSlaveDir=/data/opentenbase/data/dn_slave
datanodeArchLogDir=/data/opentenbase/data/datanode_archlog

primaryDatanode=dn001
datanodeNames=(dn001)
datanodePorts=(20008)
datanodePoolerPorts=(20018)
datanodeForwardPorts=(20028)
datanodePgHbaEntries=(0.0.0.0/0)

datanodeMasterServers=(localhost)
datanodeMasterDirs=(/data/opentenbase/data/dn_master/dn001)
datanodeMaxWalSender=5
datanodeMaxWALSenders=(5)

datanodeSlave=n
datanodeSlaveServers=(none)
datanodeSlavePorts=(20009)
datanodeSlavePoolerPorts=(20019)
datanodeSlaveForwardPorts=(20029)
datanodeSlaveDirs=(none)
datanodeArchLogDirs=(none)

datanodeExtraConfig=none
datanodeSpecificExtraConfig=(none)
datanodeSpecificExtraPgHba=(none)

walArchive=n
EOF

5.2 初始化和启动集群

代码语言:bash
复制
# 启动集群管理工具
pgxc_ctl -c /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf

# 在 pgxc_ctl 命令行中执行:
deploy all    # 分发二进制文件
init all      # 初始化集群

5.3 集群管理命令

代码语言:bash
复制
# 在 pgxc_ctl 中可用的命令:
monitor all   # 监控集群状态
stop all      # 停止集群
start all     # 启动集群
clean all     # 清理集群数据

六、使用指南

6.1 连接数据库和创建节点分片

代码语言:bash
复制
# 连接到协调节点
psql -h 127.0.0.1 -p 30004 -d postgres -U opentenbase

OpenTenBase使用数据节点组来增加节点管理的灵活性。需要创建一个默认组来使用,因此需要提前创建。通常,所有数据节点都会被添加到默认组中:

代码语言:sql
复制
-- 创建默认节点组
CREATE DEFAULT NODE GROUP default_group WITH (dn001);

-- 创建分片组
CREATE SHARDING GROUP TO GROUP default_group;

6.2 创建数据库和表

代码语言:sql
复制
-- 创建数据库(包括 library217)
CREATE DATABASE library217;

-- 连接到新数据库
\c library217

-- 创建分布式表
CREATE TABLE books (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255),
    author VARCHAR(255),
    isbn VARCHAR(20)
) DISTRIBUTE BY SHARD(id);

-- 插入测试数据
INSERT INTO books (title, author, isbn) VALUES 
('OpenTenBase Guide', 'TencentDB Team', '978-0000000001'),
('Distributed Database', 'Tech Author', '978-0000000002');

-- 查询数据
SELECT * FROM books;

6.3 使用 AI 扩展

代码语言:sql
复制
-- 安装 HTTP 扩展
CREATE EXTENSION IF NOT EXISTS http;

-- 启用 AI 扩展
CREATE EXTENSION IF NOT EXISTS opentenbase_ai;

-- 使用 AI 功能(需要配置相应的 API)
-- 具体使用方法请参考 opentenbase_ai 扩展文档

七、验证安装

7.1 验证编译结果

代码语言:bash
复制
# 检查已安装的扩展
ls -la /data/opentenbase/install/opentenbase_bin_v2.0/lib/postgresql/ | grep -E '(vector|ai|subscription)'

# 检查版本信息
/data/opentenbase/install/opentenbase_bin_v2.0/bin/postgres --version

7.2 功能测试

代码语言:sql
复制
-- 测试基本功能
SELECT version();

-- 测试分布式功能
SELECT * FROM pgxc_node;

-- 测试扩展加载
SELECT * FROM pg_available_extensions WHERE name LIKE '%vector%' OR name LIKE '%ai%';

八、opentenbase_ai 插件使用文档

opentenbase_ai 插件为 PostgreSQL 数据库提供了集成人工智能大语言模型能力的接口,让您能够直接在 SQL 中使用 AI 功能。该插件支持多种 AI 模型提供商(包括 OpenAI、DeepSeek、腾讯混元、阿里通义千问等),提供文本生成、翻译、情感分析、问答提取、文本摘要、嵌入向量生成以及图像分析等功能。

接下来为了方便演示,我将使用Navicat Premium 17连接数据库进行插件的演示。

8.1 使用前提

已成功安装 opentenbase_ai 扩展(可通过 SELECT * FROM pg_extension WHERE extname = 'opentenbase_ai'; 验证)

8.2 快速开始(以混元大模型为例)

配置混元大模型
  1. 获取混元大模型的 API Token(腾讯SDK有SecretIdSecretKey,openai SDK则为"sk-...."),前往腾讯云控制台申请,参考混元大模型官方文档。
  1. 添加混元大模型的模型定义到模型元数据表中。
代码语言:sql
复制
SELECT ai.add_completion_model(
    model_name => 'hunyuan_chat', -- 自定义模型名称
    uri => 'https://api.hunyuan.cloud.tencent.com/v1/chat/completions', -- API接口地址
    default_args => '{"model": "hunyuan-lite"}'::jsonb, -- 默认参数(指定模型版本)
    token => 'your_hunyuan_api_key', -- 替换为你的混元API密钥,推荐使用格式 'SecretId|SecretKey'
    model_provider => 'tencent' -- 模型提供商
);

执行成功后,返回 t 表示模型定义添加成功。

  1. 若后续希望默认使用混元模型,可通过 SET 命令配置会话级参数,配置混元大模型为默认模型。
代码语言:sql
复制
SET ai.completion_model = 'hunyuan_chat';
网络连接不稳定问题(可选)
  1. 延长数据库的 HTTP 请求超时时间(关键)undefined默认 1001 毫秒(约 1 秒)可能不足以应对偶尔的网络延迟,将超时时间延长至 5-10 秒:
代码语言:bash
复制
# 临时生效(当前会话)
SET http.timeout = 5000;  -- 单位:毫秒,5000 = 5秒

# 永久生效(需修改配置文件)
# 1. 打开数据库配置文件(以 OpenTenBase 为例)
sudo vim /data/opentenbase/data/coord_master/cn001/postgresql.conf

# 2. 添加或修改以下配置
http.timeout = 5000

# 3. 重启 Coordinator 节点使配置生效
pgxc_ctl -c /data/opentenbase/install/opentenbase_bin_v2.0/pgxc_ctl.conf
pgxc_ctl (PGXC: default) > stop coord cn001
pgxc_ctl (PGXC: default) > start coord cn001

混元大模型问答

配置好默认混元大模型后就可以开始体验。

文本生成

代码语言:sql
复制
SELECT ai.generate_text('为高校开源技术社团写一段招新宣传文案,要求:
1. 突出「零基础友好」「技术实战」「社区协作」三大亮点;
2. 包含具体活动形式(如开源项目贡献、技术分享会、代码 hackathon);
3. 语言活泼有感染力,适合学生群体,结尾附加入方式引导。');

情感分析

代码语言:sql
复制
SELECT ai.sentiment('这次开源项目复盘会特别好!主讲人把项目中遇到的 Bug 排查过程讲得很细,还分享了很多开源协作中的避坑技巧,感觉收获比自己闷头看文档多太多了~ 唯一小建议是下次可以增加互动环节,比如让大家现场提问讨论,这样理解更深入~');

文本摘要

代码语言:sql
复制
SELECT ai.summarize('Git进阶技巧分享会纪要:
主讲人:张同学(社区活跃贡献者)
核心内容:
1. 分支管理:建议采用Git Flow工作流,主分支(main)保持稳定,开发分支(develop)用于集成功能,feature分支命名格式统一为"feature/功能名-日期";
2. 提交规范:演示了Angular提交信息规范(type(scope): subject),推荐使用commitlint工具校验;
3. 高级操作:讲解了rebase与merge的区别(rebase适合本地分支整理,merge适合团队协作),以及stash暂存工作区的实用场景;
4. 问题排查:分享了如何用bisect定位引入Bug的提交,以及用cherry-pick选择性合并提交;
互动问答:
- 问:多人修改同一文件冲突时如何处理?答:优先pull最新代码,手动解决冲突后标记为已解决(add)再提交;
- 问:如何撤销已push的错误提交?答:使用revert创建反向提交,避免直接reset已推送的历史。');

指定返回类型生成

多态 generate 函数目前支持设置的返回类型有:

  • 文本类型:text
  • 整数类型:integer, biting
  • 浮点数类型:real, double precision
  • 布尔类型:boolean
代码语言:sql
复制
SELECT ai.generate('列出3个知名开源数据库,用数组返回', NULL::text);

模型管理

添加模型

插件提供了多种方式添加 AI 模型:

  1. 添加 OpenAI 兼容的补全模型
代码语言:sql
复制
SELECT ai.add_completion_model(
    model_name => 'gpt-4',
    uri => 'https://api.openai.com/v1/chat/completions',
    default_args => '{"model": "gpt-4", "temperature": 0.7}'::jsonb,
    token => 'your_openai_api_key',
    model_provider => 'openai'
);
  1. 添加 OpenAI 兼容的嵌入模型
代码语言:sql
复制
SELECT ai.add_embedding_model(
    model_name => 'text-embedding-ada-002',
    uri => 'https://api.openai.com/v1/embeddings',
    default_args => '{"model": "text-embedding-ada-002"}'::jsonb,
    token => 'your_openai_api_key',
    model_provider => 'openai'
);
  1. 添加 OpenAI 兼容的图像模型
代码语言:sql
复制
SELECT ai.add_image_model(
    model_name => 'gpt-4-vision',
    uri => 'https://api.openai.com/v1/chat/completions',
    default_args => '{"model": "gpt-4-vision-preview", "max_tokens": 300}'::jsonb,
    token => 'your_openai_api_key',
    model_provider => 'openai'
);
管理现有模型
代码语言:sql
复制
-- 列出所有已配置的模型
SELECT * FROM ai_model_list;

-- 获取特定模型的详细信息
SELECT * FROM ai.get_model_details('hunyuan_chat');

-- 更新模型配置
-- 示例:更新 gpt-4 模型的默认 temperature 参数
SELECT ai.update_model(
    'gpt-4', 
    'default_args', 
    '{"model": "gpt-4", "temperature": 0.5}'::jsonb
);

-- 删除模型
SELECT ai.delete_model('model_name'); --输入对应的模型名称
模型存储

ai_model_list 表来存储所有支持openai模型的配置信息

代码语言:sql
复制
CREATE TABLE public.ai_model_list (
    model_name TEXT PRIMARY KEY,        -- 模型名称
    model_provider TEXT,                -- 模型提供商
    request_type TEXT NOT NULL,         -- 请求类型(GET/POST 等)
    request_header http_header[],       -- HTTP 请求头
    uri TEXT NOT NULL,                  -- API 端点 URL
    content_type TEXT NOT NULL,         -- 内容类型
    default_args JSONB NOT NULL,        -- 默认参数
    json_path TEXT NOT NULL             -- JSON 响应路径
)

opentenbase_ai 插件支持通过 ai.add_model 函数添加非 OpenAI 兼容格式的大模型。这允许您集成任何自定义 API 格式的模型服务

代码语言:sql
复制
SELECT ai.add_model(
    model_name => 'custom_model',           -- 模型名称
    request_header => ARRAY[                -- 请求头
        http_header('Authorization', 'Bearer your_token'),
        http_header('X-Custom-Header', 'value')
    ],
    uri => 'https://api.example.com/v1/endpoint',  -- API 端点
    default_args => '{"key": "value"}'::jsonb,     -- 默认参数
    model_provider => 'custom',                    -- 提供商
    request_type => 'POST',                        -- 请求类型
    content_type => 'application/json',            -- 内容类型
    json_path => 'SELECT %L::jsonb->''result''->''text''::TEXT'  -- 响应解析路径 (根据 http response 的实际路径填写)
);

九、故障排除

9.1 常见问题

问题 1: 许可证错误,无法创建特定数据库

  • 解决: 确保编译时使用了 -DNOLIC 标志

问题 2: C99/C++17 编译错误

  • 解决: 使用 devtoolset-8 并添加相应的标准标志

问题 3: 仓库连接失败

  • 解决: 修改仓库配置指向 vault.centos.org

9.2 日志查看

代码语言:bash
复制
# 查看集群状态
pgxc_ctl monitor all

# 查看节点日志
tail -f /data/opentenbase/data/coord_master/cn001/pg_log/postgresql-*.log
tail -f /data/opentenbase/data/dn_master/dn001/pg_log/postgresql-*.log

十、性能优化建议

10.1 系统配置

代码语言:bash
复制
# 调整系统参数
echo 'vm.swappiness = 1' | sudo tee -a /etc/sysctl.conf
echo 'vm.overcommit_memory = 2' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

10.2 数据库配置

代码语言:sql
复制
-- 调整连接数和内存参数
ALTER SYSTEM SET max_connections = 200;
ALTER SYSTEM SET shared_buffers = '256MB';
ALTER SYSTEM SET effective_cache_size = '1GB';
SELECT pg_reload_conf();

十一、总结

通过本指南,您应该能够:

  1. ✅ 成功编译 OpenTenBase 5.0,解决许可证问题
  2. ✅ 配置和启动分布式数据库集群
  3. ✅ 使用包括 AI 和向量在内的所有扩展功能
  4. ✅ 创建和管理分布式数据库和表
  5. ✅ 排除常见的编译和运行问题

关键成功因素:

  • 使用 SSE4.2 支持 (-msse4.2 -mcrc32)
  • 添加 DNOLIC 编译标志 (-DNOLIC)
  • 使用现代编译工具 (devtoolset-8)
  • 正确配置 CentOS 8 仓库

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 环境要求
    • 系统环境
    • 用户权限
  • 一、环境准备
    • 1.1 创建专用用户
    • 1.2 安装系统依赖
  • 二、源码获取与编译
    • 2.1 获取源码
    • 2.2 编译主程序
    • 2.3 编译扩展模块
  • 三、其中关键问题解决思路(出现问题可以看看)
    • 3.1 许可证问题解决
    • 3.2 编译依赖问题
  • 四、环境配置
    • 4.1 设置环境变量
    • 4.2关闭 SELINUX 和 配置防火墙
      • 配置防火墙
    • 4.3配置 SSH 免密登录(opentenbase 用户下进行)
  • 五、集群配置与启动
    • 5.1单节点集群部署(推荐入门)
      • 创建集群配置文件
    • 5.2 初始化和启动集群
    • 5.3 集群管理命令
  • 六、使用指南
    • 6.1 连接数据库和创建节点分片
    • 6.2 创建数据库和表
    • 6.3 使用 AI 扩展
  • 七、验证安装
    • 7.1 验证编译结果
    • 7.2 功能测试
  • 八、opentenbase_ai 插件使用文档
    • 8.1 使用前提
    • 8.2 快速开始(以混元大模型为例)
      • 配置混元大模型
      • 网络连接不稳定问题(可选)
    • 混元大模型问答
    • 模型管理
      • 添加模型
      • 管理现有模型
      • 模型存储
  • 九、故障排除
    • 9.1 常见问题
    • 9.2 日志查看
  • 十、性能优化建议
    • 10.1 系统配置
    • 10.2 数据库配置
  • 十一、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档