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ção | Escopo | Impacto quando acionado |
|---|---|---|
| Avisos | Todos os modos de upgrade | Não bloqueia; pode estender o tempo de somente leitura ou causar falha por falta de recursos |
| Erros | Todos os modos de upgrade | Bloqueia o upgrade; deve ser resolvido antes de tentar novamente |
| Log de erros pg_upgrade | Todos os modos de upgrade | Incluído quando erros são detectados; lista extensões e palavras-chave incompatíveis |
| Incompatibilidades de replicação lógica | Somente modo zero-downtime | Bloqueia o modo zero-downtime se houver objetos incompatíveis |
Tópicos relacionados
Fazer upgrade da versão principal do mecanismo no modo zero-downtime
Fazer upgrade da versão principal do mecanismo no modo blue-green deployment
Fazer upgrade da versão principal do mecanismo no modo local upgrade
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.
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.txte 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.
Em cada banco de dados, identifique as tabelas estrangeiras:
SELECT COUNT(*) AS count, relkind FROM pg_class WHERE relkind IN ('f') GROUP BY relkind;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.
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';Defina
REPLICA IDENTITY FULLna tabela (se não for viável adicionar uma chave):ALTER TABLE name REPLICA IDENTITY FULL;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.
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;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.
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.
Em cada banco de dados, contabilize os objetos grandes:
SELECT COUNT(*) AS count FROM pg_largeobject_metadata;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.
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');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.