Partilhar via


Problemas conhecidos e limitações com migrações online do PostgreSQL para o Banco de Dados do Azure para PostgreSQL

Importante

Recomendamos que você use o novo serviço de migração no Banco de Dados do Azure para PostgreSQL para uma experiência de migração mais simplificada e eficiente. Este serviço simplifica o processo, suportando uma variedade de ambientes de origem, garantindo uma transição sem complicações para a Base de Dados do Azure para PostgreSQL.

Este artigo descreve problemas conhecidos e limitações associadas a migrações online do PostgreSQL para o Banco de Dados do Azure para PostgreSQL usando o Serviço de Migração de Banco de Dados do Azure (DMS).

Configuração de migrações online

  • As versões de origem mais baixas do PostgreSQL suportadas são 9.4 e a versão de destino mais alta suportada é a 14.9.

  • Só são suportadas migrações para a mesma versão ou para uma versão superior. Por exemplo, a migração do PostgreSQL 9.5 para a Base de Dados do Azure para PostgreSQL 9.6 ou 10 é suportada. No entanto, a migração do PostgreSQL 11 para o PostgreSQL 9.6 não é suportada.

  • Para habilitar a replicação lógica no arquivo PostgreSQL postgresql.conf de origem, defina os seguintes parâmetros:

    Parâmetro Description
    wal_level Definido como lógico.
    max_replication_slots Defina pelo menos o número máximo de bancos de dados para migração. Se desejar migrar quatro bancos de dados, defina o valor como pelo menos 4.
    max_wal_senders Defina o número de bancos de dados em execução simultaneamente. O valor recomendado é 10.
  • Adicione o IP do agente DMS ao PostgreSQL pg_hba.confde origem.

    1. Anote o endereço IP do DMS depois de concluir o aprovisionamento de uma instância do Azure Database Migration Service.

    2. Adicione o endereço IP ao pg_hba.conf ficheiro:

      host    all    172.16.136.18/10    md5
      host    replication postgres    172.16.136.18/10     md5
      
  • O utilizador tem de ter a função REPLICATION no servidor que aloja a base de dados de origem.

  • Os esquemas da base de dados de origem e de destino têm de corresponder.

Limitações de tamanho

  • Pode migrar até 1 TB de dados do PostgreSQL para a Base de Dados do Azure para PostgreSQL através de um único serviço do DMS.
  • O DMS permite que os usuários escolham tabelas dentro de um banco de dados que desejam migrar.

Captura de ecrã do ecrã DMS que mostra a opção de escolher mesas.

Nos bastidores, o pg_dump comando leva o despejo das tabelas selecionadas usando uma das seguintes opções:

  • -T para incluir os nomes de tabela escolhidos na interface do usuário
  • -t Para excluir os nomes de tabela não escolhidos pelo usuário

Há um limite máximo de 7.500 caracteres que podem ser incluídos como parte do pg_dump comando após a -t opção ou -T . O comando pg_dump utiliza a contagem de carateres para tabelas selecionadas ou não selecionadas, conforme a que for mais baixa. Se a contagem de caracteres para as tabelas selecionadas e não selecionadas exceder 7500, o pg_dump comando falhará com um erro.

Para o exemplo anterior, o pg_dump comando seria:

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

No comando anterior, o número de caracteres é 55 (inclui aspas duplas, -Tespaços e barras)

Limitações do tipo de dados

Limitação: se não existir uma chave primária nas tabelas, as alterações poderão não ser sincronizadas com a base de dados de destino.

Solução: defina temporariamente uma chave primária para a tabela para a migração continuar. Remova a chave primária após a conclusão da migração de dados.

Limitações da migração online do RDS PostgreSQL do AWS

Ao tentar efetuar uma migração online da Base de Dados Relacional (RDS) PostgreSQL do Amazon Web Service (AWS) para a Base de Dados do Azure para PostgreSQL, poderá encontrar os seguintes erros:

  • Erro: O valor padrão da coluna '{column}' na tabela '{table}' no banco de dados '{database}' é diferente nos servidores de origem e de destino. É '{value on source}' na origem e '{value on target}' no destino.

    Limitação: Este erro ocorre quando o valor padrão em um esquema de coluna difere entre os bancos de dados de origem e de destino.

    Solução alternativa: verifique se o esquema no destino corresponde ao esquema na origem. Para obter mais informações sobre como migrar o esquema, veja a documentação de migração online da Base de Dados do Azure para PostgreSQL.

  • Erro: O banco de dados de destino '{database}' tem tabelas '{number of tables}' enquanto o banco de dados de origem '{database}' tem tabelas '{number of tables}'. O número de tabelas nas bases de dados de origem e de destino deve coincidir.

    Limitação: Este erro ocorre quando o número de tabelas difere entre os bancos de dados de origem e de destino.

    Solução alternativa: verifique se o esquema no destino corresponde ao esquema na origem. Para obter mais informações sobre como migrar o esquema, veja a documentação de migração online da Base de Dados do Azure para PostgreSQL.

  • Erro: O banco de dados de origem {database} está vazio.

    Limitação: Este erro ocorre quando o banco de dados de origem está vazio. Provavelmente selecionou a base de dados errada como origem.

    Solução alternativa: verifique novamente o banco de dados de origem selecionado para migração e tente novamente.

  • Erro: O banco de dados de destino {database} está vazio. Migrar o esquema.

    Limitação: Este erro ocorre quando não há nenhum esquema no banco de dados de destino. Confirme que o esquema no destino corresponde ao esquema na origem.

    Solução alternativa: verifique se o esquema no destino corresponde ao esquema na origem. Para obter mais informações sobre como migrar o esquema, veja a documentação de migração online da Base de Dados do Azure para PostgreSQL.

Outras limitações

  • O nome do banco de dados não pode incluir ponto-e-vírgula (;).

  • Uma tabela capturada tem de ter uma chave primária. Se uma tabela não tiver uma chave primária, o resultado das operações de registro DELETE e UPDATE será imprevisível.

  • A atualização de um segmento da chave primária é ignorada. A aplicação dessa atualização é identificada pelo destino como uma atualização que não atualizou nenhuma linha. O resultado é um registo escrito na tabela de exceções.

  • Se a tabela tiver uma JSON coluna, qualquer operação DELETE ou UPDATE nessa tabela poderá levar a uma migração com falha.

  • A migração de várias tabelas com o mesmo nome, mas com capitalização diferente, pode causar um comportamento imprevisível e não é suportada. Um exemplo é a utilização de table1, TABLE1 e Table1.

  • Alterar o processamento de [ CREATE | ALTER - Brasil | QUEDA | TRUNCATE ] tabela DDLs não é suportada.

  • No Database Migration Service, uma única atividade de migração só pode acomodar até quatro bases de dados.

  • A migração da tabela pg_largeobject não é suportada.