2015-05-13 112 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

相關問題