postgresql配置chemBl数据

后端
观看:0
最后更新:2025年08月08 11:41
使用conda环境配置数据库和插件,比较方便

安装

shell
# 创建环境
conda create -n aiochemdbs python=3.8
# 激活环境
conda activate aiochemdbs
# 安装psql数据库17.5
conda install conda-forge::rdkit-postgresql

测试

shell
# 激活虚拟环境
conda activate aiochemdbs
# 初始化数据库--指定数据库文件的存放位置
initdb -D /home/aiochem/databases/
# 测试运行
postgres -D /home/aiochem/databases/

# ctrl+c可以关闭服务

设置服务自启动

安装supervisor监听服务

python
# 安装监听软件
sudo apt install -y supervisor
# 检查 Supervisor 服务状态
sudo systemctl status supervisor

写配置

新建配置文件

sudo vim /etc/supervisor/conf.d/startpsql.conf

需要正确指定python环境的位置,和自定义数据库存放的位置

关于log日志的存放路径,自己提前创建对应的文件夹就行

yaml
[program:postgresql]
command=/home/chen/miniforge3/envs/aiochemdbs/bin/postgres -D /home/chen/databases
user=chen
autostart=true
autorestart=true

stopsignal=TERM
stopasgroup=true
killasgroup=true
stopwaitsecs=60

之后运行启动命令:

shell
# 运行后出现postgresql: available表示没问题
sudo supervisorctl reread

# 出现:postgresql: added process group
sudo supervisorctl update

# 启动服务》如果前面准确,这里会显示已经启动(postgresql: ERROR (already started))
sudo supervisorctl start postgresqlq

# 设置自启动
sudo systemctl enable supervisor

便捷化启动

在无需切换虚拟环境的情况下,使用psql的命令:

shell
sudo ln -s /home/aiochem/miniforge3/envs/aiochemdbs/bin/psql /usr/local/bin/psql

这样就可以直接使用psql命令了,无需提前切换虚拟环境

配置ChemBl

下载:

这里下载对应的dmp文件

进入数据库服务

直接运行,进入默认数据库postgres

psql postgres

创建新数据库

执行如下语句,创建名为chembldb的数据库

sql
CREATE DATABASE chembldb
  WITH
  OWNER = chen
  ENCODING = 'UTF8';

开启插件

sql
# 进入数据库
\c chembldb
# 开启插件
create extension rdkit;

导入数据

使\q退出操作数据库

然后在终端内:

shell
# 激活环境
conda activate aiochemdbs
# 导入数据
pg_restore --no-owner -d chembldb dmp文件的路径

补充:

出现了如下问题

could not open shared memory segment "/PostgreSQL.XXXXXXXXX

解决方式:

由于共享内存的进程清理不完全导致,修改了startpsql.conf的配置文件,指定了stopsignal等参数

如果未解决:关闭RemoveIPC

这个功能会在用户退出的时候,清理该用户的进程和其余共享服务(比如psql的共享内存) PostgreSQL 使用的共享内存段(位于 /dev/shm)在用户会话退出后被自动清理,导致数据库进程无法访问共享内存,引发错误。

shell
# 编辑这个文件
sudo vim /etc/systemd/logind.conf

# 需要修改的地方
[Login]
RemoveIPC=no

# 重启服务
sudo systemctl restart systemd-logind.service

# 检查状态
sudo systemd-analyze cat-config systemd/logind.conf | grep RemoveIPC

可以使用如下方式检查任务状态:

shell
# 启动 PostgreSQL 后检查共享内存
ls -l /dev/shm/PostgreSQL.*

# 模拟用户退出(切换用户后退出)
sudo su - chen
exit

# 再次检查共享内存段是否仍在
ls -l /dev/shm/PostgreSQL.*

请登录后再发表评论
🔍 快速搜索
文章推荐
基于文本相似性

没有推荐的文章...

文章推荐
化学结构同出现

没有对应的文章...

AioChem © 2025

晋ICP备2025060790号-1