Fazer upgrade para uma nova versão principal

A partir de dezembro de 2025, Databases for PostgreSQL oferece três caminhos de atualização diferentes:

  • Atualização no local para uma nova versão principal.
  • Restaurando a partir do backup.
  • Atualização a partir de uma réplica somente leitura.

Quando uma versão principal de um banco de dados está se aproximando do fim de sua vida útil (EOL), é recomendável atualizá-la para uma versão principal mais recente.

Localize as versões disponíveis do Databases for PostgreSQL na página do IBM Cloud catálogo, na Cloud Databases comando de plug-in da CLI ibmcloud cdb deployables-showou na Cloud Databases API /deployables terminal.

Ao fazer upgrade para uma nova instância, também é necessário mudar as informações de conexão no aplicativo.

Nos comandos de exemplo a seguir, o CRN completo da instância do banco de dados é necessário para o comando {id}. Como o CRN contém caracteres especiais, ele deve ser codificado em URL para evitar um erro "not_found".

Requisitos para atualizar para uma versão principal mais recente do PostgreSQL

Antes de iniciar qualquer processo de atualização para uma versão principal, verifique todas as extensões, objetos de replicação e dependências de aplicativos que precisam ser mantidos em primeiro lugar.

Algumas extensões e objetos de replicação lógica são específicos de uma versão ou dependem de componentes do lado do servidor que devem corresponder à versão principal do PostgreSQL. Removê-los antes da atualização ajuda a evitar falhas e permite recriar apenas os objetos compatíveis depois que a nova versão estiver em execução.

Extensões e objetos de replicação lógica a serem analisados

Verifique os seguintes itens antes da atualização:

Extensões

  • pg_repack
  • old_snapshot
  • wal2json
  • anon
  • PostGIS

Slots de replicação

  • Logical replication slots

Dependências do aplicativo

Se você remover extensões ou objetos de replicação dos quais suas aplicações dependem, verifique os fluxos de dados e o comportamento das aplicações antes de prosseguir com a atualização. Além disso, leve em consideração possíveis interrupções na lógica do seu aplicativo que dependa de recursos específicos do PostgreSQL.

pg_repack

Exclua a pasta pg_repack antes da atualização e recrie-a após a atualização. O pg_repack utiliza uma extensão específica da versão e componentes cliente/servidor que devem corresponder à versão principal do PostgreSQL.

DROP EXTENSION pg_repack;

Recrie a extensão após a atualização apenas se sua carga de trabalho ainda precisar dela.

CREATE EXTENSION pg_repack;

old_snapshot

Exclua o arquivo old_snapshot antes da atualização. PostgreSQL NÃO o recrie após atualizar para o Windows 18, pois ele não é mais compatível.

DROP EXTENSION old_snapshot;

wal2json slots de replicação

Se você usar o wal2json para a decodificação lógica, é necessário excluir todos os slots de replicação associados antes da atualização. O utilitário pg_upgrade proíbe estritamente atualizações de versão principal enquanto houver slots de replicação e, nesse caso, gerará um erro crítico e interromperá a atualização.

Antes da atualização:

  1. Certifique-se de que todos os dados WAL pendentes tenham sido processados.
  2. Encerre o aplicativo que está utilizando o slot de replicação.
  3. Excluir os slots de replicação:
SELECT pg_drop_replication_slot('your_slot_name');

Após a atualização, você poderá recriar os slots de replicação conforme necessário. Observe que o wal2json não é instalado por meio do CREATE EXTENSION , mas é configurado por meio de parâmetros de banco de dados (wal_level, max_replication_slots, max_wal_senders) e permissões de tabela, o que não impede a realização de atualizações.

anon

Desative a extensão " anon " antes da atualização e reative-a após a atualização, caso ainda precise dela. É necessário realizar algumas etapas adicionais antes de desinstalar o anon.

Se a extensão anon estiver instalada, siga as etapas abaixo e execute os comandos como usuário administrador antes de realizar a atualização.

  1. Remover todas as regras de mascaramento (se ativadas).

    SELECT anon.remove_masks_for_all_columns();
    
  2. Desative as funções de mascaramento (a atualização poderá falhar se alguma função estiver marcada como mascarada).

    SECURITY LABEL FOR anon ON ROLE <role_name> IS NULL;
    
  3. Elimine a extensão anon com a opção em cascata.

    DROP EXTENSION anon CASCADE;
    
  4. Se a extensão anon estiver instalada em vários bancos de dados dentro de uma instância, execute as etapas descritas para cada banco de dados.

  5. Após a conclusão da atualização, reative a extensão anon e reaplique as regras de mascaramento conforme necessário.

