【发布时间】:2017-10-27 21:28:42
【问题描述】:
我已成功设置了从主 postgres docker 容器到辅助 postgres docker 容器的复制流,每个容器作为任务在不同的 ec2 实例上运行。
但是,我通过在其 pg_hba.conf 中将主服务器上的 replication 用户保留为 trust 来做到这一点:
host replication replication 0.0.0.0/0 trust
然后,当我将它切换到 md5 时,我想我可以简单地在辅助服务器上为复制用户设置一个密码,一切都会好起来的。没有。
在我的辅助初始化脚本中,当我调用
pg_basebackup -h #{primary_ip} -p 5432 -D $PGDATA -U #{repl_user} -v -P -w --xlog-method=stream
我最初得到了密码提示。
然后我添加了-w。这会给我错误:
pg_basebackup: could not connect to server: fe_sendauth: no password supplied
然后我发现通用 postgres 9.6 映像上没有 postgres 主目录,所以我添加了一个 $PG_PASSFILE 变量。那没有用(权限很好,我什至把它放在 /tmp 中,并在 pg_basebackup 行上传递了 PG_PASSFILE=... 就像在这个问题中一样:.pgpass for PostgreSQL replication in Dockerized environment(请参阅 Raphael 的评论))
无论我做什么,pg_basebackup 都会忽略 .pg_pass 文件。
然后我尝试将卷挂载为 /home/postgres 但使用 AWS,我似乎无法在我创建的入口点初始化脚本中进入根目录。一切都以 postgres 用户身份。
有人克服过这个吗?
我正在将我的辅助初始化代码作为入口点脚本运行。就像我说的,它作为 trust 可以正常工作,但是添加该密码会杀死我。
【问题讨论】:
标签: postgresql amazon-web-services docker amazon-ec2