Como posso solucionar problemas de incompatibilidade de dados entre os bancos de dados de origem e de destino no AWS DMS?

Data da última atualização: 12/09/2022

Tenho uma tarefa do AWS Database Migration Service (AWS DMS) que está no estágio completo de carga completa ou em andamento de replicação da migração. Porém, os dados em downstream no banco de dados de destino não correspondem aos dados na origem. Como posso solucionar problemas de incompatibilidade de dados entre os bancos de dados de origem e de destino?

Breve descrição

Há vários motivos pelos quais você pode ver incompatibilidade de dados ao migrar seus dados em um ambiente heterogêneo usando o AWS DMS. Por exemplo:

  • Se você não estiver usando as configurações de LOB corretas, os dados serão truncados de acordo com a configuração da tarefa MaxLobSize. Portanto, a coluna LOB de destino não contém exatamente os mesmos dados que a origem.
  • Durante a migração heterogênea, o AWS DMS converte o tipo de dados de origem em um tipo de dados interno. Em seguida, o AWS DMS converte os dados internos para o tipo de dados de destino. Mas, como alguns tipos de dados de origem e destino não são totalmente compatíveis com o AWS DMS, você talvez veja uma incompatibilidade de dados entre a origem e o destino.
  • Se ocorrerem erros ou exceções durante a replicação da captura de dados de alteração (CDC), a transação DML poderá falhar no banco de dados de destino.

Resolução

Execute verificações iniciais antes da solução de problemas

Antes de solucionar o problema usando as etapas neste artigo, execute estas verificações iniciais:

  • Se você estiver usando uma tarefa somente carga completa, verifique se a migração foi concluída e se a tarefa entrou em um estado interrompido.
  • Se você estiver usando uma tarefa de carga completa ou somente CDC, verifique as métricas CDCLatencySource e CDCLatencyTarget do Amazon CloudWatch. Confirme se você não observa nenhuma latência.
  • Confirme se não há outros aplicativos conectados aos bancos de dados de origem ou de destino. Isso pode causar manipulação de dados. Por exemplo, se você estiver executando uma tarefa somente carga completa e os dados na origem forem modificados por outro aplicativo, talvez você veja uma incompatibilidade de dados no destino. Ou, se o banco de dados de destino tiver gatilhos DML ou outro aplicativo gravar dados na tabela de destino migrada, você também verá incompatibilidade de dados entre o destino e a origem.

Consulte a tabela awsdms_validation_failures_v1 no destino

Quando a consistência de dados for seu principal objetivo, certifique-se de ativar a validação ao criar a tarefa do AWS DMS.

Solucionar problemas quando a validação estiver ativada

Se a validação estiver ativada, você poderá verificar a tabela awsdms_Validation_failures_v1 no banco de dados de destino. Se algum registro entrar no estado ValidationSuspended ou ValidationFailed durante a migração, o AWS DMS gravará as informações de diagnóstico em awsdms_validation_failures_V1. Consulte esta tabela para solucionar erros de validação executando um comando semelhante a este:

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Verifique a coluna de detalhes na saída para obter informações sobre a falha. Use a coluna Chave para comparar os dados do registro entre a origem e o destino. Para obter mais informações, consulte a seção Solução de problemas da documentação de validação de dados do AWS DMS.

Solucionar problemas quando a validação estiver desativada

Se você não ativou a validação em sua tarefa do AWS DMS, crie uma tarefa somente de validação:

  • Para uma migração única, use o recurso somente validação de carga completa para comparar rapidamente todas as linhas entre a origem e o destino.
  • Para replicação contínua, use a tarefa somente de validação do CDC. Uma tarefa somente de validação do CDC valida as linhas existentes entre as tabelas de origem e de destino. A tarefa continua com as alterações contínuas à medida que elas aparecem e relata quaisquer falhas de validação de dados.

Verifique se há limitações nos dados de origem e de destino

Depois de identificar os dados incompatíveis, verifique a origem e o destino quanto às limitações associadas aos seus tipos de dados. Por exemplo, quando você usa o PostgreSQL como fonte, não é possível migrar tipos de dados ENUM.

Verificar se há erros no log de tarefas

Verifique se há erros no log de tarefas no momento da falha de validação. Ou verifique as tabelas de controle para ver se alguma exceção foi registrada durante o estágio de replicação de dados.

Resolver dados incompatíveis causados por truncamento

Quando você usa o modo LOB limitado, o AWS DMS pré-aloca memória na instância de replicação. Em seguida, ele carrega os dados LOB em massa usando a configuração de tarefa lobMaxSize. O AWS DMS trunca todas as LOBs que excedem o tamanho máximo de LOB e, em seguida, emite um aviso para o arquivo de log.

Verifique os arquivos de log em busca de mensagens de aviso que indiquem que os dados foram truncados e, em seguida, verifique o comprimento máximo da coluna LOB correspondente. Defina um lobMaxSize que seja maior que o comprimento da coluna LOB para que os dados não fiquem truncados. Use o script de suporte de diagnóstico para descobrir quais tabelas têm dados LOB e consulte de acordo.

Se o tamanho máximo da coluna LOB for superior a 100 MB, use o modo LOB Completo ou LOB Inline para interromper o truncamento de dados da coluna LOB.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?