É altamente recomendável validar os dados antes e depois de eliminar a extensão para garantir a consistência do mascaramento antes de realizar a atualização.

PostGIS

Se você estiver usando o PostGIS,, atualize primeiro o PostGIS antes de atualizar o PostgreSQL.

SELECT postgis_extensions_upgrade();

Use a consulta a seguir para validar a atualização da extensão PostGIS.

SELECT postgis_full_version();

Logical replication slots

Elimine todos os slots de replicação lógica antes da atualização e recrie-os após a atualização. Os slots lógicos estão vinculados ao estado do servidor de origem e devem ser recriados do zero na instância atualizada.

SELECT pg_drop_replication_slot('<slot_name>');

Atualizações de versão principal no local

A atualização de versão principal no local permite que você atualize sua implantação para uma versão principal compatível, eliminando a necessidade de restaurar um backup em uma nova implantação. Essa abordagem mantém as mesmas cadeias de conexão, sem a necessidade de reconfigurar a implantação. No entanto, se a nova versão principal exigir ajustes na aplicação, estes devem ser resolvidos.

Durante a janela de atualização da versão principal no local, sua implantação passará por um breve período de inatividade. Isso é esperado, pois o processo segue a abordagem de atualização recomendada pelo fornecedor. A duração exata pode variar de acordo com o tamanho e a complexidade do esquema de sua implantação. Se o seu serviço precisar ler dados da instância atualizada durante esse período, você poderá criar uma instância em espera e atualizar os detalhes de conexão do seu aplicativo para apontar para a instância em espera. Isso garante que você tenha uma cópia atualizada do seu banco de dados antes de iniciar a atualização. A instância em espera também pode ser promovida e usada como instância primária se a atualização no local não for concluída com sucesso. Para obter mais informações, consulte Status da réplica somente leitura em upgrades de versões principais no local.

Databases for PostgreSQL oferece aos clientes flexibilidade no gerenciamento de seus próprios backups. O processo de atualização da versão principal no local não cria automaticamente um backup antes ou depois da tarefa. Se a atualização não for bem-sucedida, talvez seja necessário restaurar sua implantação a partir do backup válido mais recente em uma nova instância.

Para garantir a melhor estratégia de recuperação, recomenda-se fortemente que você faça um backup recente antes do IPU e outro backup imediatamente após a conclusão do IPU.

  • Fazer um backup antes da IPU ajuda a proteger a integridade dos dados e oferece uma fonte de restauração para o estado mais recente do seu banco de dados, caso a atualização falhe.
  • Um backup realizado imediatamente após a IPU cria o primeiro ponto de restauração para a nova linha do tempo da versão principal do PostgreSQL.
  • Se você esperar pelo próximo backup programado após uma IPU bem-sucedida, as operações PITR e de restauração para a nova versão não estarão disponíveis até que esse backup seja realizado. Ainda é possível identificar um carimbo de data/hora do PITR anterior à tentativa do IPU. Isso permite que você utilize o último backup disponível antes da IPU, em conjunto com o PITR, para restaurar a versão do PostgreSQL anterior à IPU em uma nova implantação. Esse mesmo planejamento também se aplica quando você utiliza a atualização “Backup e restauração ”. Para obter mais informações, consulte Recuperação em um ponto no tempo(PITR).

Fazer você mesmo os dois backups, em vez de esperar pela programação de backup automático, proporciona um ponto de recuperação mais previsível antes e depois da atualização.

Antes de Iniciar

