Migrare il database heroku su Amazon RDS con tempi di inattività minimi


15

Ho un database postgres heroku e voglio migrarlo su Amazon RDS per risparmiare sui costi. Qual è un modo per farlo con tempi di fermo minimi? Di solito ciò comporta la replica del database in tempo reale e quindi la promozione del DB replicato come DB principale.

So di poter utilizzare un database follower per migrare DB all'interno di heroku e posso utilizzare il database di replica di lettura per migrare DB all'interno di Amazon RDS. Esiste un metodo simile per creare la replica del database di heroku DB che risiede nel mio Amazon RDS?


2
puoi fare uno schiavo in RDS quando tutto viene replicato, rimuovi il master heroku e promuovi RDS in Master.
Sam

2
@SamD Non pensavo che Amazon supportasse gli slave PostgreSQL che ricevono ancora da database esterni. L'hanno aggiunto? Non lo vedo in docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Se è stato aggiunto, un collegamento alla documentazione sarebbe molto apprezzato. Come lo nutri pg_basebackupall'inizio? E gestire diverse versioni principali?
Craig Ringer,

Risposte:


3

Abbastanza sicuro che dovrai eseguire un buon dump e ripristino vecchio stile qui. Amazon non sembra offrire altre opzioni di importazione oltre al caricamento in una discarica:

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

e anche se lo facessero, AFAICT le uniche opzioni di esportazione offerte da Heroku sono pg_dumps (cioè non i backup di base o la possibilità di impostare un nodo hot standby esterno):

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

Se sei fortunato, stai usando una versione di Postgres abbastanza nuova da supportare sia pg_dump in parallelo (9.3+) che pg_restore in parallelo (8.4+), il che renderà il tuo lavoro un po 'più veloce. E spero che tu possa permetterti di aprire una finestra di manutenzione durante la quale blocchi le scritture sul tuo sito mentre è in corso il passaggio ...


1

Puoi connettere la tua app corrente al database RDS e farla inserire sia in Heroku che in RDS, non intendo impostare la replica, ma solo inserire in entrambi i server.

Una volta impostato, i nuovi record verranno archiviati in entrambi i database.

Dovrebbe essere abbastanza facile vedere quali record mancano (ad esempio: nella tabella 1 mancano tutti i record con ID 100 o inferiore) leggendo la prima riga nel database RDS. Quindi scrivere un semplice script di esportazione non dovrebbe essere troppo difficile a meno che tu non abbia molte tabelle.

Spero che sia d'aiuto


1

Sembra che AWS DMS (Database Migration Service) supporti la migrazione di dati da istanze SQL esterne. Sono stato in grado di impostare un'attività di migrazione che replica i dati e le modifiche da Heroku a RDS. Se funziona davvero per me è ancora da vedere;)

--- MODIFICARE ---

Sembra che servizi come DMS non funzionino con Heroku, perché richiedono ruoli più privilegiati di quelli consentiti da Heroku nei loro database: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -to-replica-my-Heroku Postgres-database-to-a-non-Heroku database

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.