Eu tenho que atualizar do PostgreSQL 9.2 para 9.6. A seguir estão os desafios que estou enfrentando:
Como temos a configuração de replicação de streaming, e o PostgreSQL não suporta atualização da versão inferior para a superior no modo de replicação de streaming, quando atualizo o master, preciso reconstruir os escravos e isso leva 3 horas. Eu não tenho esse tempo de sobra. A qualquer momento, precisamos de um escravo e um mestre disponíveis. Existe alguma outra maneira de atualizar sem precisar reconstruir os escravos, usando a replicação de streaming?
Para criar a replicação lógica, pensamos em usar slony, mas o slony tem algumas limitações, pois não é replicado automaticamente:
- Alterações em objetos grandes (BLOBS)
- Alterações feitas por comandos DDL
- Alterações nos usuários e funções
... e nosso aplicativo possui comandos de criação contínuos. Portanto, não podemos usar slony.
Por favor, sugira algo para evitar a reconstrução do escravo e fazer a atualização com tempo de inatividade mínimo e um mestre e um escravo prontos.
fonte
Respostas:
A atualização de um banco de dados precisará de tempo de inatividade em seus servidores. Para minimizar o tempo de inatividade, sugiro que você instale a versão mais recente em um novo servidor, crie uma configuração de replicação e despeje todos os dados da instância antiga aqui e mude a indicação do servidor para que o aplicativo aponte para o novo servidor para conectar-se ao banco de dados.
fonte
pg_upgrade
. Demorou minutos (no mestre e no escravo combinados), enquanto o despejo sozinho precisa de mais de 3 horas.pg_upgrade
.