You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:22:41