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

3

Estou usando o Debian 6 (Squeeze) em produção para alguns sites. Decidi usar backports postgresql para poder usar os recursos do PostgreSQL 9.0. Eu pensei que ele 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 a atualização 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 o apt-get instala o postgresql, depois o pg_upgradecluster e remove o cluster antigo)? Lista de passos seria bom.
  2. Quais são os possíveis cenários de falha?
  3. Como se preparar para fracassar e reagir a eles?

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

    
por Daimon 21.11.2011 / 12:51

2 respostas

6

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

Passo Zero, decida se você precisa atualizar. O Postgres 9.1 traz a Replicação Síncrona e um monte de outras coisas legais que são úteis se você precisar, mas não uma razão para atualizar imediatamente se você não precisar.

Passo 1, espere que isso leve muito tempo se o banco de dados for grande.
Mesmo usando pg_upgrade , o processo simples de copiar os dados para um backup pode demorar: nossos bancos de dados de 16GB levam uma hora ou mais para um pg_dump / pg_restore, ou cerca de 10-20 minutos para um pg_upgrade).

Etapa 2, sugiro ler as 9.1 Notas da versão . Certifique-se de que nada que você precisa está quebrado e nada que você use mudou. Não há nada como uma atualização de banco de dados que destrua seus sistemas de produção para realmente arruinar seu mês.

Passo 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 essa não é a minha bolsa: -)

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

Etapa 6, teste o plano de atualização (tecnicamente opcional, mas strongmente recomendado).

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

As 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 restaurar os binários para o sistema de banco de dados também.
      (Agarre-se aos seus pacotes Debian antigos, se puder - eu vi pessoas incapazes de desistir de uma atualização com falha porque elas não têm mais os binários antigos do banco de dados, e é realmente uma visão muito triste.) < br>
  • Isso levará mais tempo do que você espera. Planeje isso.
    A política de atualização de banco de dados da minha empresa é "Comece às 18h na sexta-feira. Se não estiver funcionando às 9h no domingo, recue."

  • Monte um macaco arranhado
    Se seus dados forem realmente importantes, restaure uma cópia dele em outro lugar e teste seu caminho de atualização.
    Sim, eu faço isso com bancos de dados de 16GB. Eu ainda farei isso com bancos de dados de 160GB se eu puder encontrar uma maneira de fazê-lo funcionar :-)

por 21.11.2011 / 17:57
0

Este é o passo 4 basicamente - mais a opção --check para garantir que seus caminhos estejam corretos. Minha instalação é 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 - consistentemente disse que eu estava executando os dois servidores na mesma porta.

O seguinte pareceu funcionar:

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

Isso é útil .

    
por 18.07.2012 / 08:46