Eu tenho meu servidor de produção (ubuntu 13.10) rodando com o postgresql 9.1.
Quero usar alguns recursos da 9.3, portanto, quero atualizar.
Alguém poderia me ajudar com a atualização da 9.1 para a 9.3, para que haja um tempo de inatividade não superior a 30 minutos. ou então?
A principal preocupação é evitar uma perda de dados ou redundância de arquivos.
postgresql
postgresql-9.1
Ram Kumar
fonte
fonte
Respostas:
Existem basicamente três maneiras de atualizar o PostgreSQL de diferentes versões principais (por exemplo, 9.1 a 9.3).
Fazendo upgrade com pg_dump
O primeiro, e recomendado 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 para a versão mais recente.
Essa 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:
Você precisará fazer isso para cada banco de dados que tiver, ajustar o
--jobs=4
valor para 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 despejo na nova instância usando
pg_restore
:Depois disso, é recomendável executar
ANALYZE
no seu banco de dados:(se você puder pagar o tempo, execute apenas
--analyze
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, é necessário fazer um backup de todo o diretório de dados, pois, no
--link
modo, se algo der errado, você poderá perder os 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: Por favor, use a
--check
opção antes de executar o comando definitivo. Além disso, para bancos de dados grandes, é recomendável executar este comando em uma sessão de tela.Atualizar usando uma ferramenta de replicação baseada em gatilho
Outra opção para atualizar uma versão é usar uma ferramenta de replicação baseada no gatilho. Como Slony, Bucardo e Londiste.
Essa é a opção que requer o menor tempo de inatividade possível, mas é a mais difícil de se trabalhar.
Para fazer isso, você precisa construir um master-slave onde o master é sua versão atual (9.1) e o slave é a nova versão (9.3). Então, espere a primeira sincronização (com o sistema ainda em produção), depois feche todos os usuários conectados ao banco de dados (o tempo de inatividade começa aqui), aguarde o escravo recuperar o atraso, promova-o (o escravo) para dominar e redirecione todos os clientes / aplicativos para esta nova versão. E você terminou.
A documentação do Slony fornece um passo a passo para atualizar o PostgreSQL usando o Slony .
Qual escolher
Bem, como sempre depende, continuando:
Espero poder ajudar. Boa sorte.
fonte
pg_dumpall
para despejar todos os bancos de dados de uma só vez.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 o ubuntu:
Adicione a chave executando a seguir:
Instale ferramentas de desenvolvedor com o postgres:
Para confirmar nossa instalação, digitaremos “sudo pg_lsclusters” e veremos nossas duas versões do PostgreSQL em execução.
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 é carregado e estamos executando o PostgreSQL 9.3.
Se tudo funcionar cair para o cluster 9.1.
para mais informações consulte este link
fonte
Isso pode ser realmente útil:
https://gist.github.com/ibussieres/11262268
É para 12.04, mas acho que é bastante transferível.
fonte