Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Introdução ao relatório de verificação para upgrade de versão principal de uma instância ApsaraDB RDS for PostgreSQL

Última atualização: Jun 26, 2026

Antes de iniciar o upgrade de versão principal do mecanismo, o ApsaraDB RDS for PostgreSQL executa uma verificação e gera um relatório. O resultado da verificação determina se o upgrade pode prosseguir:

  • Erros bloqueiam o upgrade — resolva todos os erros antes de executar o upgrade novamente.

  • Avisos não bloqueiam o upgrade, mas podem estender o tempo de somente leitura ou causar falha no upgrade se os recursos forem insuficientes.

Para visualizar o relatório de verificação, acesse a página Major Version Upgrade no console, clique na aba Upgrade Check e depois em View Information para o relatório desejado. O relatório está disponível em chinês e inglês.

A tabela a seguir resume todos os módulos de verificação e seu impacto na elegibilidade para upgrade.

Módulo de verificaçãoEscopoImpacto quando acionado
AvisosTodos os modos de upgradeNão bloqueia; pode estender o tempo de somente leitura ou causar falha por falta de recursos
ErrosTodos os modos de upgradeBloqueia o upgrade; deve ser resolvido antes de tentar novamente
Log de erros pg_upgradeTodos os modos de upgradeIncluído quando erros são detectados; lista extensões e palavras-chave incompatíveis
Incompatibilidades de replicação lógicaSomente modo zero-downtimeBloqueia o modo zero-downtime se houver objetos incompatíveis

Tópicos relacionados

Avisos

Os avisos indicam restrições de recursos ou condições que podem estender o tempo de somente leitura ou causar falha no upgrade. O upgrade não é bloqueado, mas resolva os avisos antes de iniciar.

Conteúdo verificado

A quantidade de objetos no banco de dados afeta o tempo em que a instância permanece em modo somente leitura durante o upgrade e determina a memória e o armazenamento necessários. Quando a verificação detecta uma possível insuficiência de recursos, ela exibe a Recommended memory capacity, a Recommended minimum memory capacity e o Recommended disk size na aba Upgrade Check.

Para upgrades no modo zero-downtime, a verificação também contabiliza sequências, pois a replicação lógica não sincroniza sequências automaticamente — elas exigem uma breve troca ao final do upgrade.

Recommended memory capacity Quando a memória da instância atinge ou supera esse valor, o sistema faz upgrade de todos os bancos de dados simultaneamente, minimizando o tempo de somente leitura.

Recommended minimum memory capacity Quando a memória da instância atinge ou supera esse valor, o upgrade não falhará por falta de memória. No entanto, o sistema faz upgrade dos bancos de dados sequencialmente, o que estende o tempo de somente leitura.

Recommended disk size Durante o upgrade, o sistema duplica temporariamente todas as definições de objetos, o que praticamente dobra o consumo de inodes. Se o armazenamento disponível ficar abaixo desse valor, o upgrade pode falhar.

Sequence table count check (somente modo zero-downtime) A replicação lógica não sincroniza sequências. Quanto mais sequências a instância tiver, mais tempo levará a troca ao final de um upgrade no modo zero-downtime.

Avisos e soluções

Aviso de disco

Formato do aviso: Total disk space: {*} GB; Used disk: {*} GB; Used inodes: {*}; bytes-per-nodes: {*}; Minimum disk space required for upgrade: {*} GB

Causa: A instância possui objetos em excesso; o armazenamento atual é insuficiente para o upgrade.

Solução:

  • Blue-green deployment mode: Defina a capacidade de armazenamento da nova instância com um valor maior ou igual ao espaço mínimo em disco necessário para o upgrade.

  • Local upgrade mode: Expanda a capacidade de armazenamento da instância para um valor maior ou igual ao espaço mínimo em disco necessário para o upgrade antes de iniciar o upgrade. Para mais informações, consulte Alterar a configuração.

Aviso de memória

Formato do aviso: Current memory: {*} GB; Recommended memory: {*} GB; Minimum memory: {*} GB

Causa: A instância possui objetos em excesso; a memória atual é insuficiente para minimizar o tempo de somente leitura durante o upgrade.

Solução:

  • Blue-green deployment mode: Defina as especificações da nova instância de modo que a memória atinja ou supere o requisito mínimo de memória.

  • Local upgrade mode: Faça upgrade das especificações da instância se a memória atual for inferior à capacidade de memória recomendada. Para mais informações, consulte Alterar a configuração.

