PostgreSQL跨系统主从复制:Ubuntu执行pg_basebackup后连接失败求助
解决PostgreSQL从节点(Ubuntu)本地连接失败问题
1. 检查PostgreSQL服务状态
先确认从节点的PostgreSQL服务是否正常启动:
sudo systemctl status postgresql@16-main
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start postgresql@16-main sudo systemctl enable postgresql@16-main
2. 验证pg_basebackup执行有效性
检查备份目标目录/var/lib/postgresql/16/main/的文件完整性:
ls -l /var/lib/postgresql/16/main/
如果目录为空或核心配置文件(postgresql.conf、postgresql.auto.conf)缺失,需重新执行备份:
- 先停止从节点PostgreSQL服务
- 清空目标目录原有内容:
sudo rm -rf /var/lib/postgresql/16/main/* - 确认主节点
pg_hba.conf已授权replic_user从从节点IP连接,主节点配置示例:host replication replic_user 从节点IP/32 scram-sha-256 - 重启主节点PostgreSQL服务后,重新执行
pg_basebackup命令
3. 排查Unix Socket路径问题
若服务已启动但仍提示找不到socket文件,检查配置中的socket路径:
sudo -u postgres grep unix_socket_directories /var/lib/postgresql/16/main/postgresql.conf
如果返回路径不是/var/run/postgresql/,可通过以下方式修复:
- 方式一:创建软链接映射socket文件
sudo ln -s 实际socket目录/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432 - 方式二:修改
postgresql.conf中的unix_socket_directories参数为/var/run/postgresql/,然后重启服务
4. 修复目录权限问题
确保备份目录及文件的所有者为postgres用户:
sudo chown -R postgres:postgres /var/lib/postgresql/16/main/ sudo chmod 700 /var/lib/postgresql/16/main/
内容的提问来源于stack exchange,提问作者Listochek
相关产品推荐
相关产品推荐

