Learning Center
Bancos de dados PostgreSQL

Métodos de Atualização do PostgreSQL para uma Nova Versão

6 nov. 2025
Hostman Team
Hostman Team

No PostgreSQL, a atualização de versões é realizada de diferentes maneiras:

  • Instalar pacotes com uma nova versão do PostgreSQL. Este método é adequado apenas para atualizações menores. Antes de realizar a atualização, consulte as notas de versão.

  • Uso do programa padrão pg_dumpall. É um método confiável, mas pode haver um tempo de inatividade prolongado.

  • Uso do programa padrão pg_upgrade. Outra maneira rápida de atualizar, mas erros podem ocorrer.

  • Atualização via replicação lógica. Esta opção tem um tempo de inatividade mínimo, mas é adequada apenas para versões do PostgreSQL superiores a 10.0. Versões anteriores exigem extensões. A escolha depende da versão em uso no servidor e da versão para a qual você deseja atualizar.
    Neste artigo, vamos explorar todos os métodos de atualização mencionados.

Notas Importantes Antes de Atualizar
Copiar link

O principal é entender as particularidades das atualizações entre diferentes versões.
Os números de versão consistem em dois dígitos, por exemplo, 10.1. O primeiro dígito é o número da versão principal (10). O segundo dígito é o número da versão menor (1).
Antes do PostgreSQL 10, os números de versão consistiam em três dígitos. Por exemplo, em 9.6.3, 9.6 é o número da versão principal e 3 é o número da versão menor.

Você deve entender essa diferença para escolher o método de atualização correto.

Nas versões menores, o formato de armazenamento de dados não muda, portanto, não há problemas de compatibilidade. Por isso, a transição do PostgreSQL 10.1 para o 10.6 pode ser feita muito facilmente. Para atualizar, basta desligar o servidor, substituir os arquivos executáveis e reiniciar o servidor.
No entanto, a documentação observa que algumas versões podem exigir alterações manuais. Portanto, sempre leia as notas de versão antes de atualizar.

Nas versões principais, o formato dos dados pode mudar. Isso torna a atualização mais difícil. Você precisará descarregar os dados e carregá-los novamente, usar o programa pg_upgrade ou utilizar replicação lógica.

Atualização Dentro de uma Mesma Versão Principal
Copiar link

Vamos ver como atualizar o PostgreSQL versão 14.1 para PostgreSQL 14.3 em um servidor Ubuntu.

O PostgreSQL está disponível no Ubuntu por padrão. Comece com o comando:

sudo apt-get upgrade

O Debian e o Ubuntu lançam apenas uma versão do PostgreSQL para cada versão do sistema operacional. Por exemplo, o Debian Squeeze/6.0 só tem o PostgreSQL 8.4. Se você precisar de uma versão diferente do PostgreSQL, use os pacotes do PGDG.

Se você deseja a versão mais recente do PostgreSQL, primeiro deve instalar o repositório do Postgres.

Adicione um repositório:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Imprima a chave de assinatura:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Atualize a lista de pacotes no sistema:

sudo apt-get update

Instale a versão necessária do PostgreSQL:

sudo apt-get -y install postgresql-14.3

Para ver a lista de DBMSs instalados, execute:

dpkg --get-selections | grep postgres

Também veja a lista de clusters:

pg_lsclusters

Desligue o PostgreSQL antes de fazer alterações:

sudo service postgresql stop

Quando os pacotes do PostgreSQL são instalados, eles criam um cluster padrão para você. Você deve renomear o novo cluster do Postgres para evitar conflitos com o nome do antigo cluster ao atualizar.

sudo pg_renamecluster 14.3 main main_pristine

Atualize o antigo cluster:

sudo pg_upgradecluster 14.1 main

Inicie o serviço:

sudo service postgresql start

Verifique novamente a lista de clusters e certifique-se de que o novo cluster está funcionando:

pg_lsclusters

Remova o antigo cluster:

sudo pg_dropcluster 14.1 main

Atualização via pg_dumpall
Copiar link

Se você precisar mudar a versão principal, use o programa pg_dumpall. A essência deste método é descarregar os dados de uma versão principal e depois carregá-los em outra.

Antes de descarregar os dados, certifique-se de que nenhuma alteração está sendo feita no banco de dados no momento. Caso contrário, algumas das alterações podem não ser incluídas no dump final.

Obtenha o dump e escreva-o em um arquivo:

pg_dumpall > output_file

Desligue o servidor:

pg_ctl stop

Mude o nome do diretório antigo para evitar conflitos de nome:

mv /usr/local/pgsql /usr/local/pgsql.old

