Tenho uma tarefa do AWS Database Migration Service (AWS DMS) que está em carga total completa ou em estágio contínuo de replicação da migração. No entanto, os dados no banco de dados de destino não coincidem com os dados na origem.
Breve descrição
Ao usar o AWS DMS para migrar dados em um ambiente heterogêneo, é possível observar uma incompatibilidade de dados pelos seguintes motivos:
- Configurações incorretas de objetos binários grandes (LOB)
- O tipo de dados de origem ou destino não é suportado
- Erros ou exceções que ocorrem durante a replicação da captura de dados de alteração (CDC) fazem com que a transação da linguagem de manipulação de dados (DML) falhe no banco de dados de destino
Se você não usar as configurações de LOB corretas, os dados serão truncados com base na configuração da tarefa LobMaxSize. Portanto, a coluna de LOB de destino não contém exatamente os mesmos dados da fonte.
Durante a migração heterogênea, o AWS DMS converte o tipo de dados de origem em um tipo de dado interno. Em seguida, o AWS DMS converte os dados internos no tipo de dado de destino. Como certos tipos de dados de origem e destino não são totalmente suportados pelo AWS DMS, é possível observar uma incompatibilidade de dados entre a origem e o destino.
Resolução
Executar verificações iniciais
Se você usar uma tarefa somente de carga total, verifique se a migração foi concluída e se a tarefa está em um estado interrompido.
Se você usar uma tarefa de carga total e CDC, ou somente CDC, verifique as métricas CDCLatencySource e CDCLatencyTarget do Amazon CloudWatch. Confirme se não há latência.
Verifique se não há outras aplicações conectadas aos bancos de dados de origem ou de destino, pois isso pode causar manipulação de dados. Por exemplo, se você estiver executando uma tarefa somente de carga total e a data de origem for modificada por outra aplicação, haverá incompatibilidade de dados no destino. Ou, se outra aplicação gravar dados na tabela de destino migrada no banco de dados de destino, haverá incompatibilidade de dados entre o destino e a origem.
Consultar a tabela awsdms_validation_failures_v1 no destino
Se sua meta for a consistência de dados, ative a validação ao criar a tarefa do AWS DMS.
Observação: se uma tabela tiver colunas de LOB e você usar o modo LOB limitado para migração, defina ValidationPartialLobSize com o mesmo valor de LobMaxSize.
Solucionar problemas quando a validação está ativada
Se a validação estiver ativada, verifique a tabela awsdms_Validation_failures_v1 em seu banco de dados de destino. Se um registro entrar no estado ValidationSuspended ou ValidationFailed durante a migração, o AWS DMS gravará informações de diagnóstico em awsdms_validation_failures_v1. Para solucionar erros de validação, execute um comando semelhante ao seguinte:
select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';
Para obter informações sobre a falha, verifique a coluna Detalhes na saída. Use a coluna Chave para comparar os dados do registro entre sua origem e destino. Para mais informações sobre como solucionar problemas com a validação de dados, consulte Solução de problemas.
Solucionar problemas quando a validação está 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 atributo somente de validação de carga total 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 atuais entre as tabelas de origem e de destino. A tarefa continua com mudanças recorrentes à medida que elas aparecem e relata falhas na validação de dados.
Verificar as 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 tipos de dados. Por exemplo, quando você usa o PostgreSQL como fonte, não é possível migrar os tipos de dados ENUM.
Verificar se há erros no log de tarefas
Verifique se há erros no log de tarefas no momento da falha na validação. Ou verifique as tabelas de controle para ver as exceções registradas durante o estágio de replicação de dados.
Resolver dados incompatíveis causados pelo truncamento
Quando você usa o modo LOB limitado, o AWS DMS pré-aloca memória na instância de replicação. Em seguida, o AWS DMS usa a configuração da tarefa LobMaxSize para carregar os dados de LOB em massa. O AWS DMS trunca os LOBs que excedem o tamanho máximo do LOB e, em seguida, emite uma mensagem de aviso para o arquivo de log.
Verifique os arquivos de log para ver se há mensagens de aviso que mostrem que os dados foram truncados e, em seguida, verifique o tamanho máximo da coluna de LOB correspondente. Defina um LobMaxSize maior que o tamanho da coluna de LOB para que os dados não sejam truncados. Use um script de suporte de diagnóstico para localizar as tabelas que têm dados de LOB e, em seguida, consulte o tamanho da coluna de LOB.
Se o tamanho máximo da coluna de LOB for maior que 100 MB, use o modo LOB completo ou LOB embutido para interromper o truncamento de dados da coluna de LOB.
Informações relacionadas
Tarefas somente de validação
Configuração do suporte de LOB para bancos de dados de origem em uma tarefa do AWS DMS