Eu tenho meu servidor de produção (ubuntu 13.10) rodando com postgresql 9.1.
Eu quero usar alguns recursos do 9.3, portanto, quero atualizar.
Alguém poderia me ajudar a atualizar de 9.1 para 9.3 para que haja um tempo de inatividade não superior a 30 minutos. ou então?
A principal preocupação é evitar a perda de dados ou redundância de arquivos.
Existem basicamente três maneiras de atualizar o PostgreSQL de diferentes versões principais (por exemplo, 9.1 para 9.3).
Atualizando com pg_dump
A primeira, e recomendada se possível, é fazer um dump da versão antiga (9.1) usando o binário da versão mais recente (9.3) e restaurá-lo em um novo cluster criado a partir da versão mais recente.
Esta abordagem é, geralmente, a mais lenta, mas também a mais viável. Uma dica para torná-lo mais rápido é usar simultaneidade. Para despejar com trabalhos paralelos, você pode fazer:
Você terá que fazer isso para cada banco de dados que tiver, ajustar
--jobs=4
o valor a qualquer valor (teste alguns valores de 2 a número de núcleos e veja qual dá melhor velocidade). Além disso, durante esta fase, ninguém deve estar conectado ao banco de dados, qualquer modificação resultará em um dump corrompido (devido à opção não segura--no-synchronized-snapshots
).Depois disso, você pode restaurar o dump na nova instância usando
pg_restore
:Depois disso, é recomendável executar
ANALYZE
em seu banco de dados:(se você tiver tempo, corra apenas
--analyze
para tambémVACUUM
o banco de dados e atualize os mapas de visibilidade)Atualizando com pg_upgrade
Outra opção é usar o contrib
pg_upgrade
. Usando o--link
método, ele fornece uma maneira muito rápida de atualizar o PostgreSQL.Antes de usar você deve fazer um backup de todo o diretório de dados, porque no
--link
modo, se algo der errado, você pode perder os dois dados (novos e antigos). Além disso, leia todos os documentos e especialmente as notas na parte inferior (existem algumas limitações para pg_upgrade).ATUALIZAÇÃO: Use a
--check
opção antes de executar o comando definitivo. Além disso, para grandes bancos de dados é recomendável executar este comando em uma sessão de tela.Atualize usando uma ferramenta de replicação baseada em gatilho
Outra opção para atualizar uma versão é usar uma ferramenta de replicação baseada em trigger. Como Slony, Bucardo e Londiste.
Esta é a opção que requer menos tempo de inatividade possível, mas é a mais difícil de trabalhar.
Para fazer isso você precisa construir um mestre-escravo onde o mestre é sua versão atual (9.1) e o escravo é a nova versão (9.3). Você então, espera o primeiro sincronismo (com o sistema ainda em produção), depois disso você fecha todos os conectados ao banco de dados (o downtime começa aqui), espera o escravo recuperar o atraso, promove-o (o escravo) a mestre e redirecione todos os clientes/aplicativos para esta nova versão. E pronto.
A documentação do Slony fornece um passo a passo para atualizar o PostgreSQL usando o Slony .
qual escolher
Bem, como sempre depende, resumindo:
Espero poder ajudar. Boa sorte.
Siga estas etapas para atualizar o postgres 9.1 para 9.3:
Primeiro crie um arquivo /etc/apt/sources.list.d/pgdg.list com o seguinte conteúdo para ubuntu:
Adicione a seguinte chave em execução:
Instale ferramentas de desenvolvedor com postgres:
Para confirmar nossa instalação, vamos digitar “sudo pg_lsclusters” e ver nossas duas versões do PostgreSQL rodando.
Pare o serviço Postgressql:
Exclua o cluster 9.3 padrão criado pela instalação 9.3.
Crie um novo cluster 9.3 a partir do cluster 9.1 existente.
Confirme se o novo cluster carrega e se estamos executando o PostgreSQL 9.3.
Se tudo funcionar, vá para o cluster 9.1.
para mais informações consulte este link
Isso pode ser realmente útil:
https://gist.github.com/ibussieres/11262268
É para 12.04, mas acho que é bastante transferível.