关于postgresql:pg_dump从远程服务器到localhost

pg_dump from remote server to localhost

大家好,任何人都可以帮我从远程AWS服务器上的postgreSQL数据库转储到本地机器上的postgreSQL数据库。

我一直在尝试使用这个堆栈帖子中的答案,但它一直在失败。

我正在使用的命令是

1
pg_dump -C -h ssh ubuntu@ec2-59-16-143-85.eu-west-1.compute.amazonaws.com -U dev_user paycloud_dev | psql -h localhost -U dev_user paycloud_dev

但我一直在收到错误

1
pg_dump: too many command-line arguments (FIRST IS"paycloud_dev")

无法弄清楚我做错了什么

只是要添加,dev_user是我在本地机器和远程服务器上的postgreSQL中设置的角色。 paycloud_dev是两者上的数据库的名称(所有者是dev_user)

Edit 1

根据由于某种原因已被删除的帖子尝试下面的命令

1
pg_dump -C -h ec2-59-16-143-85.eu-west-1.compute.amazonaws.com -U dev_user paycloud_dev | psql -h localhost -U dev_user paycloud_dev

现在这给了我错误

1
2
3
pg_dump: [archiver (db)] connection TO DATABASE"paycloud_dev" failed: could NOT CONNECT TO server: Connection refused
IS the server running ON host"ec2-59-16-143-85.eu-west-1.compute.amazonaws.com" (59.16.143.85) AND accepting
TCP/IP connections ON port 5432?

我继续使用AWS并注意到这是服务器的弹性IP。然后我尝试了以下(私有IP地址)

1
pg_dump -C -h 170.30.43.35 -U dev_user paycloud_dev | psql -h localhost -U dev_user paycloud_dev

这要求我输入paycloud_dev的密码,当我输入它时会暂停2或3分钟并返回:

1
2
3
pg_dump: [archiver (db)] connection TO DATABASE"paycloud_dev" failed: could NOT CONNECT TO server: Connection refused
IS the server running ON host"170.30.43.35" AND accepting
TCP/IP connections ON port 5432?

我已尝试编辑AWS安全组以添加接受所有流量的规则(端口范围0-65535)但发生了相同的错误。

Edit 2

按照pokoli的帖子尝试以下内容

1
ssh ubuntu@ec2-59-16-143-85.eu-west-1.compute.amazonaws.com pg_dump -C -h  -U dev_user paycloud_dev | psql -U dev_user paycloud_dev

虽然不行。它首先要求我为我的笔记本电脑的psql密码,然后我可以输入任何东西,它给出了一个错误。

1
[sudo] password FOR alzer: pg_dump: too many command-line arguments (FIRST IS"paycloud_dev")

请尝试"pg_dump --help"以获取更多信息。

任何人?


您必须使用ssh连接到远程主机,执行转储并将其传送到本地计算机。 以下命令应该:

1
ssh ubuntu@ec2-59-16-143-85.eu-west-1.compute.amazonaws.com -C pg_dump  -U dev_user paycloud_dev | psql -U dev_user paycloud_dev

如果需要,该命令将询问两个用户的密码,并且playcloud_dev数据库应存在于localhost上,否则转储将失败。


尝试通过ssh隧道执行此操作。

1
2
ssh -fT -L 5432:127.0.0.1:5432 %remote_user_login%@%your_aws_host% sleep 10
pg_dump -C -h localhost -U dev_user paycloud_dev | psql -h localhost -U dev_user paycloud_dev

第一行创建ssh隧道和端口映射。

并在"安全组"中查看您的AWS安全设置,可能是您忘记打开端口。