Vou transferir um banco de dados postgresql 9.3.10 (~ 55 GB) da VM do Azure para um AWS EC2. Sendo um novato, esta questão é sobre como acertar o processo. Eu vi este post e preciso ir um pouco além disso:
O despejo do banco de dados de produção ativo em um servidor ocupado é perfeitamente seguro? Os documentos explicam como o pg_dump é non-blocking , então estou inclinado a pensar que é. Na sua experiência,
pg_dump
sempre funciona sem problemas na produção, ou há exceções? Minha outra opção (desagradável) é desligar o servidor, criando uma janela de manutenção "difícil".Os documentos mencionam o uso
--format
para controlar o formato de despejo.c
(custom) parece promissor, mas achei a descrição vaga em termos de como usá-lo. Devo simplesmente tentar opg_dump
comando assim:pg_dump -U postgres -Fc db_name > db.dump
? Quaisquer outros sinalizadores práticos também seriam de interesse.Um guia simples que li recomenda agrupar toda a restauração em uma única transação:
psql -1 restored_database < backup_file
. Isso fornece um resultado binário falhando totalmente se houver erros de restauração. i) O que poderia causar erros de restauração? e ii) o comando de restauração que originalmente planejei usar épg_restore --verbose --clean --no-acl --no-owner -U myuser -d mydb latest.dump
. Isso parece certo?
É perfeitamente seguro, especialmente com o fato de
--serializable-deferrable
você não estar respondendo à pergunta real, que é o que você faz com os dados inseridos enquanto está despejando e movendo o banco de dados. A melhor maneira, na minha opinião, é a janela de manutenção difícil.eu usaria
-c
.um backup inconstante ou uma falha no carregamento devido a uma extensão ausente causa erros de restauração, embora eu não ache que você terá esse problema.
Como você sabe que o Azure suporta 9.6 ( eles dizem isso aqui ), eu
Se funcionar, pg_dump e mova para o Azure.