Przeprowadź migrację bazy danych heroku do Amazon RDS przy minimalnym przestoju

15

Mam bazę danych postgres heroku i chcę ją zmigrować do Amazon RDS, aby zaoszczędzić koszty. Jak to zrobić przy minimalnym przestoju? Zwykle wymaga to replikacji bazy danych w czasie rzeczywistym, a następnie promowania replikowanej bazy danych jako głównej bazy danych.

Wiem, że mogę użyć bazy danych obserwujących do migracji bazy danych w ramach heroku i mogę użyć bazy danych replik odczytu do migracji bazy danych w ramach usługi Amazon RDS. Czy istnieje podobna metoda tworzenia replikacji bazy danych heroku DB, która mieszka w mojej własnej usłudze Amazon RDS?


źródło
2
możesz zrobić niewolnika w RDS, gdy wszystko jest replikowane, usuń Heroku master, promuj RDS na Master.
Sam
2
@SamD Nie sądziłem, że Amazon jeszcze wspiera niewolników PostgreSQL, które odbierają z zewnętrznych baz danych. Czy to dodali? Nie widzę tego w docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Jeśli zostanie dodany, link do dokumentacji będzie bardzo mile widziany. Jak go karmić pg_basebackupna początek? I radzisz sobie z różnymi głównymi wersjami?
Craig Ringer

Odpowiedzi:

3

Jestem prawie pewien, że będziesz musiał tutaj wykonać dobry, staromodny zrzut i przywracanie. Wydaje się, że Amazon nie oferuje żadnych innych opcji importu niż ładowanie na zrzut:

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

a nawet jeśli tak, AFAICT jedynymi opcjami eksportu oferowanymi przez Heroku są pg_dumps (tj. nie są to kopie zapasowe bazy danych lub możliwość skonfigurowania zewnętrznego gorącego węzła rezerwowego):

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

Jeśli masz szczęście, używasz wersji Postgres wystarczająco nowej, aby obsługiwać zarówno równoległy pg_dump (9.3+), jak i równoległy pg_restore (8.4+), co przyspieszy twoją pracę. Mamy nadzieję, że możesz sobie pozwolić na okno konserwacji, podczas którego blokujesz zapisy na swojej stronie, gdy trwa przełączanie ...

Josh Kupershmidt
źródło
1

Możesz podłączyć swoją bieżącą aplikację do bazy danych RDS i wstawić ją zarówno do Heroku, jak i RDS, nie chcę konfigurować replikacji, wystarczy wstawić oba serwery.

Po skonfigurowaniu będziesz mieć nowe rekordy przechowywane w obu bazach danych.

Powinno być łatwo sprawdzić, które rekordy brakuje (na przykład: w tabeli 1 brakuje wszystkich rekordów o identyfikatorze 100 lub niższym), czytając pierwszy wiersz w bazie danych RDS. Pisanie prostego skryptu eksportu nie powinno być zbyt trudne, chyba że masz dużo tabel.

Mam nadzieję, że to pomoże

Purefan
źródło
1

Wygląda na to, że AWS DMS (usługa migracji bazy danych) obsługuje migrację danych z zewnętrznych instancji SQL. Udało mi się skonfigurować zadanie migracji, które replikuje dane i zmiany z Heroku na RDS. Nie wiadomo, czy to faktycznie działa dla mnie;)

--- EDYTOWAĆ ---

Wygląda na to, że usługi takie jak DMS nie działają z Heroku, ponieważ wymagają więcej uprzywilejowanych ról, niż Heroku zezwala w swoich bazach danych: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -to-replicate-my-heroku-postgres-database-to-a-non-heroku-database

Murphy Randle
źródło