PostgreSQL 14升级至15时pg_upgrade失败,权限修改无效求助
PostgreSQL 14升级至15时pg_upgrade连接失败的解决步骤
问题核心
执行pg_upgrade升级PostgreSQL 14到15时,已将旧数据目录/var/lib/postgres/olddata权限改为0700,但仍出现socket连接失败、无法启动源Postmaster的错误。
解决步骤
1. 修复旧数据目录的所有者权限
仅修改目录权限不足以解决问题,需确保目录及所有子项归postgres用户所有:
sudo chown -R postgres:postgres /var/lib/postgres/olddata
执行后验证权限:
sudo ls -ld /var/lib/postgres/olddata
输出需显示drwx------ postgres postgres。
2. 配置临时socket目录
pg_upgrade指定了socket目录为/var/lib/postgres/tmp,需确保该目录存在且权限正确:
# 创建目录(若不存在) sudo mkdir -p /var/lib/postgres/tmp # 设置权限和所有者 sudo chmod 0700 /var/lib/postgres/tmp && sudo chown postgres:postgres /var/lib/postgres/tmp
3. 手动验证旧版本服务可正常启动
先排除旧版本PostgreSQL本身的启动问题:
# 以postgres用户启动14版本服务 sudo -u postgres /opt/pgsql-14/bin/pg_ctl start -D /var/lib/postgres/olddata -l /tmp/pg14_start.log
查看启动日志排查错误:
cat /tmp/pg14_start.log
若服务启动失败,先解决对应问题(如配置文件错误)后再继续升级。
4. 以postgres用户身份执行pg_upgrade
避免用root直接执行,切换到postgres用户运行升级命令:
sudo -u postgres pg_upgrade -b /opt/pgsql-14/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data
内容的提问来源于stack exchange,提问作者user2023630
相关产品推荐
相关产品推荐

