Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Cloud migration assessment report

Última atualização: Oct 10, 2026

Este tópico descreve o relatório de avaliação do recurso de migração para a cloud com um clique do ApsaraDB RDS for PostgreSQL, incluindo seu conteúdo, erros comuns e as respectivas soluções.

Se o Status do relatório de avaliação for Failed, clique em Report Details na coluna Action da tarefa de migração.

Nota

Para mais informações sobre a migração para a cloud com um clique do ApsaraDB RDS for PostgreSQL, consulte One-click migration to the cloud.

Verifique se o RDS está vazio

Item de verificação

Verifique bancos de dados do RDS

Erro comum

error:postgres not empty, check if any table exists

Description

A instância de destino do ApsaraDB RDS for PostgreSQL não está vazia.

Solução

Limpe todos os bancos de dados na instância do ApsaraDB RDS for PostgreSQL, mantendo apenas os bancos de dados template0, template1 e postgres. No banco de dados postgres, remova todas as tabelas, exceto ha_health_check.

Verifique a conectividade da origem

  • Item de verificação 1

    Verifique a conectividade do IP

    Erro comum

    error:XX.XX.XX.XX is unapproachable

    Description

    O endereço IP ou nome DNS do servidor que hospeda o banco de dados PostgreSQL autogerenciado está inacessível.

    Solução

    • Para a migração para a cloud com um clique de um banco de dados PostgreSQL autogerenciado em uma instância ECS, configure o Private IP Address da instância ECS. Para saber como obter o endereço IP, consulte Visualize IP addresses.

    • Para migrações de um banco de dados PostgreSQL autogerenciado local, forneça o endereço IP resolvido a partir do seu registro DNS.

  • Item de verificação 2

    Verifique a conectividade da porta

    Erro comum

    error:5432 is unapproachable

    Description

    • O banco de dados PostgreSQL autogerenciado não está configurado para aceitar conexões remotas.

    • Há um firewall configurado para o banco de dados PostgreSQL autogerenciado, mas nenhuma regra permite o acesso à porta do banco de dados.

    Solução

    • No arquivo postgresql.conf do seu banco de dados PostgreSQL autogerenciado, defina listen_addresses = '*'. Para mais informações, consulte Configure the postgresql.conf file.

    • Configure o firewall para permitir o tráfego na porta 5432 ou desative o firewall antes da migração. Para mais informações, consulte Configure the server firewall.

  • Item de verificação 3

    Verifique a conectividade do banco de dados

    Erro comum

    error:cannot connect to source database by migratetest:123456

    Description

    • O nome de usuário ou a senha está incorreto.

    • A configuração do pg_hba.conf para o banco de dados PostgreSQL autogerenciado está incorreta.

    Solução

    • Verifique a conexão com o banco de dados PostgreSQL autogerenciado usando o nome de usuário e a senha especificados. Se a conexão falhar, atualize a senha. O exemplo a seguir mostra o comando para atualizar a senha da conta migratetest:

      ALTER USER migratetest WITH PASSWORD '123456';
    • Modifique o arquivo pg_hba.conf do seu banco de dados PostgreSQL autogerenciado. Para a conta migratetest, por exemplo, adicione a seguinte configuração:

      host  all       migratetest  <ApsaraDB RDS for PostgreSQL VPC CIDR block>  md5
      Nota

      Para mais informações, consulte Atualize the pg_hba.conf file.

  • Item de verificação 4

    Verifique o privilégio de replicação da conta

    Erro comum

    error:migratetest has no replication privilege

    Description

    • A conta de usuário não possui o privilégio REPLICATION.

    • A configuração do pg_hba.conf para o banco de dados PostgreSQL autogerenciado está incorreta.

    Solução

    • Conceda o privilégio REPLICATION à conta de usuário. O exemplo a seguir mostra o comando para a conta migratetest:

      ALTER ROLE migratetest REPLICATION;
    • Modifique o arquivo pg_hba.conf do seu banco de dados PostgreSQL autogerenciado. Por exemplo, adicione a seguinte configuração para a conta migratetest:

      host  replication  migratetest  <ApsaraDB RDS for PostgreSQL VPC CIDR block>  md5
      Nota

      Para mais informações, consulte Atualize the pg_hba.conf file.

  • Item de verificação 5

    Verifique o privilégio createrole da conta

    Erro comum

    error:migratetest has no createrole privilege

    Description

    A conta de usuário não possui o privilégio CREATEROLE.

    Solução

    Conceda o privilégio CREATEROLE à conta de usuário. O exemplo a seguir mostra o comando para a conta migratetest:

    ALTER ROLE migratetest CREATEROLE;
  • Item de verificação 6

    Verifique o privilégio de monitoramento da conta

    Erro comum

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

    Description

    A conta de usuário não possui o privilégio pg_monitor.

    Nota

    Esse privilégio é necessário para consultar visões do sistema como pg_stat_replication e pg_stat_wal_receiver para obter informações do link de replicação.

    Solução

    Conceda o privilégio pg_monitor à conta de usuário. O exemplo a seguir mostra o comando para a conta migratetest:

    GRANT pg_monitor TO migratetest;

