Migre la base de datos heroku a Amazon RDS con un tiempo de inactividad mínimo


15

Tengo una base de datos heroku postgres y quiero migrarla a Amazon RDS para ahorrar costos. ¿Cuál es la manera de hacerlo con un tiempo de inactividad mínimo? Por lo general, esto implica replicar la base de datos en tiempo real y luego promover la base de datos replicada como la base de datos principal.

Sé que puedo usar una base de datos de seguidores para migrar DB dentro de heroku, y puedo usar la base de datos de réplica de lectura para migrar DB dentro de Amazon RDS. ¿Existe un método similar para crear la replicación de la base de datos de heroku DB que vive en mi propio Amazon RDS?


2
puedes hacer un esclavo en RDS cuando todo se replica, elimina el heroku master y promueve RDS a Master.
Sam

2
@SamD No creo que Amazon sea compatible con los esclavos PostgreSQL que reciben de bases de datos externas todavía. ¿Han agregado eso? No lo veo en docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Si se ha agregado, un enlace de documentación sería muy apreciado. ¿Cómo lo alimentas pg_basebackuppara empezar? ¿Y lidiar con diferentes versiones principales?
Craig Ringer

Respuestas:


3

Estoy bastante seguro de que tendrá que realizar un buen volcado y restauración a la antigua. Amazon no parece ofrecer ninguna otra opción de importación que cargar en un volcado:

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

e incluso si lo hicieran, AFAICT las únicas opciones de exportación ofrecidas por Heroku son pg_dumps (es decir, no respaldos base o la capacidad de configurar un nodo de reserva activa externo):

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

Si tiene suerte, está utilizando una versión de Postgres lo suficientemente nueva como para admitir pg_dump paralelo (9.3+) y pg_restore paralelo (8.4+), lo que hará que su trabajo sea un poco más rápido. Y es de esperar que pueda darse el lujo de tomar una ventana de mantenimiento durante la cual bloquea las escrituras en su sitio mientras se realiza el cambio ...


1

Puede conectar su aplicación actual a la base de datos RDS y hacer que se inserte en Heroku y RDS, no quiero configurar la replicación, solo para insertar en ambos servidores.

Una vez que esté configurado, tendrá nuevos registros almacenados en ambas bases de datos.

Debería ser fácil ver qué registros faltan (por ejemplo: en la tabla 1 faltan todos los registros con ID 100 o inferior) leyendo la primera fila de la base de datos RDS. Luego, escribir un script de exportación simple no debería ser demasiado difícil a menos que tenga muchas tablas.

Espero eso ayude


1

Parece que AWS DMS (Servicio de migración de base de datos) admite la migración de datos desde instancias externas de SQL. Pude configurar una tarea de migración que replica datos y cambios de Heroku a RDS. Aún no se ha visto si realmente funciona para mí;)

--- EDITAR ---

Parece que los servicios como DMS no funcionan con Heroku, porque requieren roles más privilegiados de los que Heroku permite en sus bases de datos: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -to-replicate-my-heroku-postgres-database-to-a-non-heroku-database

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.