web-dev-qa-db-fra.com

Comment pg_dump une base de données RDS Postgres?

Comment puis-je me connecter à mon instance RDS en utilisant pg_dump?

C'est le point final de l'instance:

<long public dns thing>:5432

Donc, je lance cette commande:

pg_dump -h <long public dns thing> -p 5432 -f dump.sql

Et obtenir ceci:

pg_dump: [archiver (db)] connection to database "brendan" failed:
could not connect to server: Connection refused
Is the server running on Host "<long public dns thing>"
(<IP address>) and accepting TCP/IP connections on port 5432?

C'est le conseil de dépannage d'Amazon:

Impossible de se connecter à l'instance de base de données PostgreSQL Amazon RDS

Le problème le plus courant lors de la tentative de connexion à une instance de base de données PostgreSQL est que le groupe de sécurité affecté à l'instance de base de données a des règles d'accès incorrectes. Par défaut, les instances de base de données n'autorisent pas l'accès. l'accès est accordé via un groupe de sécurité. Pour accorder l'accès, vous devez créer votre propre groupe de sécurité avec des règles d'entrée et de sortie spécifiques à votre situation. Pour plus d'informations sur la création d'un groupe de sécurité pour votre instance de base de données, voir Créer un groupe de sécurité.

L'erreur la plus courante est l'impossibilité de se connecter au serveur: Connexion expirée. Si vous recevez cette erreur, vérifiez que le nom d'hôte est le point de terminaison de l'instance de base de données et que le numéro de port est correct. Vérifiez que le groupe de sécurité affecté à l'instance de base de données dispose des règles nécessaires pour autoriser l'accès via votre pare-feu local.

Est-il possible de spécifier mon groupe de sécurité à partir de pg_dump? Si tel est le cas, dois-je obtenir une copie locale de cette manière, ce dont j'ai besoin d'une clé ssh lorsque je ssh?

Est-ce une erreur d'essayer même d'utiliser pg_dump à distance? Devrais-je plutôt essayer de simplement SSH sur l'instance, ou faire autre chose entièrement?

45
Brendan

Étape 1: Créez un groupe de sécurité sur AWS dont l'adresse IP de votre ordinateur est en liste blanche.

Étape 2: Ajoutez ce groupe de sécurité à l'instance de base de données à laquelle vous souhaitez vous connecter.

Étape 3: Exécutez pg_dump. Assurez-vous de spécifier votre nom d'utilisateur (merci @LHWizard) avec la commande -U. Dans ce cas, le mien n'était pas "postgres", donc je suppose qu'en général, vous devrez regarder dans tous les sens pour le trouver. Assurez-vous également de spécifier le nom de votre base de données: dans certains outils en ligne de commande, il existe un commutateur -d pour cela, mais si vous vérifiez l'utilisation de pg_dump:

Usage:
  pg_dump [OPTION]... [DBNAME]

vous pouvez voir que c'est un argument formel. Donc la commande entière (dans mon cas) était:

pg_dump -h <public dns> -U <my username> -f dump.sql <name of my database>

Notez que la spécification du numéro de port n’était pas nécessaire. Je pense que le port 5432 est LE port pour postgres.

61
Brendan