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

背景

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

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

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

OpenTeleDB架构图

部署环境

系统名称: 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

ICU库未找到截图

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

sudo dnf install libicu libicu-devel

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

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

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   1226   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   1226   0:00 /home/openEuler/opendb/openTeleDB/bin/postgres -D /home/openEuler/opendb/openTeleDB/data
openEul+  125987  0.0  0.1 283500  7824 ?        Ss   1226   0:00  \_ postgres: checkpointer 
openEul+  125988  0.0  0.0 283524  5184 ?        Ss   1226   0:00  \_ postgres: background writer 
openEul+  125990  0.0  0.1 283364  9788 ?        Ss   1226   0:00  \_ postgres: walwriter 
openEul+  125991  0.0  0.1 284984  8076 ?        Ss   1226   0:00  \_ postgres: autovacuum launcher 
openEul+  125992  0.0  0.0 285584  7564 ?        Ss   1226   0:00  \_ postgres: undo discard process 
openEul+  125993  0.0  0.0 283532  5064 ?        Ss   1226   0:00  \_ postgres: undo launcher 
openEul+  125994  0.0  0.0 284960  6092 ?        Ss   1226   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 保持高度兼容,迁移成本相对较低。


踩坑汇总

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

  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 的兼容性表现良好,适合在国产化环境下进行部署与迁移验证。

在这里插入图片描述

更多信息参考:


Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