Skip to main content

Atualização PostgreSQL 12 para versão 17 - RHEL

Preparação

Este procedimento trata-se de atualização do sistema gerenciador de banco de dados (SGBD) PostgreSQL, repositório do MD2 QualityManager, da versão 12 para versão 17 em servidor RHEL/Rocky Linux 8. Atente-se aos requisitos e alertas deste tópico antes de iniciar a atualização.

  • Faça backup da máquina virtual (VM) antes de iniciar o procedimento. Pode ser adotado outro procedimento de backup. A sugestão é backup por snapshot pois o RTO (Recovery Time Objective) é menor.
  • Se programe para a indisponibilidade. O procedimento pode demorar pelo menos 60 minutos. Variará de acordo com o tamanho do banco de dados e capacidade dos recursos. Considere na estimativa o tempo de retorno em caso de incidente.
  • Garanta que o banco de dados não está em uso, seja pela aplicação MD2 QualityManager ou outro.
  • Garanta que a máquina virtual tenha acesso ao repositório oficial do PostgreSQL:
    https://​​​​​​​postgresql.org​​​​​​​

Ao final do procedimento a aplicação MD2 QualityManager executará apontando para a nova versão de banco de dados de forma transparente.

Atualização

Para garantir que não há nenhuma conexão no banco de dados, desligue o Tomcat e reinicie o PostgreSQL:

sudo systemctl stop tomcat10.service
sudo systemctl restart postgresql-12.service

Para iniciar o upgrade, o usuário deverá estar logado com o usuário ROOT e executar os comandos abaixo:

sudo dnf install -y \
https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf clean all
sudo dnf makecache

Instalar o PostgreSQL versão 17:

sudo dnf install -y postgresql17 postgresql17-server

Criar um novo cluster:

sudo /usr/pgsql-17/bin/postgresql-17-setup initdb

Parar o serviço do PostgreSQL:

sudo systemctl stop postgresql-12
sudo systemctl stop postgresql-17

Acessar com o usuário postgres:

$ su - postgres

Executar a migração:

/usr/pgsql-17/bin/pg_upgrade \
-b /usr/pgsql-12/bin \
-B /usr/pgsql-17/bin \
-d /var/lib/pgsql/12/data \
-D /var/lib/pgsql/17/data

Voltar para o usuário com permissões administrativas executando o comando:

exit

Ajustar parâmetro "listen_addresses" no arquivo postgresql.conf da versão 17 conforme a imagem abaixo:

vim /var/lib/pgsql/17/data/postgresql.conf

image.png

Ajustar entradas no arquivo pg_hba.conf da versão 17 conforme a imagem abaixo:

vim /var/lib/pgsql/17/data/pg_hba.conf

image.png

Habilitar e iniciar o serviço do PostgreSQL 17:

sudo systemctl enable postgresql-17
sudo systemctl start postgresql-17

Instalar extensão unaccent:

sudo dnf install -y postgresql17-contrib
psql -q -h 127.0.0.1 -d qualitymanager -U md2net -c "create extension unaccent;"

Verificar acesso e versão do banco:

psql -q -h 127.0.0.1 -d qualitymanager -U md2net -c "select version();"

image.png

Remover PostgreSQL12 somente após verificação e execução do comando anterior:

sudo su - postgres
./delete_old_cluster.sh