Considere os seguintes aspectos antes de iniciar o procedimento de atualização.

  • Verifique se há uma atualização de versão disponível para a sua versão de implantação, consultando as informações sobre a capacidade de implantação por meio da interface do usuário, da API, da CLI ou do Terraform.

    Exemplo: consultar informações sobre atualizações de versão usando a CLI:

    ibmcloud cdb capability-show versions postgresql
    
  • Certifique-se de revisar os requisitos relacionados à pré-verificação neste tópico antes de acionar o IPU. O IPU é executado diretamente na implantação de origem e não cria uma nova instância. Para garantir a segurança do cliente, o serviço realiza verificações prévias antes do início da atualização e bloqueia a operação caso seja detectado algum risco. Em particular, verifique os seguintes itens:

    • Sua implantação tem, no máximo, 3 membros.
    • Sua implantação está em bom estado.
    • Sua implantação tem pelo menos 10% de espaço livre em disco disponível. O limite máximo padrão de uso de disco permitido para as verificações prévias da IPU é de 90%.
    • Sua implantação não está sob forte pressão de E/S. A utilização máxima permitida por padrão de E/S para a pré-verificação da IPU é de 90%.
    • O tamanho do seu esquema e o número de objetos estão dentro dos limites padrão de pré-verificação. Por padrão, nenhum esquema individual pode exceder 100 GB, e o número total de índices e sequências deve permanecer abaixo de 50.000.
    • Você concluiu todas as tarefas necessárias de limpeza das extensões e dos slots de replicação lógica antes da atualização.
  • Cada versão principal contém alguns recursos que podem não ser compatíveis com versões anteriores. Verifique as notas de lançamento do fornecedor do banco de dados para identificar quaisquer alterações que possam afetar suas aplicações.

  • O downgrade de uma implantação para uma versão anterior não é suportado.

  • A atualização de versão principal no local não pode ser cancelada após o início.

  • Se você não tiver um backup recente, considere fazer um antes de atualizar.

Opções de atualização no local compatíveis
Fonte: versão do PostgreSQL Destino de atualização no local compatível
14 15, 18
Todas as outras versões de código-fonte compatíveis 18

Além disso, observe que, após a conclusão da atualização, seu banco de dados passará a utilizar uma nova versão principal do PostgreSQL. Como o PostgreSQL armazena dados em formatos específicos de cada versão, os backups e pontos de PITR anteriores à atualização pertencem à linha do tempo da versão anterior e não podem ser restaurados na versão atualizada. Para manter os recursos de restauração completa e PITR (Recuperação em um Momento Específico) na nova versão, faça um novo backup imediatamente após a conclusão da atualização. Esse backup passa a ser a base para futuras operações de recuperação na linha do tempo da nova versão.

Se o IPU falhar, os backups válidos anteriores à atualização ainda poderão ser usados com o PITR para restaurar a versão anterior do PostgreSQL em uma nova instância.

Fazendo upgrade na IU

  1. Crie um novo Databases for PostgreSQL para testar o processo de atualização.
    Crie a implantação restaurando um backup da sua implantação existente com a mesma versão.

  2. Direcione seu aplicativo de teste para a implantação de teste.
    Atualize seu aplicativo de teste para que ele aponte para a implantação de teste. Confirme se o seu aplicativo de teste consegue se conectar com sucesso à implantação de teste e se o aplicativo funciona conforme o esperado. Realize todos os testes de desempenho e operacionais necessários no ambiente de teste.

  3. Atualize a versão principal da sua implantação de teste clicando no botão “Atualizar versão principal ” na página “Visão geral ”.
    Anote quanto tempo a atualização leva para ser concluída, para que você possa usar a configuração de validade da atualização para mantê-la dentro da sua janela de manutenção.

  4. Verifique se o seu aplicativo de teste funciona com a nova versão do banco de dados.
    Se o seu aplicativo estiver funcionando, esta etapa confirma que é seguro atualizar seu banco de dados de produção.

  5. Atualize a implantação do banco de dados de produção para a nova versão.
    Depois de confirmar que seu aplicativo funciona corretamente com a nova versão do banco de dados, você pode retornar ao console de gerenciamento e iniciar o processo de atualização da sua implantação em produção. Na seção Detalhes da implantação da página Visão geral, clique no botão Atualizar versão principal e siga as etapas.

    Quando o processo de atualização no local é iniciado, ele não pode ser interrompido nem revertido. Portanto, na improvável eventualidade de ocorrer um erro, a implantação do seu banco de dados poderá se tornar irrecuperável. Portanto, crie um backup que você possa usar para restaurar uma nova implantação.

O expiration for starting upgrade permite configurar um período de “timeout” dentro do qual a tarefa de atualização deve ser iniciada antes de ser automaticamente cancelada. Além disso, teste a atualização em um ambiente de teste antecipadamente para garantir que ela seja concluída dentro do prazo desejado. Se, por exemplo, você quiser concluir a atualização em até 1 hora e já tiver testado a atualização e sabe que ela leva 30 minutos, sua tarefa de atualização deve começar no prazo de 30 minutos após você confirmar que deseja realizar a atualização. Portanto, defina o prazo de validade para 30 minutos, para que, se não iniciar dentro desse tempo, não ultrapasse o seu prazo.

