Postgresql 从远程服务器到本地主机的pg_转储

Postgresql 从远程服务器到本地主机的pg_转储,postgresql,ssh,pg-dump,Postgresql,Ssh,Pg Dump,嗨,有人能帮我从远程AWS服务器上的postgreSQL数据库转储到本地机器上的postgreSQL数据库吗 我一直试图用stack post中的答案来做,但一直失败 我使用的命令是 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 但我一直在犯错误 pg_d

嗨,有人能帮我从远程AWS服务器上的postgreSQL数据库转储到本地机器上的postgreSQL数据库吗

我一直试图用stack post中的答案来做,但一直失败

我使用的命令是

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
但我一直在犯错误

pg_dump: too many command-line arguments (first is "paycloud_dev")
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?
不知道我做错了什么

只需添加,
dev\u user
是我在postgreSQL中在本地计算机和远程服务器上设置的角色
paycloud\u dev
是两者上的数据库名称(所有者是
dev\u user

编辑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 
这是现在给我的错误

pg_dump: too many command-line arguments (first is "paycloud_dev")
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地址)

这会询问我paycloud_dev的密码,当我输入密码时,它会暂停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)的规则,但出现了相同的错误

编辑2

根据pokoli的帖子尝试了以下内容

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密码,然后在我输入任何东西之前,它给出了一个错误

[sudo] password for alzer: pg_dump: too many command-line arguments (first is "paycloud_dev")
有关更多信息,请尝试“pg_dump--help”


有人吗?

您必须使用ssh连接到远程主机,执行转储并通过管道将其传输到本地计算机。以下命令应执行以下操作:

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\u dev
数据库,否则转储将失败。

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

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安全设置,可能您忘记打开端口。

您的PostgreSQL可能不允许外部连接。请参阅如何允许它。此外,如果您使用的是防火墙,您需要允许入站连接到TCP端口5432,除非您使用非标准端口。您链接到的答案与您发布的命令完全不同。谢谢,我今晚在我的机器上尝试此操作。很抱歉,命令行出现错误(-C必须在pg_dump之前,不需要-h标志)。您可以尝试使用新命令吗?不,这也失败了-尝试了一些变体,但获取alzer:pg_dump:[archiver(db)]与数据库“paycloud_dev”的连接失败:致命:用户“dev_user”的对等身份验证失败@AI-D能够使用另一种类型的Postgres连接字符串实现这一点。。也许你也可以试试
ssh-i-C“pg_dump-Fc postgresql://:5432/”| pg_restore-d
如果需要向pg_dump传递密码,最简单的方法是“env PGPASSWORD=xxx pg_dump…”。