Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Introdução aos relatórios de avaliação de migração para a nuvem

Última atualização: Jun 26, 2026

Se o relatório de avaliação de migração para a nuvem exibir o status failure, clique em View report na coluna operation para identificar as verificações com falha. Cada verificação abrange um requisito específico de compatibilidade ou configuração.

Níveis de severidade do relatório:

Nível

Significado

Ação necessária

Error

Problema bloqueante que causa falha na migração

Corrija todos os erros antes de tentar a migração novamente

Warning

Risco potencial que pode causar comportamento inesperado após a migração

Revise e resolva antes de migrar

A avaliação executa as seguintes verificações:

Para obter instruções sobre como executar uma migração para a nuvem, consulte Usar o recurso de migração para a nuvem em uma instância do ApsaraDB RDS for PostgreSQL .

Verifique se o RDS está vazio

Check item: Check rds databases

Mensagem de erro:

error:postgres not empty, check if any table exists

Impacto: A migração grava dados na instância RDS de destino do zero. Se o destino já contiver bancos de dados ou tabelas, a migração falhará ou produzirá dados duplicados.

Solution:

Exclua todos os bancos de dados da instância do ApsaraDB RDS for PostgreSQL, exceto template0, template1 e postgres. Em seguida, no banco de dados postgres, exclua todas as tabelas, exceto ha_health_check.

Verifique conectividade da origem

Esta verificação valida o acesso de rede e a autenticação entre a instância PostgreSQL autogerenciada de origem e a instância ApsaraDB RDS for PostgreSQL de destino. Ela executa seis subverificações.

Verifique conectividade de IP

Mensagem de erro:

error:XX.XX.XX.XX is unapproachable

Impacto: O serviço de migração não consegue alcançar o host de origem. O backup completo e a replicação falharão imediatamente.

Solution:

  • Se a instância PostgreSQL autogerenciada estiver em execução em uma instância do Elastic Compute Service (ECS), insira o private IP address da instância ECS como host de origem. Para localizar o endereço IP privado, consulte Visualizar endereços IP.

  • Caso a instância PostgreSQL autogerenciada esteja em um data center, insira os endereços IP dos servidores DNS no host de origem.

Verifique conectividade da porta

Mensagem de erro:

error:5432 is unapproachable

Impacto: O serviço de migração não consegue estabelecer uma conexão TCP com o PostgreSQL. Não é possível iniciar a migração.

Solution:

Resolva uma ou ambas as causas a seguir:

Verifique conectividade do banco de dados

Mensagem de erro:

error:cannot connect to source database by migratetest:123456

Impacto: O serviço de migração não consegue autenticar no banco de dados de origem. Não é possível iniciar a migração.

Solution:

Resolva uma ou ambas as causas a seguir:

  • Senha incorreta: Valide as credenciais conectando-se manualmente. Para redefinir a senha, execute:

    ALTER USER migratetest WITH PASSWORD '123456';
  • pg_hba.conf não configurado para permitir conexões da VPC do RDS: Adicione a seguinte linha ao pg_hba.conf:

    host  all  migratetest  <CIDR block of the VPC to which the ApsaraDB RDS for PostgreSQL instance belongs>  md5

    Para obter detalhes sobre como atualize o pg_hba.conf, consulte Atualize o arquivo pg_hba.conf.

Verifique privilégio de replicação da conta

Mensagem de erro:

error:migratetest has no replication privilege

Impacto: O serviço de migração usa replicação streaming para sincronizar alterações contínuas. Sem o privilégio REPLICATION, a replicação incremental falhará após a conclusão do backup completo.

Solution:

Resolva uma ou ambas as causas a seguir:

  • Conta sem o privilégio REPLICATION: Conceda o privilégio:

    ALTER ROLE migratetest REPLICATION;
  • pg_hba.conf não permite conexões de replicação da VPC do RDS: Adicione a seguinte linha ao pg_hba.conf:

    host  replication  migratetest  <CIDR block of the VPC to which the ApsaraDB RDS for PostgreSQL instance belongs>  md5

    Para obter detalhes sobre como atualize o pg_hba.conf, consulte Atualize o arquivo pg_hba.conf.