Fazendo upgrade por meio da API

Use o seguinte comando para atualizar no local:

curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "15"}'

O expiration for starting upgrade permite configurar um período de “timeout” dentro do qual a tarefa de atualização deve ser iniciada antes de ser automaticamente cancelada. Além disso, teste a atualização em um ambiente de teste antecipadamente para garantir que ela seja concluída dentro do prazo desejado. Se, por exemplo, você quiser concluir a atualização em até 1 hora e já tiver testado a atualização e sabe que ela leva 30 minutos, sua tarefa de atualização deve começar no prazo de 30 minutos após você confirmar que deseja realizar a atualização. Portanto, defina a expiração para um carimbo de data/hora de 30 minutos a partir de agora, para que, se não iniciar dentro desse tempo, não ultrapasse sua janela. A expiração deve ser entre 5 minutos (padrão) e 24 horas a partir de agora. Para obter mais informações, consulte a Cloud Databases API.

Fazendo upgrade por meio da CLI

Disponível na versão do plugin CDB >= 0.20.0.

Para visualizar a lista de transições de atualização e restauração permitidas para a implantação:

ibmcloud cdb deployment-capability-show <NAME|CRN> versions

Para atualizar o comando com os parâmetros necessários:

ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>

Para visualizar todos os detalhes dos parâmetros de comando:

ibmcloud cdb deployment-version-upgrade --help

O expiration for starting upgrade permite configurar um período de “timeout” dentro do qual a tarefa de atualização deve ser iniciada antes de ser automaticamente cancelada. Além disso, teste a atualização em um ambiente de teste antecipadamente para garantir que ela seja concluída dentro do prazo desejado. Se, por exemplo, você quiser concluir a atualização em até 1 hora e já tiver testado a atualização e sabe que ela leva 30 minutos, sua tarefa de atualização deve começar no prazo de 30 minutos após você confirmar que deseja realizar a atualização. Portanto, defina o prazo de validade para 30 minutos, para que, se não iniciar dentro desse tempo, não ultrapasse o seu prazo. O prazo de validade deve ser entre 5 minutos (padrão) e 24 horas a partir de agora. Existem duas maneiras de definir a expiração usando a CLI --expire-in ou --expire-at. Para obter mais informações, consulte a ajuda do comando.

Atualização através do Terraform

Disponível na versão do provedor Terraform >= 1.79.2.

Para atualizar, basta adicionar ou alterar o version valor na sua configuração.

Deixar de fazer um backup antes de uma atualização de versão é perigoso e pode resultar em perda de dados caso a atualização falhe em qualquer etapa: não haverá um backup recente a partir do qual se possa restaurar os dados. Portanto, considere fazer um backup recente antes de iniciar uma tarefa de atualização de versão principal no local.

A atualização pode levar mais tempo do que o limite de espera padrão. É possível definir um valor de tempo limite mais longo usando o atributo timeouts.

O Terraform tem tempos limite em vez de carimbos de data/hora de expiração. Portanto, aumente o tempo de espera, pois o valor de atualização do tempo de espera é usado como data de validade. Por exemplo, se você definir um tempo limite de 20 minutos, a expiração será definida para 20 minutos e, se a atualização não iniciar nesse período, ela expirará e a atualização não será iniciada. Observe que o prazo máximo de validade é de 24 horas; portanto, mesmo que você defina um tempo limite de 36 horas, a atualização expirará se não tiver sido iniciada nas primeiras 24 horas.

Se uma atualização estiver em andamento, observe que algumas tarefas podem estar na fila e não serão executadas até que a atualização de versão seja concluída.

Resolução de problemas

Se seus aplicativos apresentarem problemas inesperados após uma atualização bem-sucedida da versão principal no local e você precisar retornar à versão PostgreSQL anterior, entre em contato com nossa equipe de suporte para obter orientação. Evite iniciar um PITR ou restaurar um backup por conta própria, pois isso pode complicar a recuperação.

