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
plpythonouplpython2. 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 Copiar o linkLink copiado para a área de transferência!
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
# módulo yum permite postgresql:streamCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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-serverepostgresql-upgrade:yum instalar postgresql-server postgresql-upgrade
# yum instalar postgresql-server postgresql-upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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-develepostgresql-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/datae 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
postgresqlnão esteja funcionando em nenhum dos sistemas fonte e alvo no momento da cópia dos dados.systemctl stop postgresql.service
# systemctl stop postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
$ /bin/postgresql-setup --upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Isto lança o processo
pg_upgradecomo pano de fundo.Em caso de falha,
postgresql-setupfornece uma mensagem de erro informativa.Copie a configuração anterior de
/var/lib/pgsql/data-oldpara 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
# systemctl start postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Execute o script
analyze_new_cluster.shlocalizado no diretório home PostgreSQL:su postgres -c '~/analyze_new_cluster.sh
su postgres -c '~/analyze_new_cluster.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow Se você quiser que o novo servidor PostgreSQL seja iniciado automaticamente na inicialização, execute:
systemctl habilita o serviço postgresql.service
# systemctl habilita o serviço postgresql.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow