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

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

背景

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

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

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

文章目录

部署环境

系统名称 : openEuler 22.03
运行内存 :8GB
磁盘大小:32GB

源码下载

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

bash 复制代码
git clone https://gitee.com/teledb/openteledb

解压后的目录结构如下:

安装依赖

接下来,我们需要安装编译OpenTeleDB所需的依赖包。可以使用以下命令进行安装:

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

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

设置数据库的安装目录

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

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

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

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

在配置编译选项时,使用以下命令:

bash 复制代码
./configure --prefix=${pg_install_dir} --with-zstd --with-lz4  --with-openssl

但是,在配置过程中,我们可能会遇到一些错误。例如:

bash 复制代码
checking for icu-uc icu-i18n... no
configure: error: ICU library not found

此时,解决方案是安装libicu库:

bash 复制代码
sudo dnf install libicu libicu-devel

接下来,可能还会遇到以下错误:

c 复制代码
checking for liblz4... no
configure: error: Package requirements (liblz4)

解决方案是安装lz4-devel库:

bash 复制代码
sudo dnf install lz4-devel

在解决这些问题后,重新执行配置命令:

bash 复制代码
./configure --prefix=${pg_install_dir} --with-zstd --with-lz4 --with-openssl

成功的配置界面如下:

编译安装

在配置完成后,我们可以开始编译和安装OpenTeleDB:

bash 复制代码
make && make install

整个编译过程需要较长时间,耐心等待。

初始化数据库

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

bash 复制代码
# 初始化数据库
${pg_install_dir}/bin/initdb -D ${pg_data_dir}

初始化成功的界面如下:

启动数据库

最后,启动数据库:

bash 复制代码
# 启动数据库
/home/openEuler/opendb/openTeleDB/bin/pg_ctl -D /home/openEuler/opendb/openTeleDB/data -l logfile start

启动成功的界面如下:

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


查看运行状态

go 复制代码
[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 的连接方式)。

代码:

python 复制代码
# 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 保持高度兼容,迁移成本相对较低。


踩坑汇总

在安装编译过程中,常见问题与解决方案如下:

  1. 错误:checking for icu-uc icu-i18n... no / configure: error: ICU library not found

    • 解决方法:安装 libicu 相关依赖(libiculibicu-devel)。
  2. 错误:checking for liblz4... no / configure: error: Package requirements (liblz4)

    • 解决方法:安装 lz4-devel 依赖包。
  3. 错误:-bash: psql:未找到命令

    • 解决方法:使用解压目录(安装目录)中 bin 下的 psql 完整路径启动客户端,例如:${pg_install_dir}/bin/psql

总结

通过本文,我们完整演示了在 openEuler 22.03 环境下从源码编译安装 OpenTeleDB 的全过程:从下载源码、安装依赖、配置编译参数、解决常见报错,到初始化与启动数据库,并进一步完成了 命令行连接、IDEA 可视化连接、SQL 导入迁移Python 快速连接 等验证步骤。整体来看,OpenTeleDB 对 PostgreSQL 的兼容性表现良好,适合在国产化环境下进行部署与迁移验证。

更多信息参考:


相关推荐
冬奇Lab1 天前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab1 天前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
李广坤1 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
HelloGitHub2 天前
《HelloGitHub》第 119 期
开源·github
冬奇Lab2 天前
一天一个开源项目(第35篇):GitHub Store - 跨平台的 GitHub Releases 应用商店
开源·github·资讯
Turnip12022 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1773 天前
《从零搭建NestJS项目》
数据库·typescript
Bigger3 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql