基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
本文详细介绍了在openEuler 22.03系统上部署开源数据库OpenTeleDB的完整流程。OpenTeleDB作为PostgreSQL的优化版本,解决了并发连接、存储膨胀等问题,并保持良好兼容性。部署过程包括源码下载、依赖安装、编译配置(解决ICU和lz4库等常见问题)、数据库初始化和启动。通过实战演示了从环境准备到服务运行的各个环节,为开发者提供了可靠的技术参考。最后通过连接测试验证了部
基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
背景
最近在数据库圈子里有个热议话题——OpenTeleDB数据库开源了。大家都知道,随着云计算和数字化转型的推进,各大厂商纷纷加码开源数据库,力求在竞争中抢占先机。天翼云这次推出的OpenTeleDB,无疑是个大亮点。
这款数据库基于中国电信在电信行业的实际需求进行深度优化,尤其是在解决PostgreSQL的并发连接瓶颈、存储空间膨胀和高可用切换等常见问题上做出了很大的改进。更值得注意的是,OpenTeleDB与PostgreSQL兼容,支持轻松迁移,极大地降低了企业的迁移成本。此外,它还采用了木兰宽松许可证v2,旨在与全球开发者共同推进开源关系型数据库的进步。
对那些已经在使用PostgreSQL的企业来说,这无疑是一个不容错过的升级选项!

文章目录
部署环境
系统名称: openEuler 22.03
运行内存:8GB
磁盘大小:32GB

源码下载
首先,我们通过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
但是,在配置过程中,我们可能会遇到一些错误。例如:
checking for icu-uc icu-i18n... no
configure: error: ICU library not found

此时,解决方案是安装libicu库:
sudo dnf install libicu libicu-devel
接下来,可能还会遇到以下错误:
checking for liblz4... no
configure: error: Package requirements (liblz4)

解决方案是安装lz4-devel库:
sudo dnf install lz4-devel
在解决这些问题后,重新执行配置命令:
./configure --prefix=${pg_install_dir} --with-zstd --with-lz4 --with-openssl
成功的配置界面如下:

编译安装
在配置完成后,我们可以开始编译和安装OpenTeleDB:
make && make install
整个编译过程需要较长时间,耐心等待。

初始化数据库
编译完成后,初始化数据库:
# 初始化数据库
${pg_install_dir}/bin/initdb -D ${pg_data_dir}
初始化成功的界面如下:

启动数据库
最后,启动数据库:
# 启动数据库
/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
[openEuler@openEuler ~]$

OpenTeleDB连接测试
数据库启动成功后,我们可以通过命令行或可视化工具进行连接验证。
1)本地终端连接方式:
使用 psql 在本机直接连接 OpenTeleDB,确认服务端与端口正常可用。

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

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

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

Python 快速连接测试
接下来用 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()
测试结果如下,显示连接成功:

经过以上连接与迁移测试,OpenTeleDB 在使用体验和协议层面与 PostgreSQL 保持高度兼容,迁移成本相对较低。
踩坑汇总
在安装编译过程中,常见问题与解决方案如下:
-
错误:
checking for icu-uc icu-i18n... no/configure: error: ICU library not found- 解决方法:安装
libicu相关依赖(libicu、libicu-devel)。
- 解决方法:安装
-
错误:
checking for liblz4... no/configure: error: Package requirements (liblz4)- 解决方法:安装
lz4-devel依赖包。
- 解决方法:安装
-
错误:
-bash: psql:未找到命令- 解决方法:使用解压目录(安装目录)中
bin下的psql完整路径启动客户端,例如:${pg_install_dir}/bin/psql。
- 解决方法:使用解压目录(安装目录)中
总结
通过本文,我们完整演示了在 openEuler 22.03 环境下从源码编译安装 OpenTeleDB 的全过程:从下载源码、安装依赖、配置编译参数、解决常见报错,到初始化与启动数据库,并进一步完成了 命令行连接、IDEA 可视化连接、SQL 导入迁移 与 Python 快速连接 等验证步骤。整体来看,OpenTeleDB 对 PostgreSQL 的兼容性表现良好,适合在国产化环境下进行部署与迁移验证。

更多信息参考:
- OpenTeleDB数据库开源社区:https://openteledb.ctyun.cn/open/index
- OpenTeleDB代码仓:https://gitee.com/teledb/openteledb
更多推荐




所有评论(0)