基于信创 openEuler 系统安装部署 OpenTeleDB 开源数据库的实战教程

🏷️ 标签OpenTeleDB PostgreSQL openEuler 信创 国产数据库 源码编译

📅 适用版本:OpenTeleDB v2.0 | openEuler 22.03 LTS


一、前言

最近在数据库圈子里有个热议话题——OpenTeleDB 数据库开源了。大家都知道,随着云计算和数字化转型的推进,各大厂商纷纷加码开源数据库,力求在竞争中抢占先机。天翼云这次推出的 OpenTeleDB,无疑是个大亮点。

这款数据库基于中国电信在电信行业的实际需求进行深度优化,尤其是在解决 PostgreSQL 的并发连接瓶颈存储空间膨胀高可用切换等常见问题上做出了很大的改进。更值得注意的是,OpenTeleDB 与 PostgreSQL 高度兼容,支持轻松迁移,极大地降低了企业的迁移成本。此外,它还采用了木兰宽松许可证 v2,旨在与全球开发者共同推进开源关系型数据库的进步。

对那些已经在使用 PostgreSQL 的企业来说,这无疑是一个不容错过的升级选项!

OpenTeleDB架构图


二、部署环境

项目 配置
操作系统 openEuler 22.03 LTS
运行内存 8 GB
磁盘大小 32 GB

部署环境截图

💡 提示:建议预留至少 20GB 磁盘空间用于源码编译和后续数据存储。


三、源码下载

首先,通过 Git 克隆 OpenTeleDB 的源代码,并进入解压后的目录。

git clone https://gitee.com/teledb/openteledb

解压后的目录结构如下:

源代码目录截图


四、安装依赖

接下来,安装编译 OpenTeleDB 所需的依赖包。执行以下命令一键安装:

sudo dnf install -y curl-devel libicu-devel pam-devel krb5-devel openldap-devel systemd-devel readline readline-devel zlib zlib-devel gettext gettext-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel perl perl-devel tcl-devel uuid-devel gcc gcc-c++ make flex bison perl-ExtUtils* libcurl-devel asciidoc xmlto opensp mariadb-devel libtool libuuid-devel gflags-devel lcov libyaml-devel boost boost-devel libgsasl-devel cmake3 golang

安装依赖的过程如图所示:

安装依赖截图

⚠️ 注意:依赖包较多,安装过程可能需要几分钟,请确保网络连接正常。


五、设置数据库安装目录

在设置数据库的安装目录时,使用以下命令进行配置:

# 设置安装目录
export pg_install_dir=/home/openEuler/opendb/openTeleDB
export pg_data_dir=${pg_install_dir}/data

# 进入源码目录
cd openteledb-v2.0/

设置目录截图


六、配置编译选项(关键步骤)

执行配置命令:

./configure --prefix=${pg_install_dir} --with-zstd --with-lz4 --with-openssl

6.1 常见问题一:ICU 库缺失

在配置过程中,可能会遇到如下错误:

checking for icu-uc icu-i18n... no
configure: error: ICU library not found

ICU库未找到截图

解决方案:安装 libicu 相关库

sudo dnf install libicu libicu-devel

6.2 常见问题二:lz4 库缺失

继续配置,可能还会遇到:

checking for liblz4... no
configure: error: Package requirements (liblz4)

liblz4库未找到截图

解决方案:安装 lz4-devel 依赖包

sudo dnf install lz4-devel

6.3 配置成功

在解决上述依赖问题后,重新执行配置命令:

./configure --prefix=${pg_install_dir} --with-zstd --with-lz4 --with-openssl

成功的配置界面如下:

成功配置截图

✅ 当看到 configure: creating ./config.status 且无报错信息时,表示配置成功。


七、编译安装

配置完成后,开始编译和安装 OpenTeleDB:

make && make install

整个编译过程需要较长时间(视机器性能约 10~30 分钟),请耐心等待。

编译截图

🕐 耗时提示:若使用 4 核 CPU,建议同步执行 make -j4 加速编译。


八、初始化数据库

编译完成后,初始化数据库实例:

# 初始化数据库
${pg_install_dir}/bin/initdb -D ${pg_data_dir}

初始化成功的界面如下:

初始化成功截图

📌 初始化成功后会生成数据目录、配置文件(postgresql.confpg_hba.conf 等)及默认数据库。


九、启动数据库

执行以下命令启动数据库服务:

# 启动数据库
/home/openEuler/opendb/openTeleDB/bin/pg_ctl -D /home/openEuler/opendb/openTeleDB/data -l logfile start

启动成功的界面如下:

启动成功截图

显示 server started 即表示启动成功。


十、查看运行状态

[openEuler@openEuler ~]$ /home/openEuler/opendb/openTeleDB/bin/pg_ctl -D /home/openEuler/opendb/openTeleDB/data -l logfile status
pg_ctl: server is running (PID: 125986)
/home/openEuler/opendb/openTeleDB/bin/postgres "-D" "/home/openEuler/opendb/openTeleDB/data"

[openEuler@openEuler ~]$ ps aux | grep 125986
openEul+  125986  0.0  1.0 283364 83728 ?        Ss   12月26   0:00 /home/openEuler/opendb/openTeleDB/bin/postgres -D /home/openEuler/opendb/openTeleDB/data
openEul+  207597  0.0  0.0  21812  2000 pts/0    S+   22:45   0:00 grep --color=auto 125986

