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

Os problemas conhecidos e as limitações associadas às migrações online do PostgreSQL para o Base de Dados do Azure para PostgreSQL são descritos nas secções seguintes.

Configuração da migração online

  • O servidor PostgreSQL de origem tem de estar a executar a versão 9.4, 9.5, 9.6, 10 ou 11. Para obter mais informações, veja Versões suportadas da base de dados PostgreSQL.

  • 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 Base de Dados do Azure para PostgreSQL 9,6 ou 10 é suportada. A migração do PostgreSQL 11 para o PostgreSQL 9.6 não é suportada.

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

    • wal_level: definido como lógico.
    • max_replication_slots: defina, pelo menos, o número máximo de bases de dados para migração. Se quiser migrar quatro bases de dados, defina o valor como, pelo menos, 4.
    • max_wal_senders: defina o número de bases de dados em execução em simultâneo. O valor recomendado é 10.
  • Adicione o IP do agente DMS ao PostgreSQL de origem pg_hba.conf.

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

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

          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 REPLICAÇÃO 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 Base de Dados do Azure para PostgreSQL, utilizando um único serviço DMS.
  • O DMS permite que os utilizadores escolham tabelas dentro de uma base de dados que pretendam migrar. Captura de ecrã do ecrã D M S que mostra a opção para escolher tabelas.

Nos bastidores, existe um comando pg_dump que é utilizado para capturar a informação de falha de sistema das tabelas selecionadas através de uma das seguintes opções:

  • -T para incluir os nomes de tabela escolhidos na IU
  • -t para excluir os nomes de tabela não escolhidos pelo utilizador

Existe um limite máximo de 7500 carateres que pode ser incluído como parte do comando pg_dump, seguindo a opção -t ou -T . O comando pg_dump utiliza a contagem de carateres para tabelas selecionadas ou não selecionadas, o que for mais baixo. Se a contagem de carateres para as tabelas selecionadas e não selecionadas exceder 7500, o comando pg_dump falha com um erro.

Para o exemplo anterior, o comando pg_dump seria:

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

No comando anterior, o número de carateres é 55 (inclui aspas duplas, espaços, -T e barra)

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 com a migração online do PostgreSQL do RDS do AWS

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

  • Erro: O valor predefinido da coluna '{column}' na tabela '{table}' na base 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 predefinido num esquema de coluna difere entre as bases de dados de origem e de destino.

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

  • Erro: a base de dados de destino "{database}" tem tabelas "{number of tables}", enquanto a base 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 as bases de dados de origem e de destino.

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

  • Erro: A base de dados de origem {database} está vazia.

    Limitação: este erro ocorre quando a base de dados de origem está vazia. Provavelmente, selecionou a base de dados errada como a origem.

    Solução: verifique novamente a base de dados de origem que selecionou para migração e, em seguida, tente novamente.

  • Erro: A base de dados de destino {database} está vazia. Migrar o esquema.

    Limitação: este erro ocorre quando não existe nenhum esquema na base de dados de destino. Certifique-se de que o esquema no destino corresponde ao esquema na origem.

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

Outras limitações

  • O nome da base de dados não pode incluir um 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 registo DELETE e UPDATE será imprevisível.
  • A atualização de um segmento de chave primária é ignorada. A aplicação dessa atualização será identificada pelo destino como uma atualização que não atualizou quaisquer linhas. O resultado é um registo escrito na tabela de exceções.
  • Se a tabela tiver uma coluna JSON , quaisquer operações DELETE ou UPDATE nesta tabela podem levar a uma migração falhada.
  • A migração de múltiplas tabelas com o mesmo nome, mas um caso diferente pode causar comportamentos imprevisíveis e não é suportada. Um exemplo é a utilização de table1, TABLE1 e Table1.
  • Alterar o processamento de [CREATE | ALTER | DROP | TRUNCATE] os DDLs de tabela não são suportados.
  • 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.