Aviso de assinatura

Formato do aviso: The instance has replication slot subscribers. To prevent subscription data inconsistency, see the Alibaba Cloud documentation

Causa: A instância possui assinantes de slot de replicação. Execute a seguinte consulta para verificar:

SELECT * FROM pg_subscription;

Solução: Siga as etapas no tópico Fazer upgrade da versão principal do banco de dados para lidar com assinantes de slot de replicação.

Aviso de sequência (somente modo zero-downtime)

Formato do aviso: Total Sequence tables: {0}. Too many Sequence tables will extend the switchover time for logical replication major version upgrade.

Causa: A instância contém sequências. Execute a seguinte consulta para listá-las:

SELECT * FROM pg_sequences;

Solução: Se a instância tiver um grande número de sequências, clone a instância e execute um upgrade de teste para medir o tempo real de troca antes de fazer upgrade da produção.

Erros

Os erros bloqueiam o upgrade. Resolva todos os erros antes de executar a verificação de upgrade novamente.

Conteúdo verificado

O sistema verifica as seguintes condições:

  • Contas de superusuário desnecessárias ou métodos de criptografia inválidos configurados para contas padrão

  • Extensões ou palavras-chave incompatíveis com a versão principal do mecanismo de destino (registradas no log de erros pg_upgrade)

  • A extensão pgcrypto instalada no schema pg_catalog

  • (Somente modo zero-downtime) Versão secundária do mecanismo anterior a 20250228

  • (Somente modo zero-downtime) Objetos de banco de dados incompatíveis com replicação lógica

Erros e soluções

Erro de conta

Formato do erro: Invalid superuser account: {*}; Invalid account: {*}; Please see the Alibaba Cloud documentation

Causa: A instância possui contas de superusuário redundantes ou contas padrão com configurações de criptografia inválidas.

Solução:

  • Contas de superusuário redundantes: Abra um ticket para solicitar a exclusão.

  • Contas padrão inválidas: Redefina as senhas das contas afetadas.

Erro de pré-verificação

Formato do erro: pg_upgrade pre-check task failed, need to check [pg_upgrade error log] and [pg_upgrade-related files and errors]

Causa: A pré-verificação do pg_upgrade falhou.

Solução: Revise a seção do log de erros pg_upgrade no relatório de verificação para identificar e resolver o problema específico.

Erro da extensão pgcrypto

Formato do erro: The pg_crypto extension is installed in schema: pg_catalog in database: {*}, please see the Alibaba Cloud documentation

Causa: A extensão pgcrypto cria funções no pg_catalog que existem apenas em versões posteriores do PostgreSQL. Isso faz com que o upgrade da versão principal do mecanismo falhe.

Solução: Em cada banco de dados afetado, exclua a extensão pgcrypto e recrie-a em um schema diferente de pg_catalog.

Erro de versão secundária (somente modo zero-downtime)

Formato do erro: Zero-downtime major version upgrade requires minimum minor version 20250228

Causa: A versão secundária do mecanismo da instância é anterior a 20250228.

Solução: Faça upgrade da versão secundária do mecanismo para 20250228 ou posterior.

Log de erros pg_upgrade

Conteúdo verificado

O log de erros pg_upgrade registra extensões e palavras-chave SQL incompatíveis com a versão principal do mecanismo de destino.

Erros comuns

loadable_libraries.txt: extensões incompatíveis

O arquivo loadable_libraries.txt lista os arquivos de biblioteca que não podem ser carregados pela versão PostgreSQL de destino. Cada biblioteca normalmente corresponde a uma extensão.

Causa: Uma ou mais extensões instaladas são incompatíveis com a versão principal do mecanismo de destino.

Solução: Verifique as extensões listadas em loadable_libraries.txt. Para cada extensão, confirme se sua aplicação depende dela e decida se deve excluí-la antes do upgrade. Para a lista de extensões suportadas em cada versão, consulte Extensões suportadas.

As seções a seguir descrevem as extensões incompatíveis mais comuns.

pgrouting

Causa: A extensão pgrouting é incompatível com a versão principal do mecanismo de destino.

Solução: Exclua a extensão antes do upgrade se sua aplicação não a utilizar mais. Confirme que a instância funciona corretamente sem pgrouting antes de continuar.