O diretório antigo pode ser excluído. Mas é mais sensato renomeá-lo para deixar espaço para restauração. Em vez de /usr/local/pgsql, especifique o caminho para o seu diretório.

Instale a nova versão a partir do código-fonte. Existe um guia detalhado na documentação.

Crie um novo cluster:

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

Transfira todas as alterações para os arquivos pg_hba.conf e postgresql.conf.

Inicie o servidor de banco de dados:

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

Restaure os dados do backup:

/usr/local/pgsql/bin/psql -d postgres -f output_file

A desvantagem deste método é que o servidor ficará desligado por um longo tempo. Para reduzir o tempo de inatividade, você pode instalar o novo servidor em um diretório diferente e depois executar os servidores antigo e novo em diferentes portas. Para transferir os dados, use o comando:

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

Em vez de 5432 e 5433, especifique os números de porta em que você executou os servidores.

Atualização via pg_upgrade
Copiar link

Para evitar descarregar e carregar dados, use o programa pg_upgrade. Ele ajuda a atualizar mais rápido. O programa pg_upgrade cria novas tabelas do sistema, levando em conta as mudanças nas últimas versões do PostgreSQL. Nesse caso, os antigos arquivos de dados são mantidos. Além disso, o pg_upgrade verifica se os clusters são compatíveis.

O programa pg_upgrade ajuda você a atualizar do PostgreSQL 8.4.X para a versão atual do DBMS.

Vamos ver um plano de atualização geral usando o pg_upgrade.

Mova o cluster antigo. Isso deve ser feito se o diretório não estava vinculado à versão antiga. Por exemplo, se ele estiver em /usr/local/pgsql. Se você não renomeá-lo, ocorrerá um conflito durante a atualização.

O renomeio é feito quando o servidor está desligado com o comando:

mv /usr/local/pgsql /usr/local/pgsql.old

Construa a nova versão a partir do código-fonte. Ajuste o configure para que as opções sejam compatíveis com a configuração do cluster antigo. Antes de iniciar a atualização, o pg_upgrade verificará a compatibilidade das opções.

Instale novos arquivos executáveis. Para colocar o servidor em um diretório não padrão, use o prefixo:

make prefix=/usr/local/pgsql.new install

Use o initdb para inicializar um novo cluster. Verifique se as opções são compatíveis com as do cluster antigo.

Instale os arquivos de objetos compartilhados de extensão. Se houver atualizações disponíveis, o pg_upgrade criará automaticamente um script para sua instalação posterior.

Transfira os arquivos de pesquisa de texto completo.

Configure a autenticação de pares no pg_hba.conf. Isso deve ser feito porque o pg_upgrade se conectará aos antigos e novos hosts várias vezes.

Verifique se os servidores antigo e novo estão parados:

pg_ctl -D /opt/PostgreSQL/9.6 stop

pg_ctl -D /opt/PostgreSQL/14 stop

Execute o pg_upgrade no novo servidor. Primeiro, execute o programa em modo de verificação adicionando a opção: pg_upgrade --check. Em resposta, você receberá uma lista de ajustes que precisam ser feitos manualmente após a atualização.

Se você fez alterações no arquivo pg_hba.conf, restaure-o para o seu estado anterior. Às vezes, outras configurações no novo cluster precisam ser alteradas para coincidir com a configuração do cluster antigo.

Inicie o servidor.

Se estiver satisfeito com o resultado, exclua o cluster antigo.

Para detalhes e características do uso do pg_upgrade, consulte a documentação.

Uso de Replicação Lógica
Copiar link

A partir da versão 10 do PostgreSQL, temos um método para replicação lógica de objetos de dados e as mudanças neles. Ele é baseado no uso de identificadores de replicação; geralmente, são chaves primárias.

A replicação lógica usa o modelo de publicação-assinatura. O usuário cria uma captura instantânea do banco de dados publicado e a copia para o assinante. Na documentação do PostgreSQL, um dos cenários típicos para usar replicação lógica é precisamente a replicação entre diferentes versões principais do PostgreSQL.

O servidor de backup pode estar no mesmo host ou em outro. Após a sincronização estar concluída, várias opções estão disponíveis. Por exemplo, você pode fazer o novo servidor ser o principal e desligar o antigo.

A principal vantagem da replicação lógica é o tempo de inatividade mínimo. A interrupção do servidor, em alguns casos, é limitada a apenas alguns segundos.

Conclusão
Copiar link

Examinamos os métodos universais para atualizar o PostgreSQL para uma nova versão principal e atualizar dentro de uma versão principal.

Com este guia, você pode selecionar o método que funciona melhor para o seu caso particular e atualizar sua versão atual do PostgreSQL.