我正在尝试在两个 Postgres 服务器之间设置流复制。主服务器的pg_hba.conf
文件是这样配置的:
host replication ${REP_USER} 0.0.0.0/0 md5
host ${DB_NAME} ${DB_USER} 0.0.0.0/0 md5
从容器中的初始化脚本在启动时运行以下命令来连接它:
cat > ~/.pgpass <<EOS
${MASTER_PORT_5432_TCP_ADDR}:5432:${REP_USER}:${REP_PASS}
EOS
chmod 0600 ~/.pgpass
echo "Cleaning up old cluster directory"
rm -rf ${PGDATA}/*
echo "Starting base backup as replicator"
pg_basebackup -h ${MASTER_PORT_5432_TCP_ADDR} -D ${PGDATA} -U ${REP_USER} -vPw
所有 env 值都已设置。问题是我不断收到此错误:
pg_basebackup: could not connect to server: fe_sendauth: no password supplied
我不确定为什么这种情况不断发生。我拥有具有正确权限的密码文件。我在恢复文件中也有密码,因为总是pg_basebackup
失败,所以没有创建密码。
任何帮助,将不胜感激...
您的问题是您的
.pgpass
文件缺少数据库字段,并且所有字段都是必需的(尽管您可以将其*
用于任何匹配项)。当您使用pg_basebackup
(使用复制协议)时,您需要将其作为“复制”提供:用于
*
数据库字段也可以,但replication
更严格。