Migre o banco de dados heroku para o Amazon RDS com tempo de inatividade mínimo


15

Eu tenho um banco de dados heroku postgres e quero migrá-lo para o Amazon RDS para economizar custos. Qual é a maneira de fazer isso com o tempo de inatividade mínimo? Geralmente, isso envolve a replicação do banco de dados em tempo real e a promoção do banco de dados replicado como o banco de dados principal.

Sei que posso usar um banco de dados seguidor para migrar o banco de dados no heroku e posso usar o banco de dados de réplica de leitura para migrar o banco de dados no Amazon RDS. Existe um método semelhante para criar replicação de banco de dados do Heroku DB que mora no meu próprio Amazon RDS?


2
você pode criar um escravo no RDS quando tudo estiver replicado. Remova o heroku master e promova o RDS para o mestre.
Sam

2
@SamD Eu não achava que a Amazon suportava escravos do PostgreSQL que recebiam de bancos de dados externos ainda. Eles adicionaram isso? Não vejo isso em docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Se foi adicionado, um link de documentação seria muito apreciado. Como você o alimenta pg_basebackuppara começar? E lidar com diferentes versões principais?
Craig Ringer

Respostas:


3

Tenho certeza de que você precisará executar um bom despejo e restauração à moda antiga aqui. A Amazon parece não oferecer outras opções de importação além do carregamento em um despejo:

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

e mesmo se o fizessem, as únicas opções de exportação oferecidas pelo Heroku são pg_dumps (por exemplo, não basebackups ou a capacidade de configurar um nó de espera externa externa):

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

Se você tiver sorte, está usando uma versão do Postgres nova o suficiente para suportar pg_dump (9.3+) paralelo e pg_restore (8.4+) paralelo, o que tornará seu trabalho um pouco mais rápido. Esperamos que você possa ter uma janela de manutenção durante a qual você bloqueia as gravações no site enquanto a transição está em andamento ...


1

Você pode conectar seu aplicativo atual ao banco de dados do RDS e inseri-lo no Heroku e no RDS, não pretendo configurar a replicação, apenas inserir nos dois servidores.

Uma vez configurado, você terá novos registros armazenados nos dois bancos de dados.

Deve ser fácil ver quais registros estão ausentes (por exemplo: na tabela1, todos os registros com o ID 100 ou inferior), lendo a primeira linha no banco de dados do RDS. Escrever um script de exportação simples não deve ser muito difícil, a menos que você tenha muitas tabelas.

Espero que ajude


1

Parece que o AWS DMS (Serviço de Migração de Banco de Dados) oferece suporte à migração de dados de instâncias SQL externas. Consegui configurar uma tarefa de migração que replica dados e alterações do Heroku para o RDS. Se realmente funciona para mim ainda está para ser visto;)

--- EDIT ---

Parece que serviços como o DMS não funcionam com o Heroku, porque exigem funções mais privilegiadas do que o Heroku permite em seus bancos de dados: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -para replicar-meu-heroku-postgres-banco de dados em um banco de dados não-heroku

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.