Importante

Se pgrouting (ou PostGIS, ou postgis_topology) estiver instalado, os seguintes limites de upgrade de versão se aplicam:

  • O PostgreSQL 9.4 só pode ser atualizado para o PostgreSQL 10 ou PostgreSQL 11.

  • O PostgreSQL 10 só pode ser atualizado para o PostgreSQL 11.

  • O PostgreSQL 11, 12 ou 13 não pode ser atualizado.

jsonbx

Causa: A extensão jsonbx foi introduzida no PostgreSQL 9.4 para fornecer operações de tipo de dados JSON não disponíveis nessa versão. O PostgreSQL 10 e versões posteriores suportam essas operações nativamente, portanto a extensão não é mais necessária.

Solução: Revise quais funções jsonbx sua aplicação usa e verifique como essas funções se comportam na versão de destino. Se as diferenças de comportamento forem aceitáveis, exclua a extensão antes do upgrade.

A tabela a seguir mostra como o comportamento das funções jsonbx difere entre o PostgreSQL 9.4 e o PostgreSQL 10+:

Uso da funçãoResultado no PostgreSQL 9.4Resultado no PostgreSQL 10+
select '{"a":1, "b":2, "c":3}'::jsonb - 2;{"a": 1, "b": 2}ERROR: cannot delete from object using integer index
select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]);{"a": 1, "c": 3}ERROR: function jsonb_delete(jsonb, text[]) does not exist
select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[];{"a": {"d": 2}, "b": 3}{"b": 3}

PostGIS and postgis_topology

Causa: A versão do PostGIS instalada é incompatível com as dependências de biblioteca da versão principal do mecanismo de destino.

Importante

O comportamento de parsing do PostGIS para o formato well-known text (WKT) difere entre as versões principais. Antes de fazer upgrade da extensão em produção, clone a instância e teste a compatibilidade na instância clonada. Para as etapas de clonagem, consulte Fazer backup dos dados do PostgreSQL e Restaurar dados do PostgreSQL.

Solução:

  1. Faça upgrade da versão secundária do mecanismo.

  2. Atualize a extensão PostGIS. Para mais informações, consulte PostGIS extension upgrade.

  3. Verifique se a versão do PostGIS é no mínimo 3.3.2:

    \dx
  4. Execute a verificação de upgrade novamente.

Importante

Se PostGIS, postgis_topology ou pgrouting estiver instalado, aplicam-se limites de upgrade de versão. Consulte a seção pgrouting para detalhes.

tables_with_oids.txt: tabelas com OIDs

O arquivo tables_with_oids.txt lista as tabelas criadas com a declaração WITH OIDS. O PostgreSQL 12 e versões posteriores não suportam WITH OIDS.

Causa: Uma ou mais tabelas usam a declaração WITH OIDS, que não é suportada na versão de destino.

Solução:

  • Opção 1 (recomendada): Faça upgrade para o PostgreSQL 11, que ainda suporta WITH OIDS.

  • Opção 2: Revise as tabelas listadas em tables_with_oids.txt e confirme que sua aplicação não depende de valores OID. Em seguida, execute o seguinte comando para cada tabela afetada:

    ALTER TABLE {table_name} SET WITHOUT OIDS;

Incompatibilidades de replicação lógica (somente modo zero-downtime)

Os upgrades de versão principal do mecanismo no modo zero-downtime usam replicação lógica para sincronizar dados da instância de origem para a instância de destino. Determinados objetos de banco de dados não são suportados pela replicação lógica. Se a verificação detectar algum dos itens a seguir, a instância não poderá usar o modo zero-downtime.

Conteúdo verificado

O sistema verifica:

  • Tabelas estrangeiras

  • Tabelas sem chave primária ou chave única

  • Visualizações materializadas

  • Objetos grandes

  • Extensões proibidas para uso com replicação lógica

  • Valores de parâmetros que não atendem aos requisitos de replicação lógica

Incompatibilidades e soluções

Tabelas estrangeiras

Formato do erro: Foreign tables in database: {0}. Total databases: {1}

Causa: A instância contém tabelas estrangeiras, que a replicação lógica não consegue replicar.

