web-dev-qa-db-fra.com

Heroku transférer la base de données d'une application à une autre

J'ai besoin de transférer une base de données d'app_1 à app_2

J'ai créé une sauvegarde sur app_1

Puis couru: 

heroku pg: restauration des sauvegardes HEROKU_POSTGRESQL_COLOR --app app_2 heroku pgbackups:url --app app_1

HEROKU_POSTGRESQL_COLOR = URL de la base de données pour app_2

Alors je reçois: 

 !    `pg:backups` is not a heroku command.
 !    Perhaps you meant `pgbackups`.
 !    See `heroku help` for a list of available commands.

Alors j'ai couru:

heroku pgbackups: restaurez HEROKU_POSTGRESQL_COLOR --app app_2 heroku pgbackups:url --app app_1

Ensuite, je reçois le texte suivant: 

!    WARNING: Destructive Action
!    This command will affect the app: app_2
!    To proceed, type "app_2" or re-run this command with --confirm app_2

J'ai donc confirmé avec:

> app_2
 !    Please add the pgbackups addon first via:
 !    heroku addons:add pgbackups

Alors j'ai couru: heroku addons:add pgbackups --app app_2

Adding pgbackups on app_2... failed
 !    Add-on plan not found.

Y a-t-il un moyen de contourner ce problème? toute aide serait grandement appréciée! 

* Solution *

J'ai fini par envoyer un e-mail à Heroku. Ils m'ont informé que je devais heroku update; heroku plugins:update, mais heroku update n'est disponible que pour heroku toolbelt et j'ai installé la gemme. 

Solution: 

Installer Heroku toolbelt ici

Puis désinstallez la gemme: 

gem uninstall heroku --all

lancez ce qui suit pour obtenir la version et il devrait sortir heroku-toolbelt, au lieu de la gemme, plus d'infos ici

$ heroku --version
  heroku-toolbelt/2.39.0 (x86_64-darwin10.8.0) Ruby/1.9.3

Pour copier les bases de données sur:

heroku pg:backups restore `heroku pgbackups:url --app app_1` HEROKU_POSTGRESQL_COLOR --app app_2

Mieux encore, vous pouvez copier directement d'une base de données à une autre sans avoir besoin de la sauvegarde:

En supposant que l'URL de la base de données app_2 est: HEROKU_POSTGRESQL_GOLD

heroku pg:copy app_1::DATABASE_URL GOLD -a app_2 

Cela copiera la base de données principale d’app_1 vers la base de données GOLd sur app_2.

28
neo

sa seule commande pour copier la base de données d'une application à l'autre, vous n'avez pas à sauvegarder:

heroku pg:copy app_name_to_copy_from::database_color_to_copy_from database_color_to_copy_to --app app_name_to_copy_to

vérifier ici

71
mohamed-ibrahim

Si vous regardez heroku docs il est écrit

Les sauvegardes de PG en tant que module complémentaire sont obsolètes. Les commandes font partie de l’espace de noms Heroku Postgres dans la CLI. La nouvelle fonctionnalité est en direct et disponible pour utilisation. 

Vous pouvez donc utiliser pgbackups functionality directly sans avoir à ajouter d’add-ons

Pour créer une sauvegarde, vous pouvez exécuter

 heroku pg:backups capture --app app_name

si vous avez plusieurs bases de données, vous pouvez alors spécifier l'URL de la base de données}

heroku pg:backups capture HEROKU_POSTGRESQL_PINK

Pour restore from a backup on another app vous pouvez exécuter

heroku pg:backups restore b001 DATABASE_URL --app app_name

Vous pouvez transfer database by

heroku pg: copie DATABASE_URL HEROKU_POSTGRESQL_PINK_URL --app nom_app

Vous pouvez également upload your database to a public url and then use that url to import database sur une autre application de 

heroku pg:backups public-url b001 --app app_name

et ensuite import it by

heroku pg:backups restore 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump' DATABASE -a app_name

Si vous passez d'une application à une autre et souhaitez utiliser la même base de données pour une autre application, procédez comme suit:

  • Connectez-vous à votre compte heroku
  • Sélectionnez votre ancienne application et allez dans l'onglet Paramètres 
  • Révéler les paramètres de configuration pour votre ancienne application 
  • Copier DATABASE_URL
  • Retournez et sélectionnez votre nouvelle application
  • Remplacer les nouvelles applications DATABASE_URL par l'ancienne valeur des applications
10
Mandeep
heroku pg:copy app1_name::HEROKU_POSTGRESQL_ONYX_URL HEROKU_POSTGRESQL_AQUA_URL --app app2_name

Où la deuxième URL de base de données est sur app2_name

2
pixelearth

J'ai trouvé la solution la plus simple pour réutiliser/partager la même ressource (la base de données postgres dans ce cas - ou toute autre autorisant le partage/la réutilisation) avec plusieurs applications sur heroku:

  1. Accéder au tableau de bord de l'application plus ancienne (source) sur Heroku
  2. Sélectionnez l'onglet "Ressources"
  3. Localisez la ressource (base de données postgres, dans notre cas ici)
  4. Cliquez sur l'icône en regard du nom du plan à l'extrême droite de la ligne répertoriant la ressource.
  5. Sélectionnez l'option "Joindre à une autre application", puis sélectionnez le nom de l'application la plus récente (cible) dans la liste qui s'affiche.

Exemple de menu étendu mentionné à l'étape 4 ci-dessus!

C'est tout ce qu'il faut pour partager la ressource entre les applications, car celle-ci met automatiquement à jour tous les paramètres de configuration associés sur l'application cible. Cela est pratique car aucune des variables de configuration liées aux modules complémentaires ne peut être modifiée directement, du moins à partir du tableau de bord (n’a pas été vérifiée par le biais de la CLI). J'espère que cela aide tous ceux qui recherchent une chose semblable.

1
Narayanan R

Selon le site Web, l'addon est amorti. Cela pourrait donc être la raison du message d'échec.

Les sauvegardes en tant qu'add-on sont obsolètes.

Puisque votre objectif est de déplacer la base de données d'une application à une autre, pourquoi ne pas suivre les instructions mentionnées dans le lien ci-dessous.

https://devcenter.heroku.com/articles/heroku-postgres-backups#direct-database-to-database-copies

1
coderhs

J'ai eu un problème connexe. Vous pouvez enregistrer une sauvegarde sur votre ordinateur local, puis la télécharger sur un hébergement, comme Amazon s3, et importer à partir de l'URL donnée . Cette question et la réponse suivante peuvent vous aider: Impossible d'importer dans la base de données heroku postgres depuis décharge

0
Danny Ocean

Vous pouvez trouver utile pgAdmin III ( http://pgadmin.org/ ), un outil de gestion de base de données gratuit spécialement conçu pour effectuer ces types de tâches. Vous pouvez éditer/afficher/importer/exporter de/vers votre base de données Heroku directement. Faites-moi savoir si vous avez besoin d'aide pour la configuration. (C'est comme MySQL Workbench, mais pour PostgreSQL). 

0
Elvn