Atualização PostgreSQL 16 para versão 17
Antes do upgrade para versão 17 deve realizar-se o upgrade para a versão 24.04 do SO Ubuntu.
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 16 para versão 17. 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 - A depender da origem do servidor, se é oriunda da OVA padrão distribuída pela MD2 QualityManager, o usuário "md2net" pode não ter permissão para executar alguns comandos. Recomendamos a avaliação prévia ou a utilização do usuário "root".
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.service
Para iniciar o upgrade, o usuário deverá estar logado com o usuário MD2NET e executar os comandos abaixo:
$ psql -h 127.0.0.1 -U md2net -c "ALTER USER postgres WITH PASSWORD 'md2net2018';" qualitymanager
$ sudo su -
A senha acima é a padrão da instalação. Caso tenha sido modificada, é necessário ajustar a configuração de conexão com o QualityManager. Veja o procedimento: https://docs.md2net.com/books/quality-manager-67H/page/configurando-qm-para-conectar-ao-postgressql-remotamente
Acessando com o usuário postgres:
$ su - postgres
Executar os comandos abaixo:
$ su - postgres
$ psql -c "ALTER DATABASE qualitymanager REFRESH COLLATION VERSION;"
$ psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
$ psql -c "ALTER DATABASE mensageria_qm REFRESH COLLATION VERSION;"
$ psql -c "ALTER DATABASE template1 REFRESH COLLATION VERSION;"
$ exit
Parando o serviço do PostgreSQL:
$ sudo systemctl stop postgresql
Mudando o timezone do arquivo de configuração do poatgresql:
$ vim vim /etc/postgresql/16/main/postgresql.conf
## Mude "log_timezone": "US/Pacific" para "log_timezone": "Etc/GMT-3"
Arquivo antes da edição:
Arquivo após edição:
Instalação do PostgreSQL versão 17:
$ sudo apt install postgresql-17
Acessando com o usuário postgres:
$ su - postgres
Renomeando a instância da versão 17:
$ pg_renamecluster 17 main main17
Atualizando a instância 16.
Este procedimento pode demorar algumas horas pois faz a migração de dados:
$ pg_upgradecluster 16 main
Conferência de 3 instâncias, duas da versão 16 e a nova, versão 17:
$ sudo pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
16 main 5432 down postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
17 main 5434 online postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
17 main17 5433 down postgres /var/lib/postgresql/17/main17 /var/log/postgresql/postgresql-17-main17.log
Remover a antiga instância 16 e a 17, desnecessárias:
$ pg_dropcluster 17 main17 --stop
$ pg_dropcluster 16 main --stop
Logout do usuário postgres:
$ exit
Mudando a porta do postgreSQL, mude para a porta 5432:
$ vim /etc/postgresql/17/main/postgresql.conf
Arquivo antes da edição:
Arquivo após edição:

Iniciando o serviço do PostgreSQL:
$ sudo systemctl start postgresql
Verifique que o serviço do PostgreSQL subiu com sucesso:
$ systemctl status postgresql
Em caso de erro em algum passo no procedimento, recomenda-se a execução do procedimento de restauração do backup.


No Comments