[openEuler@openEuler ~]$ ps uxf | grep postgres
openEul+  207626  0.0  0.0  21804  2000 pts/0    S+   22:46   0:00      \_ grep --color=auto postgres
openEul+  125986  0.0  1.0 283364 83728 ?        Ss   12月26   0:00 /home/openEuler/opendb/openTeleDB/bin/postgres -D /home/openEuler/opendb/openTeleDB/data
openEul+  125987  0.0  0.1 283500  7824 ?        Ss   12月26   0:00  \_ postgres: checkpointer 
openEul+  125988  0.0  0.0 283524  5184 ?        Ss   12月26   0:00  \_ postgres: background writer 
openEul+  125990  0.0  0.1 283364  9788 ?        Ss   12月26   0:00  \_ postgres: walwriter 
openEul+  125991  0.0  0.1 284984  8076 ?        Ss   12月26   0:00  \_ postgres: autovacuum launcher 
openEul+  125992  0.0  0.0 285584  7564 ?        Ss   12月26   0:00  \_ postgres: undo discard process 
openEul+  125993  0.0  0.0 283532  5064 ?        Ss   12月26   0:00  \_ postgres: undo launcher 
openEul+  125994  0.0  0.0 284960  6092 ?        Ss   12月26   0:00  \_ postgres: logical replication launcher 

进程状态截图

🔍 可以看到 OpenTeleDB 保留了 PostgreSQL 经典的进程架构:Postmaster + Background Writer + WAL Writer + AutoVacuum 等,同时新增了 undo discard processundo launcher 等特性进程。


十一、OpenTeleDB 连接测试

数据库启动成功后,通过命令行或可视化工具进行连接验证。

11.1 本地终端连接

使用 psql 在本机直接连接 OpenTeleDB,确认服务端与端口正常可用:

${pg_install_dir}/bin/psql -U openEuler -d postgres

本地终端连接截图

11.2 IDEA 可视化连接

在 IDEA(Database 工具窗口)中新增 PostgreSQL 数据源(OpenTeleDB 与 PostgreSQL 协议兼容),填写主机、端口、库名与账号信息后测试连接即可。

IDEA连接截图

💡 连接参数参考

  • Host: 127.0.0.1
  • Port: 5432
  • Database: postgres
  • User: openEuler

十二、OpenTeleDB SQL 迁移测试

为了进一步验证兼容性,准备了一套 RuoYi 项目的 PostgreSQL SQL 文件,直接导入到 OpenTeleDB 中测试迁移效果。

SQL文件截图

从导入结果来看,18 秒就完成了整套 SQL 的执行,整体过程非常顺畅。

SQL导入成功截图

结论:OpenTeleDB 对标准 PostgreSQL SQL 语法兼容性良好,迁移风险低。


十三、Python 快速连接测试

使用 psycopg2 连接 OpenTeleDB(兼容 PostgreSQL 连接方式):

# coding=utf-8
#!/usr/bin/python

import psycopg2
from psycopg2 import OperationalError

def connect_to_db():
    try:
        # 使用 with 语句确保连接自动关闭
        with psycopg2.connect(
            database="postgres",
            user="openEuler",
            password="",
            host="127.0.0.1",
            port="5432"
        ) as conn:
            print("连接数据库成功")
    except OperationalError as e:
        # 捕获具体的操作错误并输出详细信息
        print(f"连接数据库出错,错误详细信息:{e}")
    except Exception as e:
        # 捕获其他未知的异常
        print(f"发生了一个错误:{e}")

if __name__ == "__main__":
    connect_to_db()

测试结果如下,显示连接成功:

Python连接成功截图

🎯 验证结论:OpenTeleDB 在使用体验和协议层面与 PostgreSQL 保持高度兼容,迁移成本相对较低。


十四、踩坑汇总

序号 错误现象 解决方案
1 checking for icu-uc icu-i18n... no
configure: error: ICU library not found
安装 libicu 相关依赖:
sudo dnf install libicu libicu-devel
2 checking for liblz4... no
configure: error: Package requirements (liblz4)
安装 lz4-devel 依赖包:
sudo dnf install lz4-devel
3 -bash: psql:未找到命令 使用安装目录中 bin 下的 psql 完整路径启动:
${pg_install_dir}/bin/psql

十五、总结

通过本文,我们完整演示了在 openEuler 22.03 环境下从源码编译安装 OpenTeleDB 的全过程:

  1. ✅ 下载源码并安装编译依赖
  2. ✅ 配置编译参数并解决常见报错
  3. ✅ 编译安装与数据库初始化
  4. ✅ 启动服务并查看运行状态
  5. ✅ 完成命令行连接、IDEA 可视化连接
  6. ✅ SQL 导入迁移与 Python 快速连接验证

整体来看,OpenTeleDB 对 PostgreSQL 的兼容性表现良好,适合在国产化环境下进行部署与迁移验证。其在并发处理、存储管理和高可用方面的优化,也为企业级应用提供了更可靠的选择。

总结配图


十六、参考链接

资源 链接
🌐 OpenTeleDB 开源社区 https://openteledb.ctyun.cn/open/index
📦 OpenTeleDB 代码仓库 https://gitee.com/teledb/openteledb

📝 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

💬 交流讨论:欢迎在评论区留言交流,如有疑问或建议,我会及时回复!

如果本文对你有帮助,别忘了点赞 + 收藏 + 关注,一键三连支持一下~

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