Solução completa para atualizar PostgreSQL no servidor de produção Debian

Solução completa para atualizar PostgreSQL no servidor de produção Debian

Estou usando o Debian 6 (Squeeze) em produção para alguns sites. Decidi usar backports do postgresql para poder usar os recursos do PostgreSQL 9.0. Achei que permaneceria 9.0 e receberia atualizações para essa versão principal.

Infelizmente, os backports do Squueze foram atualizados para o PostgreSQL 9.1, então provavelmente não receberei atualizações para o 9.0.

Estou planejando atualizar para o 9.1, mas sei que isso não é feito automaticamente.

Eu li sobre o pg_upgrade oficial e o pg_upgradecluster do debian, mas gostaria de receber um guia completo para atualização.

  1. Quais são as etapas a serem executadas (primeiro apt-get install postgresql, depois pg_upgradecluster e, em seguida, remover o cluster antigo)? Uma lista de etapas seria legal.
  2. Quais são os possíveis cenários de falha?
  3. Como se preparar para os fracassos e reagir a eles?

Posso parar o banco de dados por apenas algumas horas, então quero estar preparado

Responder1

É muito difícil fornecer um processo de atualização passo a passo adaptado à sua situação/ambiente.
Tentei abordar alguns dos destaques abaixo, mas você realmente precisa adaptar o processo ao seu ambiente.


Passo Zero, decida se você precisa atualizar. O Postgres 9.1 traz replicação síncrona e um monte de outras coisas interessantes que são úteis se você precisar, mas não é um motivo para atualizar imediatamente se não precisar.

Etapa 1: espere que isso demore muito se seu banco de dados for grande.
Mesmo usar pg_upgradeo processo simples de copiar os dados para um backup pode demorar um pouco: nossos bancos de dados de 16 GB levam uma hora ou mais para um pg_dump/pg_restore, ou cerca de 10 a 20 minutos para um pg_upgrade).

Etapa 2, sugiro a leitura do9.1 Notas de versão. Certifique-se de que nada do que você precisa esteja quebrado e que nada do que você use tenha mudado.
Não há nada como uma atualização de banco de dados que destrói seus sistemas de produção e realmente arruina seu mês.

Etapa 3,A seção de atualização do manual do Postgresé leitura obrigatória.

Passo 4, (insira qualquer coisa específica do Debian aqui, mas isso não é da minha conta :-)

Etapa 5, crie um plano de atualização.

Etapa 6, Teste o plano de atualização (tecnicamente opcional, masfortementerecomendado).

Etapa 7, faça a atualização em seus sistemas de produção.


Advertências padrão se aplicam:

  • A atualização pode destruir seu banco de dados. Faça um backup.
    • Certifique-se de que você pode restaurá-lo.
    • Certifique-se de que você pode restaurar obináriospara o sistema de banco de dados também.
      (Segure seus pacotes Debian antigos, se puder - já vi pessoas incapazes de desistir de uma atualização com falha porque não têm mais os binários de banco de dados antigos, e é realmente uma visão muito triste.)

  • Levará mais tempo do que você espera. Planeje isso.
    A política de atualização do banco de dados da minha empresa é "Comece às 18h de sexta-feira. Se não estiver funcionando até as 9h de domingo, reverta".

  • Monte um macaco zero
    Se seus dados forem realmente importantes, restaure uma cópia deles em outro lugar e teste seu caminho de atualização.
    Sim, faço isso com bancos de dados de 16 GB. Ainda farei isso com bancos de dados de 160 GB se encontrar uma maneira de fazer funcionar :-)

Responder2

Este é basicamente o passo 4 - mais a --checkopção de garantir que seus caminhos estejam corretos. Minha instalação vem dos repositórios e possui caminhos Debian padrão para os arquivos.

[email protected]:~$ /usr/lib/postgresql/9.1/bin/pg_upgrade --old-datadir /var/lib/postgresql/9.0/main --new-datadir /var/lib/postgresql/9.1/main --old-bindir /usr/lib/postgresql/9.0/bin/ --new-bindir /usr/lib/postgresql/9.1/bin/ --check

Isso acima falhou - disse consistentemente que estava executando os dois servidores na mesma porta.

O seguinte pareceu funcionar:

pg_dumpall -p 5432 | psql -d postgres -p 6543

Isso é útil.

informação relacionada