8.3.5. Migrando para uma versão RHEL 8 do PostgreSQL
O Red Hat Enterprise Linux 7 contém PostgreSQL 9.2 como a versão default do servidor PostgreSQL. Além disso, várias versões do PostgreSQL são fornecidas como Coleções de Software para RHEL 7 e RHEL 6.
O Red Hat Enterprise Linux 8 fornece PostgreSQL 10 (o fluxo padrão postgresql
), PostgreSQL 9.6 e PostgreSQL 12.
Os usuários do PostgreSQL no Red Hat Enterprise Linux podem usar dois caminhos de migração para os arquivos do banco de dados:
Use de preferência o método de atualização rápida, que é mais rápido do que o processo de despejo e restauração.
No entanto, em certos casos, a atualização rápida não funciona, e você só pode usar o processo de despejo e restauração. Tais casos incluem:
- Atualizações de arquitetura cruzada
-
Sistemas que utilizam as extensões
plpython
ouplpython2
. Note que o repositório AppStream RHEL 8 inclui apenas o pacotepostgresql-plpython3
, não o pacotepostgresql-plpython2
. - O upgrade rápido não é suportado para migração das versões da Red Hat Software Collections de PostgreSQL.
Como pré-requisito para a migração para uma versão posterior de PostgreSQL, faça backup de todos os seus bancos de dados PostgreSQL.
O despejo dos bancos de dados e a realização de backup dos arquivos SQL é uma parte necessária do processo de despejo e restauração. No entanto, é recomendável que você o faça também se estiver realizando a atualização rápida.
Antes de migrar para uma versão posterior de PostgreSQL, veja as notas de compatibilidade a montante para a versão de PostgreSQL para a qual você deseja migrar, assim como para todas as versões ignoradas PostgreSQL entre a versão de onde você está migrando e a versão de destino.
8.3.5.1. Atualização rápida usando a ferramenta pg_upgrade
Durante uma rápida atualização, você precisa copiar arquivos de dados binários para o diretório /var/lib/pgsql/data/
e usar a ferramenta pg_upgrade
.
Você pode usar este método para a migração de dados:
- Desde a versão do sistema RHEL 7 de PostgreSQL 9.2 até a versão RHEL 8 de PostgreSQL 10
- Desde a versão RHEL 8 de PostgreSQL 10 até a versão RHEL 8 de PostgreSQL 12
Se você quiser atualizar de um fluxo postgresql
anterior dentro do RHEL 8, siga o procedimento descrito em Mudança para um fluxo posterior e depois migre seus dados PostgreSQL.
Para migração entre outras combinações de versões PostgreSQL dentro da RHEL, e para migração das versões da Red Hat Software Collections de PostgreSQL para a RHEL, use Dump e restore upgrade.
Antes de realizar a atualização, faça o backup de todos os seus dados armazenados nos bancos de dados PostgreSQL.
Por padrão, todos os dados são armazenados no diretório /var/lib/pgsql/data/
tanto no sistema RHEL 7 quanto no RHEL 8.
O seguinte procedimento descreve a migração da versão do sistema RHEL 7 de Postgreql 9.2 para uma versão RHEL 8 de PostgreSQL.
Para realizar uma rápida atualização:
No sistema RHEL 8, habilite o fluxo (versão) para o qual você deseja migrar:
# módulo yum permite postgresql:stream
Substitua stream pela versão selecionada do servidor PostgreSQL.
Você pode omitir esta etapa se quiser usar o fluxo padrão, que fornece PostgreSQL 10.
No sistema RHEL 8, instale os pacotes
postgresql-server
epostgresql-upgrade
:# yum instalar postgresql-server postgresql-upgrade
Opcionalmente, se você usou algum módulo do servidor PostgreSQL no RHEL 7, instale-o também no sistema RHEL 8 em duas versões, compiladas contra PostgreSQL 9.2 (instalado como o pacote
postgresql-upgrade
) e a versão alvo de PostgreSQL (instalado como o pacotepostgresql-server
). Se você precisar compilar um módulo de servidor PostgreSQL de terceiros, compile-o tanto contra os pacotespostgresql-devel
epostgresql-upgrade-devel
.Verifique os seguintes itens:
-
Configuração básica: No sistema RHEL 8, verifique se seu servidor usa o diretório padrão
/var/lib/pgsql/data
e se o banco de dados está corretamente inicializado e habilitado. Além disso, os arquivos de dados devem ser armazenados no mesmo caminho mencionado no arquivo/usr/lib/systemd/system/postgresql.service
. - PostgreSQL servidores: Seu sistema pode rodar vários servidores PostgreSQL. Certifique-se de que os diretórios de dados de todos esses servidores sejam tratados de forma independente.
-
PostgreSQL módulos do servidor: Certifique-se de que os módulos do servidor PostgreSQL que você usou no RHEL 7 também estejam instalados em seu sistema RHEL 8. Observe que os plug-ins estão instalados no diretório
/usr/lib64/pgsql/
(ou no diretório/usr/lib/pgsql/
em sistemas de 32 bits).
-
Configuração básica: No sistema RHEL 8, verifique se seu servidor usa o diretório padrão
Certifique-se de que o serviço
postgresql
não esteja funcionando em nenhum dos sistemas fonte e alvo no momento da cópia dos dados.# systemctl stop postgresql.service
-
Copie os arquivos do banco de dados do local de origem para o diretório
/var/lib/pgsql/data/
no sistema RHEL 8. Execute o processo de atualização executando o seguinte comando como usuário do PostgreSQL:
$ /bin/postgresql-setup --upgrade
Isto lança o processo
pg_upgrade
como pano de fundo.Em caso de falha,
postgresql-setup
fornece uma mensagem de erro informativa.Copie a configuração anterior de
/var/lib/pgsql/data-old
para o novo cluster.Observe que a atualização rápida não reutiliza a configuração anterior na pilha de dados mais recente e a configuração é gerada do zero. Se você quiser combinar manualmente as configurações antiga e nova, use os arquivos *.conf nos diretórios de dados.
Inicie o novo servidor PostgreSQL:
# systemctl start postgresql.service
Execute o script
analyze_new_cluster.sh
localizado no diretório home PostgreSQL:su postgres -c '~/analyze_new_cluster.sh
Se você quiser que o novo servidor PostgreSQL seja iniciado automaticamente na inicialização, execute:
# systemctl habilita o serviço postgresql.service