2014-10-15 25 views
7

Ho la mia macchina con file dmp postgres, che voglio ripristinare sulla macchina virtuale remota (ad esempio, ip è 192.168.0.190 e la porta Postgres è 5432) nella mia rete. È possibile ripristinare questo dump usando pg_restore senza copiare dump su macchina remota? Poiché la dimensione di dump di circa 12 GB e lo spazio su disco sulla macchina virtuale è 20 GB. GrazieRipristino dump sul computer remoto

risposta

13

È possibile eseguire un ripristino sulla rete senza copiare il dump sull'host remoto.

Basta invocare pg_restore con -h <hostname> e -p <port> (e probabilmente -U <username> per autenticare come altro utente) sull'host hai il file di dump, ad esempio:

pg_restore -h 192.168.0.190 -p 5432 -d databasename -U myuser mydump.dump 

Riferimenti:

+0

Sì, hai ragione. Sto provando in questo modo pg_restore -i -h 192.168.1.190 -p 5432 -U postgres -d MFC_sara -v /home/develop/BD_Dumps/Saratov.dmp; Ma dopo questo comando è necessario inserire una password per il database di destinazione. E non lo so, sulla macchina virtuale creo solo db come createdb -T template0 MFC_sara –

+1

Se si desidera accedere da una macchina remota è necessario l'autenticazione della password (o qualsiasi altra autenticazione non locale). Crea un utente e assegna i privilegi per il database. O se questo non è un ambiente di produzione, crea un superutente con password: 'createuser -P -s someusername' – nif

0

È possibile passare il parametro della password nello script prima di "pg_restore" utilizzando PGPASSWORD = "your_database_password"

2

In alternativa, è possibile utilizzare psql:

psql -h 192.168.0.190 -p 5432 -d <dbname> -U <username> -W -f mydump.dump

0

Un esempio per un'istanza RDS remoto su AWS

psql -h mydb.dsdreetr34.eu-west-1.rds.amazonaws.com -p 5432 -d mydbname -U mydbuser -W -f mydatabase-dump.sql 

    -f, --file=FILENAME  execute commands from file, then exit 
    -W, --password   force password prompt (should happen automatically) 
0

corro questo e lavora per me:

scp backup.dump [email protected]:~ 

    ssh [email protected] "pg_restore -h localhost -p 5432 -U databaseuser -W -F c -d databasename -v backup.dump" 

È possibile scrivere uno script per automatizzarlo.