Copiez la base de données PostgreSQL à partir d'un serveur distant


11

Lorsque j'utilisais MySQL, je pouvais exécuter une commande qui SSH sur mon serveur et copier la base de données sur ma machine locale.

ssh -t remoteserver 'mysqldump --compress -u dbuser --password = "password" db_name' | / usr / local / mysql / bin / mysql -u root --password = "mot de passe" local_db_name

Comment puis-je faire la même chose avec PostgreSQL?

Réponses:


15

Si le serveur de base de données prend des connexions à la base de données de votre hôte (généralement sur le port 5432), vous n'avez pas besoin d'utiliser SSH. Dans ce cas, vous devez procéder comme suit:

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

Si vous ne pouvez vous connecter à votre base de données qu'à partir de l'hôte lui-même, vous devez ajouter la logique SSH de votre exemple MySQL.

Avec -C, vous obtiendrez une CREATE DATABASEcommande au début du vidage afin que vous n'ayez pas à la créer vous-même. La commande ci-dessus vous demandera un mot de passe deux fois sauf si vous les stockez dans un fichier .pgpass (en supposant que vous êtes sous linux / Unix). En outre, la connexion locale peut être différente si votre base de données n'écoute pas sur TCP (dans ce cas, omettez simplement la -h localhostpartie).

Pour plus de détails et d'options, voir la documentation de pg_dump .


signifie que vous devez avoir le même mot de passe sur les deux serveurs, non?
Florian Heigl

1
@FlorianHeigl No.
dezso

Pour tous ceux qui liront ceci à l'avenir: Entrez le mot de passe de la première base de données (distante), appuyez sur Entrée, saisissez le mot de passe de votre utilisateur de base de données hôte local, appuyez sur Entrée. Le fait qu'il ait demandé les deux mots de passe (et qu'UNIX n'affiche jamais les mots de passe lorsque vous les tintez) m'a aussi troublé.
AleksandrH
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.