Uma atualização importante no local não será realizada até que todas as verificações prévias tenham sido aprovadas. Essas medidas de segurança existem para proteger sua implantação, pois a atualização é realizada diretamente na instância de origem. Se a atualização estiver bloqueada, verifique as seguintes áreas:

  • Número de membros: a atualização de versão principal sem interrupção suporta implantações com, no máximo, 3 membros. Se sua implantação tiver mais de 3 membros, as verificações prévias bloqueiam a atualização. Os membros não podem ser removidos por meio do dimensionamento horizontal; portanto, abra um ticket de suporte no endereço IBM Cloud para reduzir o número de membros antes de tentar novamente a atualização.
  • Estado do cluster: certifique-se de que o cluster do Patroni esteja em bom estado e que haja um estado claro de líder/réplica. As atualizações não podem prosseguir se o Patroni relatar instabilidade ou condições de failover.
  • Espaço em disco: verifique se há espaço livre suficiente disponível. O processo utiliza o modo pg_upgrade de ligação, que requer espaço livre adequado. Se o uso do disco exceder o limite configurado (padrão: 90%), libere espaço antes de tentar novamente.
  • Carga de E/S do disco: verifique a utilização atual de E/S e o número de IOPS. As atualizações são pausadas quando o sistema está sob carga pesada para evitar a degradação do desempenho ou falha na atualização.
  • Tamanho do esquema e contagem de objetos: conforme mencionado, o tamanho do esquema afeta diretamente a duração de uma atualização de versão principal no local. Certifique-se de que nenhum esquema individual exceda o tamanho máximo (padrão: 100 GB) e que o número total de objetos de índice e sequência permaneça abaixo do limite (padrão: 50.000). Esquemas grandes ou contagens de objetos excepcionalmente altas podem exigir limpeza ou otimização antes de prosseguir com a atualização. pg_upgrade realiza atualizações rápidas criando novas tabelas do sistema e simplesmente reutilizando os arquivos de dados antigos do usuário. O tempo necessário para criar essas tabelas do sistema varia de acordo com o número de objetos do banco de dados. O consumo de recursos pode ser avaliado usando a integração de monitoramento. Se nem todos os componentes do banco de dados estiverem disponíveis para atualização, a tarefa de atualização falhará. Isso pode ocorrer devido à manutenção. As tarefas que falharam devido a verificações de integridade com falha podem ser repetidas mais tarde. Se a tarefa continuar falhando, abra um ticket de suporte com IBM Cloud o suporte. Se determinadas verificações não forem relevantes para o seu ambiente e a atualização ainda estiver bloqueada, crie um ticket de suporte para obter mais assistência.

Fazendo upgrade por meio de uma réplica somente leitura

Faça o upgrade configurando uma réplica somente leitura Crie uma réplica somente leitura com a mesma versão do banco de dados da sua implantação e aguarde até que ela replique todos os seus dados. Quando sua implantação e sua réplica estiverem sincronizadas, promova e atualize a réplica somente leitura para uma implantação completa e autônoma que execute a nova versão do banco de dados. Para realizar a etapa de atualização e promoção, utilize uma solicitação POST para o /deployments/{id}/remotes/promotion ponto de extremidade, indicando a versão para a qual você deseja atualizar no corpo da solicitação.

Esta solicitação é semelhante a:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false
    }
}' \

skip_initial_backup é opcional. Se configurado como true, a nova implementação não fará um backup inicial quando a promoção for concluída. Sua nova implementação é disponibilizada em menos tempo, mas o backup dela não ocorre até a execução do próximo backup automático ou da realização de um sob demanda.

Simulando a promoção e o upgrade

Para avaliar os efeitos das atualizações de versão principais, execute um teste simulado. Uma simulação simula a promoção e o upgrade, com os resultados impressos nos logs do banco de dados. Acesse e visualize os registros do seu banco de dados por meio da integração de análise de registro. Isso garante que a versão que você está executando no momento, juntamente com suas extensões, possa ser atualizada com sucesso para a versão desejada.

A simulação deve ser executada com skip_initial_backup configurado como false e version definida.

O comando é semelhante a:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false,
        "dry_run": true
    }
}' \

Backup e restauração da atualização

É possível fazer upgrade de sua versão do banco de dados restaurando um backup de seus dados em uma nova implementação que esteja executando a nova versão do banco de dados

Fazendo upgrade na IU

Faça upgrade para uma nova versão ao restaurar um backup do menu Backups de seu Painel de implementação. Clique em Restore em um backup para acessar a página de provisionamento em uma nova guia, onde você pode alterar algumas opções para a nova implantação. Uma das opções é a versão do banco de dados, que é preenchida automaticamente com as versões disponíveis para você atualizar. Selecione uma versão e clique em “Criar” para iniciar o processo de provisionamento e restauração.