Verifique privilégio createrole da conta

Mensagem de erro:

error:migratetest has no createrole privilege

Impacto: O serviço de migração precisa recriar funções na instância de destino. Sem o privilégio CREATEROLE, a migração de funções falhará.

Solution:

Conceda o privilégio CREATEROLE:

ALTER ROLE migratetest CREATEROLE;

Verifique privilégio de monitoramento da conta

Mensagem de erro:

error:migratetest should be a member of pg_monitor to monitor replication status

Impacto: O serviço de migração consulta pg_stat_replication e pg_stat_wal_receiver para acompanhar o progresso da replicação. Sem a função pg_monitor, o serviço não confirme se a replicação mantém o ritmo adequado, o que pode interromper a migração ou causar falhas silenciosas.

Solution:

Conceda a função pg_monitor:

GRANT pg_monitor TO migratetest;

Verifique versão da origem

Check item: Check major version consistent

Mensagem de erro:

error:version mismatch, source version:10, current version:13.0

Impacto: Não há suporte para migração entre versões principais diferentes. A migração falhará se a origem e o destino executarem versões principais distintas do mecanismo.

Solution:

Adquira uma instância do ApsaraDB RDS for PostgreSQL que execute a mesma versão principal do mecanismo da instância PostgreSQL autogerenciada.

Verifique versão do glibc da origem

Check item: Check source glibc version compatible

Mensagem de aviso:

warning:source glibc version is not compatible with rds pg

Impacto: A versão da GNU C Library (glibc) afeta a classificação de caracteres na codificação UTF-8 pelo PostgreSQL. A versão 2.28 introduziu ordens de agrupamento diferentes. Se a origem e o destino usarem versões diferentes do glibc, índices de texto com agrupamentos não-C poderão retornar resultados em ordem inesperada após a migração, comprometendo a precisão das consultas.

Solution:

Execute as consultas de diagnóstico a seguir para avaliar o risco real aos seus dados.

  1. Verifique se a ordem de agrupamento atual afeta seus dados:

    • Se o resultado for true, a ordem de agrupamento não é afetada. Nenhuma ação adicional é necessária.

    • Se o resultado for false, continue para a etapa 2.

    BEGIN;
    CREATE TEMP TABLE testcollation(id varchar(20) COLLATE "en_US.utf8") ON COMMIT DROP;
    INSERT INTO testcollation VALUES('-1'),('1');
    SELECT id='1' FROM testcollation ORDER BY id LIMIT 1;
    ROLLBACK;
  2. Verifique se algum banco de dados usa agrupamentos não-C:

    • Se nenhuma linha for retornada, a migração não apresenta riscos de agrupamento. Nenhuma ação adicional é necessária.

    • Se linhas forem retornadas, continue para a etapa 3.

    SELECT datname, datcollate FROM pg_database WHERE datcollate NOT IN ('C', 'POSIX');
  3. Identifique todos os índices com agrupamentos não-C em todos os bancos de dados:

    • Se nenhuma linha for retornada, a migração não apresenta riscos de agrupamento.

    • Se linhas forem retornadas, os índices afetados podem produzir resultados de classificação incorretos após a migração. Avalie se esses índices impactam as consultas da aplicação antes de prosseguir.

    WITH result AS (
        WITH defcoll AS (
            SELECT datcollate AS coll
            FROM pg_database
            WHERE datname = current_database()
        )
        SELECT indrelid::regclass::text relname, indexrelid::regclass::text indexname,
            CASE WHEN c.collname = 'default'
                THEN defcoll.coll
                ELSE c.collname
            END AS collation
        FROM (SELECT indexrelid, indrelid, indcollation[i] coll FROM pg_index, generate_subscripts(indcollation, 1) g(i)) s
            JOIN pg_collation c ON coll=c.oid
            CROSS JOIN defcoll
        WHERE collprovider IN ('d', 'c') AND collname NOT IN ('C', 'POSIX')
    )
    SELECT result.relname, result.indexname, result.collation FROM result WHERE result.collation NOT IN ('C', 'POSIX');

Verifique tamanho do disco

