¿Cómo se pueden solucionar los problemas de discrepancia de datos entre las bases de datos de origen y de destino en AWS DMS?

Última actualización: 12/09/2022

Una tarea de AWS Database Migration Service (AWS DMS) se encuentra en la fase de migración de carga completa o de replicación en curso. Pero los datos de salida de la base de datos de destino no coinciden con los de la de origen. ¿Cómo se pueden solucionar los problemas de discrepancia de datos entre las bases de datos de origen y de destino?

Breve descripción

Hay varias razones por las que es posible que se produzca una discrepancia de datos al migrarlos a un entorno heterogéneo con AWS DMS. Por ejemplo:

  • Si no se utilizan las configuraciones correctas de LOB, los datos se truncan según la configuración de la tarea MaxLobSize. Por lo tanto, en la columna de destino de LOB no figuran exactamente los mismos datos que en la de origen.
  • AWS DMS convierte el tipo de datos de origen en un tipo de datos interno durante la migración heterogénea. Luego, AWS DMS convierte los datos internos en el tipo de datos de destino. Sin embargo, dado que algunos tipos de datos de origen y de destino no son totalmente compatibles con AWS DMS, es posible que se produzcan discrepancias de datos entre las bases de datos de origen y de destino.
  • Si se producen errores o excepciones al replicar la captura de datos de cambios (CDC), la transacción DML puede fallar en la base de datos de destino.

Resolución

Someta el problema a una revisión inicial antes de solucionarlo

Antes de seguir los pasos de este artículo para resolver el problema, sométalo a una revisión inicial de la siguiente manera:

  • Si utiliza una tarea de carga completa, asegúrese de que la migración se haya completado y de que la tarea se haya pausado.
  • Si utiliza una tarea de carga completa o de CDC, verifique las métricas CDCLatencySource y CDCLatencyTarget de Amazon CloudWatch. Confirme que no se observe ninguna latencia.
  • Confirme que no haya otras aplicaciones conectadas a las bases de datos de origen y de destino. Esto puede ocasionar la manipulación de datos. Por ejemplo, si ejecuta una tarea de carga completa y otra aplicación modifica los datos en la base de datos de origen, es posible que se produzca una discrepancia de los datos en la base de destino. O bien, si la base de datos de destino tiene disparadores DML u otra aplicación ingresa datos en la tabla de destino migrada, se producirá una discrepancia de datos entre las bases de datos de destino y de origen.

Consulte la tabla awsdms_validation_failures_v1 en la base de datos de destino

Si la coherencia de datos es su objetivo principal, asegúrese de activar la validación al crear la tarea AWS DMS.

Solución de problemas al activar la validación

Si la validación está activada, consulte la tabla awsdms_Validation_failures_v1 en su base de datos de destino. Si algún registro entra en el estado ValidationSuspended o ValidationFailed durante la migración, AWS DMS ingresa información de diagnóstico en awsdms_validation_failures_V1. Consulte esta tabla para solucionar los errores de validación al ejecutar un comando similar al siguiente:

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Examine la columna de detalles en la salida para obtener información sobre la falla. Utilice la columna Key para comparar los datos de los registros entre las bases de datos de origen y de destino. Para obtener más información, consulte la sección Solución de problemas en la documentación de validación de datos de AWS DMS.

Solución de problemas al desactivar la validación

Si no ha activado la validación en la tarea de AWS DMS, inicie una tarea de validación:

  • Para una migración única, utilice la función de validación de carga completa a fin de comparar de manera rápida todas las filas entre la base de datos de origen y la de destino.
  • Para la replicación continua, utilice la tarea de solo validación de CDC. Una tarea de solo validación de CDC valida las filas existentes entre las tablas de origen y destino. La tarea continúa con los cambios en curso a medida que surgen e informa cualquier falla de validación de datos.

Revise si hay limitaciones en cuanto a los datos de origen y de destino

Una vez identificados los datos que no coinciden, compruebe que las bases de datos de origen y de destino no tengan limitaciones asociadas a sus tipos de datos. Por ejemplo, si utiliza PostgreSQL como base de origen, no se podrán migrar los tipos de datos ENUM.

Compruebe que no haya errores en el registro de tareas

Compruebe que el registro de tareas no tenga errores en el momento de la falla de validación. O bien, consulte las tablas de control para ver si se registró alguna excepción durante la etapa de replicación de datos.

Resuelva la discrepancia de datos que pueda haber surgido a partir del truncamiento

Cuando utiliza el modo LOB limitado, AWS DMS asigna previamente la memoria en la instancia de replicación. Luego, carga los datos LOB de forma masiva mediante la configuración de la tarea LoBMaxSize. AWS DMS trunca todo LOB que supere el tamaño máximo de LOB y, a continuación, emite una advertencia en el archivo de registro.

Revise los archivos de registro en busca de mensajes de advertencia que indiquen que los datos se han truncado y, luego, verifique la longitud máxima de la columna LOB correspondiente. Determine un LobMaxSize que sea mayor que la longitud de la columna LOB para que los datos no se trunquen. Utilice el script de soporte de diagnóstico para ver qué tablas tienen datos LOB y realice la consulta correspondiente.

Si el tamaño máximo de la columna LOB es superior a 100 MB, utilice el modo Full LOB o Inline LOB para detener el truncamiento de los datos de la columna LOB.


¿Le ha resultado útil este artículo?


¿Necesita asistencia técnica o con la facturación?