Solução: Exclua todas as tabelas estrangeiras.

  1. Em cada banco de dados, identifique as tabelas estrangeiras:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('f')
    GROUP BY relkind;
  2. Exclua as tabelas estrangeiras:

    DROP FOREIGN TABLE [ IF EXISTS ] name [ CASCADE | RESTRICT ];

Para mais informações, consulte a documentação do PostgreSQL sobre DROP FOREIGN TABLE.

Tabelas sem chave primária ou chave única

Formato do erro: Tables without primary key or unique key in database: {0}. Total databases: {1}

Causa: A replicação lógica exige que cada tabela tenha uma chave primária, uma chave única ou REPLICA IDENTITY FULL para identificar linhas durante a replicação.

Solução: Adicione uma chave primária ou chave única a cada tabela afetada, ou defina REPLICA IDENTITY FULL.

  1. Em cada banco de dados, identifique as tabelas sem chave primária ou chave única:

    SELECT COUNT(*) AS count
    FROM information_schema.tables t
    LEFT JOIN information_schema.table_constraints tc
        ON t.table_name = tc.table_name
        AND t.table_schema = tc.table_schema
        AND (tc.constraint_type = 'PRIMARY KEY' OR tc.constraint_type = 'UNIQUE')
    JOIN pg_class c
        ON t.table_name = c.relname
    JOIN pg_namespace ns
        ON c.relnamespace = ns.oid
        AND ns.nspname = t.table_schema
    WHERE t.table_type = 'BASE TABLE'
        AND tc.constraint_type IS NULL
        AND t.table_schema NOT IN ('pg_catalog', 'information_schema')
        AND c.relreplident != 'f';
  2. Defina REPLICA IDENTITY FULL na tabela (se não for viável adicionar uma chave):

    ALTER TABLE name REPLICA IDENTITY FULL;
  3. Ou adicione uma chave primária ou chave única:

    -- Primary key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
    
    -- Unique key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name UNIQUE (column_name);

Para mais informações, consulte a documentação do PostgreSQL sobre restrições de unicidade.

Visualizações materializadas

Formato do erro: Materialized views in database: {0}. Total databases: {1}

Causa: A replicação lógica não consegue replicar visualizações materializadas.

Solução: Exclua todas as visualizações materializadas.

  1. Em cada banco de dados, identifique as visualizações materializadas:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('m')
    GROUP BY relkind;
  2. Exclua as visualizações materializadas:

    DROP MATERIALIZED VIEW IF EXISTS name;

Objetos grandes

Formato do erro: Large objects in database: {0}. Total databases: {1}

Causa: A replicação lógica não consegue replicar objetos grandes armazenados no pg_largeobject.

Solução: Exclua os objetos grandes.

Aviso

A exclusão de objetos grandes é irreversível. Antes de executar o comando de exclusão, verifique se nenhuma aplicação faz referência a esses objetos. Execute esta operação durante uma janela de manutenção e teste em uma instância não produtiva primeiro.

  1. Em cada banco de dados, contabilize os objetos grandes:

    SELECT COUNT(*) AS count
    FROM pg_largeobject_metadata;
  2. Exclua cada objeto grande:

    SELECT lo_unlink(largeobject_oid);

Extensões proibidas

Formato do erro: Logical replication prohibited extensions in database: {0}. Total databases: {1}

Causa: As seguintes extensões são incompatíveis com a replicação lógica e não podem estar presentes durante um upgrade no modo zero-downtime: pg_partman, pg_cron, pg_active e pglogical.

Solução: Exclua temporariamente as extensões incompatíveis.

  1. Em cada banco de dados, verifique se alguma extensão proibida está instalada:

    SELECT COUNT(*) AS count
    FROM pg_extension
    WHERE extname IN ('pg_partman', 'pg_cron', 'pg_active', 'pglogical');
  2. Exclua cada extensão proibida:

    DROP EXTENSION extension_name;

Requisitos de parâmetros não atendidos

Formato do erro: Logical replication requires wal_level to be logical, max_wal_sender and max_replication_slots to be at least {0}, instance wal_level is: {1}, max_wal_sender is: {2}, max_replication_slots is: {3}

Causa: Um ou mais dos seguintes parâmetros não atendem aos requisitos de replicação lógica: wal_level, max_wal_sender ou max_replication_slots.

Solução: Atualize os valores dos parâmetros. Algumas alterações exigem reinicialização para entrar em vigor. Para mais informações, consulte Definir os parâmetros de uma instância.