Verifique a versão da origem

Item de verificação

Verifique se a versão principal é consistente

Erro comum

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

Description

A versão principal do banco de dados PostgreSQL autogerenciado não corresponde à da instância de destino do ApsaraDB RDS for PostgreSQL.

Solução

Adquira uma instância do ApsaraDB RDS for PostgreSQL com uma versão principal que corresponda à do seu banco de dados PostgreSQL autogerenciado.

Verifique a versão do glibc da origem

Item de verificação

Verifique se a versão do glibc da origem é compatível

Erro comum

warning:source glibc version is not compatible with rds pg

Description

A versão do GLIBC do banco de dados PostgreSQL autogerenciado é incompatível com a da instância do ApsaraDB RDS for PostgreSQL.

Nota

No GLIBC 2.28, as regras de ordenação (collation) para alguns caracteres UTF-8 foram alteradas. A incompatibilidade de versões pode resultar em regras de ordenação de dados diferentes e resultados de consulta inesperados.

Solução

Execute as seguintes verificações.

  1. Verifique a collation da tabela.

    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;

    Resultados:

    • Se true for retornado, a migração não apresenta riscos. Nenhuma ação adicional é necessária.

    • Se false for retornado, prossiga para a próxima etapa.

  2. Verifique a collation do banco de dados.

    SELECT datname,datcollate FROM pg_database where datcollate NOT IN ('C', 'POSIX');

    Resultados:

    • Se o resultado estiver vazio, a migração não apresenta riscos. Nenhuma ação adicional é necessária.

    • Se o resultado não estiver vazio, prossiga para a próxima etapa.

  3. Em todos os bancos de dados, verifique se há índices cuja collation não seja C ou POSIX.

    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');

    Resultados:

    • Se o resultado estiver vazio, a migração não apresenta riscos. Nenhuma ação adicional é necessária.

    • Se o resultado não estiver vazio, a migração apresenta riscos.

Verifique o tamanho do disco

Item de verificação

Verifique se o tamanho do disco é suficiente

Erro comum

error:source_db_size > disk_size * 0.95

Description

O tamanho total dos bancos de dados PostgreSQL autogerenciados excede 95% do espaço de armazenamento na instância de destino do ApsaraDB RDS for PostgreSQL.

Solução

  1. Execute o seguinte comando para verificar o espaço total de armazenamento usado pelo seu banco de dados PostgreSQL autogerenciado:

    SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
    Nota

    A unidade do resultado é megabytes (MB).

  2. Calcule o espaço de armazenamento necessário para a instância de destino do ApsaraDB RDS for PostgreSQL.

    Por exemplo, se o seu banco de dados PostgreSQL autogerenciado usar 100 GB de espaço de armazenamento, defina o espaço de armazenamento da instância do ApsaraDB RDS for PostgreSQL como pelo menos 110 GB.

  3. Expanda o espaço de armazenamento da instância do ApsaraDB RDS for PostgreSQL. Para mais informações, consulte Change instance specifications.

Verifique o tamanho de retenção do WAL

Item de verificação

Verifique se o tamanho de retenção do WAL é grande o suficiente

Erro comum

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

Description

O valor do parâmetro wal_keep_size ou wal_keep_segments é muito pequeno. Aumente esse valor.

Solução

  • Se o seu banco de dados PostgreSQL autogerenciado for da versão 13 ou posterior, aumente o valor do parâmetro wal_keep_size no seu banco de dados PostgreSQL autogerenciado. Isso melhora a taxa de sucesso de backups completos e incrementais durante a migração.

  • Se o seu banco de dados PostgreSQL autogerenciado for anterior à versão 13, aumente o valor do parâmetro wal_keep_segments no seu banco de dados PostgreSQL autogerenciado. Isso melhora a taxa de sucesso de backups completos e incrementais durante a migração.

    Nota

    Para versões do PostgreSQL anteriores à 13, wal_keep_size é calculado como wal_keep_segments * wal_segment_size.

Verifique parâmetros de especificação

Item de verificação

Verifique se os parâmetros de especificação são muito grandes

Erro comum

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

Description

Os parâmetros max_connections e max_prepared_transactions do banco de dados PostgreSQL autogerenciado são mais de 100 vezes maiores que os parâmetros correspondentes da instância de destino do ApsaraDB RDS for PostgreSQL. Isso pode causar falha na inicialização da instância de destino durante a configuração do link de replicação.

Solução

Diminua os valores dos parâmetros max_connections e max_prepared_transactions no seu banco de dados PostgreSQL autogerenciado.

Nota

Após alterar os parâmetros max_connections e max_prepared_transactions, reinicie a instância do PostgreSQL autogerenciado para que as alterações entrem em vigor.