Fazendo upgrade por meio da CLI

Para atualizar e restaurar a partir de um backup por meio da CLI do IBM Cloud, use o comando de provisionamento do controlador de recursos.

ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION> <SERVICE-ENDPOINTS>

Os parâmetros service-name, service-id, service-plan-id, region e service-endpoints são todos obrigatórios. Você também fornece o -p com a versão e os parâmetros de ID de backup em um objeto JSON. A nova implementação é dimensionada automaticamente com o mesmo disco e a memória que a implementação de origem no momento do backup.

Este comando é semelhante a:

ibmcloud resource service-instance-create example-upgrade databases-for-postgresql standard us-south \
-p \ '{
  "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
  "version":14
}'--service-endpoints "public"

Fazendo upgrade por meio da API

Conclua as etapas necessárias para usar a API do controlador de recursos antes de usá-la para fazer upgrade de um backup. Em seguida, envie à API uma solicitação do tipo “ POST ”. Os parâmetros name, target, resource_group e resource_plan_id são todos necessários. Você também fornece a versão e o ID de backup. A nova implementação tem a mesma alocação de memória e de disco que a implementação de origem no momento do backup.

Este comando é semelhante a:

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "bluemix-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-postgresql-standard",
    "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
    "version":14
  }'

Atualização forçada

Após a data de fim de vida útil, todas as Databases for PostgreSQL implantações ativas na versão obsoleta serão atualizadas compulsoriamente para a próxima versão suportada. Por exemplo, PostgreSQL a versão 13 (obsoleta) é atualizada para a versão 14.

Faça o upgrade antes da data de fim de vida útil para evitar os seguintes riscos:

  • Não são fornecidos SLAs para esse tipo de upgrade forçado.
  • Você pode perder alguns dados.
  • Sua aplicação poderá ficar fora do ar por um período prolongado.
  • Seu aplicativo pode deixar de funcionar caso seja incompatível com a nova versão.
  • Não é possível controlar o momento em que esse upgrade ocorrerá em sua implementação.
  • Não há processo de reversão para essa atualização forçada.

Para saber as datas de fim de vida útil, consulte a página de política de versão.

Problemas com privilégios de função durante atualizações de versão

A partir do PostgreSQL e 16, a aplicação de privilégios de função tornou-se mais rigorosa. Trata-se de uma mudança arquitetônica no upstream do PostgreSQL, e não de uma mudança de comportamento específica do {{site.data.keyword.ibm}}. Em versões anteriores, as funções com o atributo CREATEROLE podiam gerenciar outras funções de forma mais abrangente. No PostgreSQL e 16 e versões posteriores, uma função deve ter a permissão de revogação ( ADMIN OPTION ) sobre outra função para poder concedê-la ou revogá-la. Para obter mais informações, consulte as notas de lançamento do PostgreSQL 16, a seção “Atributos de Função ” e a página GRANT sobre funções.

Se você estiver atualizando d PostgreSQL e 15 ou anterior para o PostgreSQL e 16 ou posterior, verifique as atribuições de funções antes da implementação do IPU. Caso seja necessário continuar a gerenciamento de funções após a atualização, certifique-se de que as funções necessárias tenham sido atribuídas com o direito de acesso WITH ADMIN OPTION antes de iniciar a atualização.

Se você encontrar erros relacionados a privilégios após a atualização, por exemplo:

ERROR: only roles with the ADMIN OPTION on role "some_role" may grant this role
DETAIL: role "admin" is not permitted to grant role "some_role"

Use a função auxiliar integrada grant_admin_option_to_roles para restaurar ADMIN OPTION para funções específicas:

  • Aplica-se apenas a bancos de dados atualizados do PostgreSQL v15 e versões anteriores para o PostgreSQL 16 e versões posteriores (caso você esteja encontrando o erro descrito anteriormente).
  • Aceita uma lista arbitrária de funções às quais aplicar a correção.
  • Só pode ser executado pelo usuário admin.
  • É seguro executar várias vezes (idempotente).

Amostra de uso:

SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');

Esta função concede as funções especificadas (role1, role2, role3) ao usuário admin com ADMIN OPTION, permitindo que o usuário admin gerencie (conceda, revogue, altere ou elimine) essas funções em instâncias atualizadas.

Log de mudanças para versões principais do PostgreSQL