麒麟V10上部署TimescaleDB有四种方法:一、YUM在线安装(推荐);二、源码编译(适配离线/定制环境);三、Docker容器化(快速验证);四、PostgreSQL配置启用插件;五、需做SELinux、防火墙等麒麟特有适配。

如果您在麒麟操作系统(Kylin OS)上需要部署时序数据库,而当前系统已安装 PostgreSQL,但尚未启用 TimescaleDB 扩展,则需根据麒麟V10的软件生态与兼容性要求,选择适配的安装路径。以下是针对麒麟V10 SP1/SP2(内核4.19系列,基于openEuler/RHEL兼容架构)的多种可行安装配置方法:
一、YUM仓库在线安装(推荐用于标准环境)
该方法依赖麒麟OS对RHEL/CentOS生态的兼容能力,通过配置TimescaleDB官方YUM源实现一键安装,适用于已配置PGDG PostgreSQL官方源且系统网络可达 packagecloud.io 的场景。
1、创建TimescaleDB专用YUM源配置文件:
执行命令:sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
2、在交互式输入中粘贴以下内容(注意替换 $(rpm -E %{rhel}) 为实际值;麒麟V10对应RHEL 8,故应写为 8):
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/8/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
3、刷新YUM缓存并安装:
sudo yum makecache
sudo yum install -y timescaledb-2-postgresql-14(若已安装PostgreSQL 14)或 timescaledb-2-postgresql-15(对应PG 15)
4、确认插件文件存在:
ls /usr/pgsql-14/lib/postgresql/timescaledb.so(路径依PG主版本调整)
二、源码编译安装(适用于定制化或离线环境)
当系统无法访问外部YUM源,或需精确控制TimescaleDB与PostgreSQL的编译参数(如启用OpenSSL支持、适配麒麟特定GCC版本)时,应采用源码构建方式。此方法要求已成功编译安装PostgreSQL且其 pg_config 可被PATH识别。
1、安装编译依赖:
sudo yum install -y cmake3 gcc-c++ make readline-devel openssl-devel zlib-devel
2、拉取指定兼容版本源码(以TimescaleDB 2.11.1 + PG 14为例):
git clone https://github.com/timescale/timescaledb && cd timescaledb && git checkout 2.11.1
3、执行构建脚本:
./bootstrap -DUSE_OPENSSL=1 -DPG_CONFIG=/usr/pgsql-14/bin/pg_config
4、进入build目录完成编译安装:
cd build && make && sudo make install
5、验证输出:
pg_config --pkglibdir 返回路径下应存在 timescaledb.so
三、Docker容器化部署(适用于快速验证与隔离测试)
在麒麟V10桌面版或服务器版已启用Docker服务(docker-ce ≥20.10)的前提下,可跳过宿主机PG环境配置,直接运行预集成镜像。该方式不修改系统原有PostgreSQL,适合开发调试与POC验证。
1、拉取稳定版镜像:
sudo docker pull timescale/timescaledb:2.11.0-pg14
2、创建持久化数据卷:
sudo docker volume create timescaledb-kylin-data
3、启动容器并映射端口与卷:
sudo docker run -d --name tsdb-kylin -p 5432:5432 -e POSTGRES_PASSWORD=kylin123 -e POSTGRES_DB=tsdb_demo -v timescaledb-kylin-data:/var/lib/postgresql/data --restart=always timescale/timescaledb:2.11.0-pg14
4、检查容器运行状态:
sudo docker ps | grep tsdb-kylin
5、连接验证(需宿主机已安装psql客户端):
psql -h 127.0.0.1 -U postgres -d tsdb_demo -W
四、PostgreSQL配置与插件启用
无论采用上述哪种安装方式,均需在PostgreSQL服务端完成共享库预加载配置及数据库级插件注册,否则无法使用hypertable等核心功能。
1、定位postgresql.conf文件:
sudo -u postgres psql -c "SHOW config_file;"
2、编辑该文件,在shared_preload_libraries行取消注释并设置:
shared_preload_libraries = 'timescaledb'
3、重启PostgreSQL服务:
sudo systemctl restart postgresql-14(服务名依实际PG主版本调整)
4、以postgres用户登录目标数据库,执行插件创建:
CREATE EXTENSION IF NOT EXISTS timescaledb;
5、验证扩展是否激活:
\dx | grep timescaledb
五、麒麟OS特有适配操作
麒麟V10默认启用SELinux策略与安全中心管控,可能拦截TimescaleDB所需的共享内存段或动态库加载行为,需进行针对性放行。
1、临时关闭SELinux验证(仅限测试):
sudo setenforce 0
2、永久禁用SELinux(如需):
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
3、在麒麟开发者面板中开启“安全中心放行”与“DBus管控放行”模块
4、确认防火墙开放5432端口:
sudo firewall-cmd --permanent --add-port=5432/tcp && sudo firewall-cmd --reload
5、若使用源码安装且遇到 PostgreSQL was built without OpenSSL support 错误,须重新编译PostgreSQL并添加 --with-openssl 参数

















