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 dando suporte a uma variedade de ambientes de origem, garantindo uma transição sem problemas para o Banco de Dados do Azure para PostgreSQL.
Este artigo descreve os problemas conhecidos e limitações associadas a migrações online do Oracle para o Banco de Dados do Azure para PostgreSQL usando o DMS (Serviço de Migração de Banco de Dados) do Azure.
Configuração de migração online
As versões de origem mais baixas do PostgreSQL com suporte são 9.4 e a versão de destino mais alta com suporte é 14.9.
Apenas migrações para a mesma versão ou para uma versão superior são suportadas. Por exemplo, há suporte para migração do PostgreSQL 9.5 para o Banco de Dados do Azure para PostgreSQL 9.6 ou 10. Não há suporte para a migração do PostgreSQL 11 para o PostgreSQL 9.6.
Para habilitar a replicação lógica no arquivo
postgresql.conf
do PostgreSQL de origem, defina os seguintes parâmetros:Parâmetro Descrição 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 você quiser migrar 4 bancos de dados, defina o valor como 4
, pelo menos.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 à origem do
pg_hba.conf
do PostgreSQL.Anote o endereço IP do DMS após concluir o provisionamento de uma instância do DMS.
Adicione o endereço IP ao arquivo
pg_hba.conf
:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
O usuário deve ter a função REPLICATION no servidor que hospeda o banco de dados de origem.
Os esquemas de banco de dados de origem e destino devem corresponder.
Limitações de tamanho
- Você pode migrar até 1 TB de dados do PostgreSQL para Banco de Dados do Azure para PostgreSQL usando um único serviço DMS.
- O DMS permite que os usuários escolham tabelas dentro de um banco de dados que desejam migrar.
Nos bastidores, o comando pg_dump
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 comando pg_dump
após a opção -t
ou -T
. O comando pg_dump
usa a contagem dos caracteres para tabelas selecionadas ou não selecionadas, o que for menor. Se a contagem de caracteres para as tabelas selecionadas e não selecionadas exceder 7.500, o comando pg_dump
falhará 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 caracteres é 55 (inclui aspas duplas, espaços, -T
e a barra)
Limitações do tipo de dados
Limitação: se não houver chave primária nas tabelas, as alterações poderão não ser sincronizadas com o banco de dados de destino.
Solução alternativa: defina temporariamente uma chave primária na tabela para que a migração continue. Remova a chave primária após a conclusão da migração de dados.
Limitações com a migração online do RDS PostgreSQL da AWS
Ao tentar executar uma migração online do RDS (banco de dados relacional) PostgreSQL da AWS (Amazon Web Services) para o Banco de Dados do Azure para PostgreSQL, você 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 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 colunas difere entre os bancos de dados de origem e destino.
Solução alternativa: verifique se o esquema no destino corresponde ao esquema da origem. Para obter mais informações sobre como migrar o esquema, confira a documentação de migração online do Banco de Dados do Azure para PostgreSQL.
Erro: O banco de dados de destino "{database}" tem "{number of tables}" tabelas, enquanto que o banco de dados de origem "{database}" tem "{number of tables}" tabelas. O número de tabelas nos bancos de dados de origem e destino deve corresponder.
Limitação: esse 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 da origem. Para obter mais informações sobre como migrar o esquema, confira a documentação de migração online do Banco 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. Você provavelmente selecionou o banco de dados incorreto como a 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 {banco de dados} está vazio. Migrar o esquema.
Limitação: este erro ocorre quando não há um esquema no banco de dados de destino. Confira se o esquema do destino corresponde ao esquema da origem.
Solução alternativa: verifique se o esquema no destino corresponde ao esquema da origem. Para obter mais informações sobre como migrar o esquema, confira a documentação de migração online do Banco de Dados do Azure para PostgreSQL.
Outras limitações
O nome do banco de dados não pode incluir um ponto e vírgula (
;
).Uma tabela capturada deve ter uma chave primária. Se uma tabela não tiver uma chave primária, o resultado das operações de registro EXCLUIR e ATUALIZAR é imprevisível.
A atualização de um segmento de chave primária é ignorada. A aplicação de tal atualização é identificada pelo destino como uma atualização que não atualizou nenhuma linha. O resultado será um registro gravado na tabela de exceções.
Se a tabela tiver uma coluna
JSON
, qualquer operação DELETE ou UPDATE nessa tabela poderá levar a uma migração com falha.Migração de várias tabelas com o mesmo nome, mas com capitalização diferente, poderá causar um comportamento imprevisível que não tem suporte. Um exemplo é o uso de tabela1, TABELA1 e Tabela1.
A alteração do processamento de [ CREATE | ALTERAR | SOLTAR | TRUNCATE ] da tabela DDLs não é suportada.
No Serviço de Migração de Banco de Dados, uma única atividade de migração pode acomodar somente até quatro bancos de dados.
Não há suporte para a migração da tabela pg_largeobject.