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") |
无法弄清楚我做错了什么
只是要添加,
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 |
如果需要,该命令将询问两个用户的密码,并且
尝试通过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安全设置,可能是您忘记打开端口。