atualizando do postgres 9.1 para 9.3 no servidor ubuntu
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.
— Ram Kumar
Os documentos do Postgres são realmente bons. google.co.uk/#q=postgres+upgrade+from+9.1+to+9.3
— Philᵀᴹ
Eu não sou um DBA em si (tenho que cuidar da instalação estranha do Postgres e ainda mais estranho do mysql;}), e este post é antigo, mas por que você usaria qualquer versão do Ubuntu X.10 para prod em vez de um X.04 LTS?
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=4valor 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 ANALYZEno seu banco de dados:
(se você puder pagar o tempo, execute apenas --analyzetambém VACUUMo banco de dados e atualize os mapas de visibilidade)
Atualizando com pg_upgrade
Outra opção, é usar o contribpg_upgrade . Usando o --linkmé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 --linkmodo, 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 --checkopçã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 .
Bem, como sempre depende, continuando:
O dump + restore é o mais confiável, mas geralmente o mais lento (o paralelismo pode dar bons resultados)
O pg_upgrade é uma das melhores opções para pouco tempo de inatividade (se você pode usar, veja as limitações), geralmente leva apenas alguns minutos, mesmo para grandes bancos de dados
A replicação do gatilho é, sem dúvida, a que oferece o menor tempo de inatividade possível (quase zero), mas é realmente difícil de alcançar e eu recomendo apenas para pessoas experientes (no PostgreSQL e na ferramenta de replicação).
Espero poder ajudar. Boa sorte.
— MatheusOl
O pg_upgrade também funciona das 8.4.17 às 9.3?
@JohnMerlino: sim, o pg_upgrade pode atualizar da versão 8.3 ou superior (inclui 8.3, 8.4, 9.0, 9.1, 9.2, ...).
"usar o binário da versão mais recente (9.3)" pode não ser tão necessário. Eu pelo menos consegui que funcionasse sem fazer isso.
— 21417 theicfire
@theicfire na verdade depende de ambas as versões (antiga e nova), pode ou não funcionar. Na verdade, ele funcionará na maioria dos casos, exceto por algumas mensagens de erro que geralmente podem ser usadas ... O procedimento oficial é usar o binário da versão mais recente!
Você pode usar pg_dumpallpara 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.