2

J'ai une paire d'environnements Elastic Beanstalk, appelés "développement" et "production". Je voudrais copier les données de l'environnement "production" vers "développement", afin d'avoir des données sensibles à tester et à utiliser.Comment copier une base de données Postgres d'un environnement Elastic Beanstalk à un autre? J'utilise Rails 5

Chaque environnement exécute un projet Rails 5 (avec une base de code quasi identique) et possède une instance RDS «associée».

J'ai essayé de regarder dans la console AWS, mais je ne peux trouver qu'une option à restaurer à partir d'un instantané sur la même base de données. (Je pourrais facilement manquer quelque chose, la console est complexe.)

J'ai également essayé de mettre à jour les outils Postgres (à 9.6) sur les instances du serveur web pour pouvoir utiliser pg_dump et pg_restore. Cependant, l'opération échoue car il y a deux connexions en cours (j'ai essayé rake db:drop dans ce cas, mais je suppose qu'une approche plus directe utilisant psql donnerait le même problème).

Existe-t-il un autre moyen de copier la base de données, ou puis-je supprimer les connexions en toute sécurité pour effectuer la restauration? Si c'est le cas, comment?

Répondre

2

Je ne peux trouver une option pour restaurer à partir d'un instantané sur la même base de données

Vous comprenez mal comment restaure travail RDS. Lorsque vous restaurez un instantané, il crée toujours une instance RDS entièrement nouvelle à partir de l'instantané. Pour faire ce que vous demandez, créez d'abord un instantané RDS de la base de données que vous souhaitez copier, puis restaurez cet instantané, ce qui créera une nouvelle instance RDS. Ensuite, vous pointez votre environnement EB sur la nouvelle instance RDS. Enfin, supprimez l'ancienne instance RDS qui n'est plus utilisée.

+0

Bonne explication! Je vous remercie. :) Je pense que c'était l'élément de menu "Restaurer à un moment donné" qui m'a fait penser que l'instance de base de données serait "restaurée" sur place. Je peux voir maintenant que l'option crée une nouvelle instance. Cela semble prometteur ... Vraisemblablement, je vais devoir faire un peu plus de configuration, car actuellement l'instance RDS est configurée via la console EB, elle est donc configurée automatiquement. Je suppose que passer par ce processus nécessitera des privilèges d'utilisateur supplémentaires, des variables d'environnement, etc. –