Quando uso o AWS Database Migration Service (AWS DMS) para migrar bancos de dados de origem para o Amazon Redshift, tenho problemas de replicação de dados e falhas na captura de dados de alteração (change data capture, CDC).
Resolução
Falhas de CDC
Se você tiver falhas de CDC, analise os logs de tarefas do AWS DMS para ver se há mensagens de erro relacionadas a tabelas específicas. Também é possível verificar as métricas CDCLatencySource e CDCLatencyTarget do Amazon CloudWatch em sua tarefa do AWS DMS.
Realize uma das seguintes ações com base na mensagem de erro recebida:
- Verifique se as tabelas de origem têm chaves primárias. Em origens do PostgreSQL, as tabelas capturadas devem ter uma chave primária para que o AWS DMS processe as operações DELETE e UPDATE.
- Confirme se você definiu o período de retenção dos logs de alteração no banco de dados de origem para pelo menos 24 horas.
- Certifique-se de que a conta da AWS usada pelo AWS DMS tem as permissões necessárias para os bancos de dados de origem e de destino.
Inconsistência de dados
Para resolver inconsistências de dados, conclua as seguintes etapas:
- Crie uma tarefa somente de validação para identificar registros incompatíveis entre a origem e o destino. Para obter mais informações, consulte Desempenho da validação do Redshift.
- Consulte a tabela awsdms_validation_failures_v1 no banco de dados de destino para ver as inconsistências.
- Verifique a tabela awsdms_apply_exceptions no banco de dados de destino para obter informações detalhadas sobre falhas nas migrações.
- Verifique se todas as tabelas de destino replicadas têm uma chave primária ou um índice exclusivo.
Observação: o Amazon Redshift não impõe restrições de unicidade, chave primária e chave estrangeira. Portanto, duplicatas podem ocorrer.
- Se você usar o PostgreSQL como a origem, deve definir as chaves primárias das tabelas de origem e de destino.
- Em tabelas com inconsistências, use a tarefa do AWS DMS para recarregar as tabelas.
Problemas de conversão de tipos
Para resolver problemas de conversão de tipos, conclua as seguintes etapas:
-
Analise os logs de tarefas do AWS DMS em busca de erros relacionados ao truncamento de dados ou ao comprimento da string que exceda o comprimento da linguagem de definição de dados (Data Definition Language, DDL).
-
Verifique a tabela awsdms_apply_exceptions para ver se há falhas nas migrações.
-
Ajuste os tipos de dados da coluna no banco de dados de destino do Redshift para acomodar dados maiores. Por exemplo, altere varchar para text em colunas com problemas de comprimento.
-
Modifique o parâmetro MaxLobSize nas configurações da tarefa para lidar com tamanhos maiores de dados, conforme mostrado no exemplo a seguir:
{
"TargetMetadata": {
"MaxLobSize": 32
}
}
-
Confirme se você está usando um tipo de dados compatível e certifique-se de mapear corretamente a origem e o destino.
Problemas de desempenho e alta latência
Para melhorar o desempenho e reduzir a latência, realize as seguintes ações:
Registros duplicados
Para evitar registros duplicados, realize as seguintes ações:
- Confirme se as tabelas de destino replicadas têm uma chave primária ou um índice exclusivo.
- Crie manualmente tabelas no destino com chaves primárias e defina TargetTablePrepMode como DO_NOTHING ou TRUNCATE_BEFORE_LOAD nas configurações da tarefa.
- Use a regra de mapeamento de tabela do AWS DMS primary-key-def para definir explicitamente as chaves primárias.
Dados ausentes ou incompletos
Para resolver dados ausentes ou incompletos, realize as seguintes ações:
- Analise os logs de tarefas do AWS DMS em busca de mensagens de aviso ou erro relacionados a tabelas específicas.
- Verifique a métrica CDCIncomingChanges para saber se o AWS DMS captura todas as alterações da origem.
- Verifique se a conta de usuário do banco de dados de origem que o AWS DMS usa tem as permissões necessárias para acessar todas as tabelas e esquemas necessários.
- Crie uma tarefa somente de validação para identificar registros incompatíveis. Para obter mais informações, consulte Desempenho da validação do Redshift.
- Em tabelas com problemas consistentes, é possível criar tarefas individuais do AWS DMS para solucionar problemas de forma mais granular.
Informações relacionadas
Best practices for AWS Database Migration Service (Práticas recomendadas para o AWS Database Migration Service)
Solução de problemas de tarefas de migração no AWS Database Migration Service
AWS DMS data validation (Validação de dados do AWS DMS)