2015-05-13 114 views
3

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

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

我使用的命令是

pg_dump -C -h ssh [email protected] -U dev_user paycloud_dev | psql -h localhost -U dev_user paycloud_dev 

但我不断收到错误

pg_dump: too many command-line arguments (first is "paycloud_dev") 

想不通我在做什么错

我想补充, dev_user是我在本地计算机和远程服务器上在postgreSQL中设置的角色。 paycloud_dev是数据库的两个名称(所有者是dev_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: [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地址)

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分钟,再用回来:

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 [email protected] 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”。

有人吗?

+0

您的PostgreSQL可能不允许外部连接。请参阅[本教程](http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html)了解如何允许它。另外,如果您使用的是防火墙,则除非使用非标准端口,否则您需要允许TCP端口5432的入站连接。 –

+0

您链接到的答案与您发布的命令不同。 – Falmarri

回答

3

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

ssh [email protected] -C pg_dump -U dev_user paycloud_dev | psql -U dev_user paycloud_dev 

该命令会要求如果需要两个用户的密码和playcloud_dev数据库应在本地主机上存在,否则转储会失败。

+0

谢谢,我今天晚上在我的机器上试试这个。 –

+0

没有,这是行不通的。我将编辑op –

+0

对不起,它是命令行上的错误(-C必须在pg_dump之前,-h标志不是必需的)。你可以试试新命令吗? – pokoli

2

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

+0

如果您需要将密码传递给pg_dump,最简单的方法是“env PGPASSWORD = xxx pg_dump ...”。 – astgtciv

相关问题