Migrer la base de données Heroku vers Amazon RDS avec un temps d'arrêt minimum


15

J'ai une base de données Heroku Postgres et je souhaite la migrer vers Amazon RDS pour réduire les coûts. Comment le faire avec un temps d'arrêt minimal? Cela implique généralement la réplication de la base de données en temps réel, puis la promotion de la base de données répliquée en tant que base de données principale.

Je sais que je peux utiliser une base de données suiveur pour migrer la base de données dans heroku, et je peux utiliser la base de données de réplicas en lecture pour migrer la base de données dans Amazon RDS. Existe-t-il une méthode similaire pour créer une réplication de base de données de Heroku DB qui vit dans mon propre Amazon RDS?


2
vous pouvez faire un esclave dans RDS lorsque tout est répliqué supprimer le maître heroku promouvoir RDS en maître.
Sam

2
@SamD Je ne pensais pas qu'Amazon supportait encore les esclaves PostgreSQL qui reçoivent des bases de données externes. Ont-ils ajouté cela? Je ne le vois pas dans docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . S'il est ajouté, un lien de documentation serait grandement apprécié. Comment le nourrissez-vous pg_basebackuppour commencer? Et gérer les différentes versions principales?
Craig Ringer

Réponses:


3

Je suis sûr que vous allez devoir effectuer un bon vidage et restauration à l'ancienne ici. Amazon ne semble pas offrir d'autres options d'importation que le chargement dans un vidage:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html

et même s'ils l'ont fait, AFAICT les seules options d'exportation offertes par Heroku sont pg_dumps (c'est-à-dire pas les sauvegardes de base ou la possibilité de configurer un nœud de secours automatique externe):

https://devcenter.heroku.com/articles/heroku-postgres-import-export

Si vous êtes chanceux, vous utilisez une version Postgres suffisamment nouvelle pour prendre en charge pg_dump parallélisé (9.3+) et pg_restore parallélisé (8.4+), ce qui rendra votre travail un peu plus rapide. Et j'espère que vous pouvez vous permettre de prendre une fenêtre de maintenance pendant laquelle vous verrouillez les écritures sur votre site pendant le basculement ...


1

Vous pouvez connecter votre application actuelle à la base de données RDS et l'insérer dans Heroku et RDS, je ne veux pas configurer la réplication, juste pour insérer dans les deux serveurs.

Une fois cela configuré, vous aurez de nouveaux enregistrements stockés dans les deux bases de données.

Il devrait être assez facile de voir quels enregistrements sont manquants (par exemple: dans la table1, tous les enregistrements avec l'ID 100 ou inférieur sont manquants) en lisant la première ligne de la base de données RDS. L'écriture d'un simple script d'exportation ne devrait pas être trop difficile à moins d'avoir beaucoup de tables.

J'espère que cela aide


1

Il semble que AWS DMS (Database Migration Service) prend en charge la migration des données à partir d'instances SQL externes. J'ai pu mettre en place une tâche de migration qui réplique les données et les modifications de Heroku vers RDS. Il reste à voir si cela fonctionne réellement pour moi;)

--- ÉDITER ---

Il semble que les services comme DMS ne fonctionnent pas avec Heroku, car ils nécessitent des rôles plus privilégiés que Heroku ne le permet sur leurs bases de données: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -à-répliquer-ma-base de données postgres-heroku-à-une-base de données non-heroku

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.