Verifique usuário do RDS

Item de verificação

Verifique se o usuário do sistema do RDS está em uso

Erro comum

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

Description

O ApsaraDB RDS for PostgreSQL reserva as contas aurora, replicator e pgxxx no banco de dados PostgreSQL autogerenciado. Não use essas três contas como contas de service.

Solução

Não use as contas listadas na mensagem de aviso como contas de service.

Verifique extensões

  • Item de verificação 1

    Verifique as extensões suportadas pela origem

    Erro comum

    error:Check source supported extensions XXX not supported

    Description

    O banco de dados PostgreSQL autogerenciado possui uma extensão que não é compatível com a instância de destino do ApsaraDB RDS for PostgreSQL.

    Solução

    Remova a extensão incompatível do seu banco de dados PostgreSQL autogerenciado.

  • Item de verificação 2

    Verifique as extensões da origem com versão superior

    Erro comum

    error:Check source extensions with higher version XXX

    Description

    A versão de uma extensão no banco de dados PostgreSQL autogerenciado é superior à versão disponível no ApsaraDB RDS for PostgreSQL.

    Solução

    Instale uma versão inferior da extensão no seu banco de dados PostgreSQL autogerenciado para corresponder à versão na instância do ApsaraDB RDS for PostgreSQL.

  • Item de verificação 3

    Verifique as extensões da origem com versão inferior

    Erro comum

    warning:Check source extensions with lower version XXX

    Description

    A versão de uma extensão no banco de dados PostgreSQL autogerenciado é inferior à versão no ApsaraDB RDS for PostgreSQL.

    Solução

    Nenhuma ação é necessária. A extensão será atualizada automaticamente após a migração.

Verifique catálogos do sistema Postgres

  • Item de verificação 1

    Verifique se a instância de origem contém linguagens não suportadas na instância de destino (pg_language).

    Erro comum

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

    Descrição

    O ApsaraDB RDS for PostgreSQL suporta apenas as linguagens C, internal, SQL, PL/pgSQL, PL/Tcl e PL/Perl.

    Solução

    Remova as linguagens não suportadas da instância de origem.

  • Item de verificação 2

    Verifique se a instância de origem contém Large Objects.

    Erro comum

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

    Descrição

    O ApsaraDB RDS for PostgreSQL não suporta Large Objects.

    Solução

    Remova todos os Large Objects da instância de origem.

  • Item de verificação 3

    Verifique se a instância de origem tem privilégios padrão definidos pela instrução ALTER DEFAULT PRIVILEGES ... GRANT .... Esta verificação confirma se algum banco de dados na instância de origem possui uma tabela de sistema pg_catalog.pg_default_acl não vazia.

    Erro comum

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

    Descrição

    Se você executou a instrução ALTER DEFAULT PRIVILEGES ... GRANT ... em um banco de dados na instância de origem, a tabela de sistema pg_catalog.pg_default_acl para esse banco de dados não estará vazia.

    Solução

    Primeiro, execute a instrução ALTER DEFAULT PRIVILEGES ... REVOKE ... no banco de dados correspondente da instância de origem para garantir que a tabela de sistema pg_default_acl esteja vazia para todos os bancos de dados. Após a conclusão da migração, execute a instrução ALTER DEFAULT PRIVILEGES ... GRANT ... novamente para restaurar as configurações de privilégio padrão originais.

  • Item de verificação 4

    Verifique se as tabelas de sistema pg_parameter_acl e pg_db_role_setting na instância de origem não estão vazias.

    Erro comum

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

    Descrição

    A tabela de sistema pg_parameter_acl registra os privilégios de acesso do usuário para parâmetros de kernel. O ApsaraDB RDS for PostgreSQL não permite que usuários modifiquem esses privilégios. A tabela de sistema pg_db_role_setting registra as configurações de privilégio padrão para diferentes usuários em cada banco de dados.

    Solução

    1. Na instância de origem, execute as seguintes instruções para limpar as tabelas de sistema pg_parameter_acl e pg_db_role_setting:

      DELETE FROM pg_parameter_acl;
      DELETE FROM pg_db_role_setting;
    2. Após a conclusão da migração, reconfigure os privilégios padrão para diferentes usuários em cada banco de dados na instância de destino.

Verifique privilégios de funções reservadas

Item de verificação

Verifique se a instância de origem concedeu privilégios de funções reservadas a contas não permitidas na instância de destino.

Erro comum

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

Descrição

O ApsaraDB RDS for PostgreSQL não permite que contas tenham privilégios para funções reservadas, como pg_write_server_files. Se você usou uma instrução como GRANT pg_write_server_files TO "user"; na instância de origem, revogue esses privilégios.

Solução

Na instância de origem, execute a instrução REVOKE apropriada para revogar os privilégios, como REVOKE pg_write_server_files FROM "user";.