修改PostgreSQL data_directory后无法连接服务器的问题求助
修改PostgreSQL data_directory后无法连接服务器的问题求助
我最近需要把PostgreSQL数据库从一个目录迁移到另一个路径,先在一台电脑上做了测试,迁移后一切正常。结果在另一台电脑上重复相同步骤后,重启服务虽然显示运行正常,但就是连不上数据库,想请教下大家我哪里弄错了?
我执行的操作步骤如下:
- 停止PostgreSQL服务:
systemctl stop postgresql.service - 创建新的数据库存储目录:
mkdir /data/postgres_data - 设置目录的权限和所属用户组:
chown postgres:postgres /data/postgres_datachmod 700 /data/postgres_data
- 同步原数据库数据到新目录:
sudo rsync -av /var/lib/postgresql/9.6/main /data/postgresql_data/ - 修改
postgresql.conf配置文件,更新数据目录路径:data_directory = '/data/postgres_data' - 修改
/lib/systemd/system/postgresql.service中的环境变量:... Environment=PGDATA=/data/postgres_data ... - 重新加载服务配置并启动服务:
systemctl daemon-reloadsystemctl start postgresql.servicesystemctl status postgresql.service
服务状态显示正常,但我用psql连接数据库时出现以下错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
我做了一些排查:
- 执行
sudo netstat -ltpn查看端口监听,发现Postgres确实在监听5432端口:... tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 15107/postgres ... tcp6 0 0 :::5432 :::* LISTEN 15107/postgres ... - 检查PostgreSQL的相关配置,
unix_socket_directories = /var/run/postgresql/和port = 5432都和之前一致,而且/var/run/postgresql/.s.PGSQL.5432这个Unix套接字文件确实存在。
补充几个大家可能关心的细节:
编辑补充:
- 为什么要迁移目录?因为数据库一直在占用磁盘空间,现在虽然还够用,但后续肯定需要处理存储问题。
/data/postgres_data和原路径/var/lib/postgresql/9.6/main都是绝对路径,不存在相对位置的问题。/var/run/postgresql/.s.PGSQL.5432这个套接字文件确实存在。
有没有大佬能帮我看看问题出在哪,该怎么修正?
备注:内容来源于stack exchange,提问作者ilnarkz
相关产品推荐
相关产品推荐

