Copia il database PostgreSQL da un server remoto


11

Quando stavo usando MySQL, ho potuto eseguire un comando SSH sul mio server e copiare il database sul mio computer locale.

ssh -t remoteserver 'mysqldump --compress -u dbuser --password = "password" nome_db' | / usr / local / mysql / bin / mysql -u root --password = "password" nome_db locale

Come posso fare la stessa cosa con PostgreSQL?

Risposte:


15

Se il server DB accetta connessioni al database dal tuo host (di solito sulla porta 5432), non è necessario utilizzare SSH. In questo caso, è necessario effettuare le seguenti operazioni:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Se riesci a connetterti al tuo database solo dall'host stesso, devi aggiungere la logica SSH dal tuo esempio MySQL.

Con -C, otterrai un CREATE DATABASEcomando all'inizio del dump in modo da non doverlo creare da solo. Il comando sopra ti chiederà una password due volte a meno che tu non li memorizzi in un file .pgpass (supponendo che tu sia su linux / Unix). Inoltre, la connessione locale potrebbe essere diversa se il DB non è in ascolto su TCP (in questo caso è sufficiente omettere la -h localhostparte).

Per ulteriori dettagli e opzioni, consultare la documentazione di pg_dump .


significa che devi avere la stessa password su entrambi i server, giusto?
Florian Heigl,

1
@FlorianHeigl No.
dezso,

Per chiunque legga questo in futuro: inserire la password per il primo DB (remoto), premere invio, digitare la password per l'utente DB localhost, premere invio. Il fatto che abbia richiesto entrambe le password (e che UNIX non mostri mai le password mentre le strappi) mi ha confuso.
AleksandrH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.