postgres pg_basebackup找不到.pg_pass文件
我已经成功地从一个主要到二级postgres泊坞窗容器安装复制stream,每个容器在单独的ec2实例上作为任务运行。
不过,我通过将主服务器上的复制用户作为信任保留在其pg_hba.conf中来实现此目的: 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_PASSFILEvariables。 这不起作用(权限很好,我甚至把它放在/ tmp中,并通过pg_basebackup行上的PG_PASSFILE = …,正如在这个问题中: .pgpass在Dockerized环境中用于PostgreSQL复制 (参见Raphael的评论) )
不pipe我做什么,pg_basebackup都会忽略.pg_pass文件。
然后,我尝试将卷挂载为/ home / postgres,但是使用AWS,我似乎无法在创build的入口点init脚本中创build根目录。 一切都是作为postgres用户。
有人克服这个吗?
我正在运行我的辅助初始化代码作为入口点脚本。 就像我说的,作为信任工作正常,但添encryption码正在杀死我。
如果你设置复制,你不需要再运行pg_basebackup
。 添加-w
将永远给你fe_sendauth: no password supplied
如果你设置任何东西,但fe_sendauth: no password supplied
trust
或peer
的本地对应的连接 – 只是因为-w
代表--no-password
。
https://www.postgresql.org/docs/current/static/libpq-envars.html
PGPASSFILE指定用于查找的密码文件的名称。 如果未设置,则默认为〜/ .pgpass(请参阅第32.15节)。
所以默认是.pgpass
,而不是.pg_pass
,当然你可以使用.pg_pass
,设置export PGPASSFILE=.pg_pass
,但是你用PG_PASSFILE
variables – 对吧?
所以postgres忽略它,它应该。
我将首先尝试在600
权限下在主目录中创build正确的.pgpass
。
如果你想使用密码文件,还要介意不同的primary_conninfo
。 https://www.postgresql.org/docs/current/static/standby-settings.html
在备用服务器上的一个单独的〜/ .pgpass文件中(使用复制作为数据库名称)。 不要在primary_conninfostring中指定数据库名称。
- Amazon Elastic Beanstalk vs使用docker容器的EC2实例
- 如何从我的VM boot2docker容器内连接到“真正的”本地主机?
- 为什么从docker容器到其他实例/服务器的SSH太慢了
- 在Elastic Beanstalk上挂载Docker nfs4
- docker存储在哪里提取临时文件?
- Docker Swarm – networking覆盖不能连接所有容器
- Docker容器中的Elasticsearch,AWS中的集群发现
- 我可以在docker中设置一个远程的spark服务器,以便我可以在本地进行通信吗?
- 连接一个Docker化的MongoDb实例,在EC2上抛弃一个反向的Nginx代理