Check item: Check disk size enough

Mensagem de erro:

error:source_db_size > disk_size * 0.95

Impacto: Os dados de origem devem caber em até 95% do armazenamento disponível no destino. Se o armazenamento de destino for insuficiente, a transferência do backup completo falhará durante o processo, deixando o destino em estado incompleto.

Solution:

  1. Verifique o tamanho total dos dados na instância de origem (resultado em MB):

    SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
  2. Calcule o armazenamento necessário. O armazenamento de destino deve ser de, no mínimo, 110% do tamanho dos dados de origem. Por exemplo, se a origem usar 100 GB, o destino deverá ter pelo menos 110 GB de armazenamento disponível.

  3. Expanda o armazenamento da instância do ApsaraDB RDS for PostgreSQL. Para obter instruções, consulte Alterar especificações da instância.

Verifique wal keep size

Check item: Check wal keep size large enough

Mensagem de aviso:

warning:wal_keep_size X MB is too small. Try to set wal_keep_segments or wal_keep_size large enough ensure pg_basebackup success

Impacto: Durante a migração, o pg_basebackup transfere um snapshot completo do banco de dados de origem. Se a origem gerar WAL mais rápido do que o pg_basebackup consegue copiar os dados e a origem não retiver segmentos WAL suficientes, o pg_basebackup falhará com o erro "WAL segment has been removed".

Solution:

Aumente a configuração de retenção de WAL na instância do ApsaraDB RDS for PostgreSQL para reduzir o risco de falha do pg_basebackup:

  • PostgreSQL 13 e posterior: Aumente o valor de wal_keep_size.

  • Anterior ao PostgreSQL 13: Aumente o valor de wal_keep_segments.

Para versões do PostgreSQL anteriores à 13, a relação entre os dois parâmetros é: wal_keep_size = wal_keep_segments × wal_segment_size .

Verifique parâmetros de especificação

Check item: Check if spec params too large

Mensagens de erro:

error:max_connections too large, value=XXX
error:max_prepared_transactions too large, value=XXX

Impacto: Se max_connections ou max_prepared_transactions na instância de origem for superior a 100 vezes os valores correspondentes na instância RDS de destino, a instância de destino poderá falhar ao iniciar quando o serviço de migração estabelecer o link de replicação.

Solution:

Reduza max_connections e max_prepared_transactions na instância de origem para que fiquem dentro do limite de 100 vezes os valores de destino.

Alterações em max_connections e max_prepared_transactions exigem a reinicialização da instância PostgreSQL de origem para entrar em vigor.

Verifique usuário do RDS

Check item: Check if rds system user is occupied

Mensagem de aviso:

warning:Check if rds system user is occupied ...XXX will be reused in rds

Impacto: O ApsaraDB RDS for PostgreSQL reserva as contas aurora, replicator e pgxxx para uso interno do sistema. Se essas contas existirem na instância de origem, a migração poderá sobrescrever suas configurações no destino, interrompendo as funções de gerenciamento.

Solution:

Certifique-se de não utilizar as contas aurora, replicator e pgxxx na instância PostgreSQL autogerenciada.

Verifique extensões

Esta verificação valida a compatibilidade de extensões entre a instância PostgreSQL autogerenciada de origem e a instância ApsaraDB RDS for PostgreSQL de destino. Ela executa três subverificações.

Verifique extensões suportadas na origem

Mensagem de erro:

error:Check source supported extensions XXX not supported

Impacto: Extensões presentes na origem, mas não suportadas pelo ApsaraDB RDS for PostgreSQL, não podem ser criadas no destino. Se a migração prosseguir, objetos dependentes dessas extensões deixarão de funcionar.

Solution:

Remova as extensões não suportadas da instância de origem:

DROP EXTENSION <extension_name>;

Verifique extensões de origem com versão superior

Mensagem de erro:

error:Check source extensions with higher version XXX

Impacto: O ApsaraDB RDS for PostgreSQL não carrega extensões cuja versão seja superior à versão nativa. A extensão falhará ao inicializar no destino, interrompendo quaisquer objetos dependentes.

Solution:

Reinstale as extensões afetadas na instância de origem na mesma versão do destino:

DROP EXTENSION <extension_name>;
CREATE EXTENSION <extension_name> VERSION '<destination_version>';

Verifique extensões de origem com versão inferior

Mensagem de aviso:

warning:Check source extensions with lower version XXX

Impacto: As extensões na instância de origem estão em uma versão mais antiga do que as do destino. Esse comportamento é esperado e seguro: as extensões são atualizadas automaticamente para a versão de destino após a migração.

Solution:

Nenhuma ação é necessária.

Verifique catálogos de sistema do Postgres

Esta verificação inspeciona os catálogos de sistema da instância de origem em busca de configurações incompatíveis com o ApsaraDB RDS for PostgreSQL. Ela executa quatro subverificações.

Linguagens procedurais não suportadas

Mensagem de erro:

error: disallowed language exist in databases [xxx, xxx], the languages allowed are [c, internal, sql, plpgsql, pltcl, plperl].

Impacto: O ApsaraDB RDS for PostgreSQL suporta apenas C, internal, SQL, PL/pgSQL, PL/Tcl e PL/Perl. Funções escritas em outras linguagens não podem ser migradas e falharão no destino.

Solution:

Remova as linguagens não suportadas dos bancos de dados afetados na instância de origem:

DROP LANGUAGE <language_name>;

Objetos grandes

Mensagem de erro:

error: large object exist in databases [xxx, xxx].

Impacto: O ApsaraDB RDS for PostgreSQL não oferece suporte a objetos grandes do PostgreSQL. Objetos grandes na instância de origem não podem ser migrados e estarão ausentes no destino.

Solution:

Exclua todos os objetos grandes dos bancos de dados afetados na instância de origem antes de migrar.

Configurações padrão de ACL

Mensagem de erro:

error: default acl settings exist in databases [xxx, xxx].

Impacto: A instrução ALTER DEFAULT PRIVILEGES preenche pg_catalog.pg_default_acl, que armazena concessões de permissão padrão para objetos futuros. Essas configurações não podem ser migradas diretamente e causam falha na verificação de migração.

Solution:

  1. Na instância de origem, revogue todos os privilégios padrão para limpar pg_default_acl:

    ALTER DEFAULT PRIVILEGES ... REVOKE ...;
  2. Após a conclusão da migração, reaplique os privilégios padrão na instância de destino:

    ALTER DEFAULT PRIVILEGES ... GRANT ...;

Tabelas de sistema não vazias (pg_parameter_acl e pg_db_role_setting)

Mensagem de aviso:

warning: Invalid system tables: [pg_parameter_acl, pg_db_role_setting], these system tables should be empty.

Impacto:

  • pg_parameter_acl registra permissões de acesso por usuário para parâmetros do kernel. O ApsaraDB RDS for PostgreSQL gerencia essas permissões internamente; portanto, as entradas de origem não podem ser aplicadas ao destino.

  • pg_db_role_setting registra valores padrão de parâmetros por banco de dados e por função. Essas configurações não serão transferidas corretamente se as tabelas não forem limpas antes da migração.

Solution:

  1. Limpe ambas as tabelas de sistema na instância de origem:

    DELETE FROM pg_parameter_acl;
    DELETE FROM pg_db_role_setting;
  2. Após a conclusão da implantação de DR, configure as permissões padrão dos usuários em diferentes bancos de dados na instância de destino.

Verifique permissão de função reservada

Conteúdo da verificação: Verifica se permissões de funções reservadas não permitidas foram concedidas a contas na instância de origem.

Mensagem de erro:

error: some disallowed reserved roles [pg_write_server_files] are granted to user. you should revoke these roles from their members

Impacto: O ApsaraDB RDS for PostgreSQL restringe certas funções integradas — como pg_write_server_files — porque elas fornecem acesso a operações do sistema de arquivos do servidor não permitidas em ambiente gerenciado. Se essas funções forem concedidas a contas na instância de origem, a migração falhará.

Solution:

Revogue as funções reservadas não permitidas de todas as contas na instância de origem. Exemplo:

REVOKE pg_write_server_files FROM "user";