Tengo una tarea de AWS Database Migration Service (AWS DMS) que se encuentra en la fase de migración de carga completa o de replicación continua. Sin embargo, los datos de la base de datos de destino no coinciden con los datos del origen.
Descripción breve
Cuando usa AWS DMS para migrar datos en un entorno heterogéneo, es posible que los datos no coincidan por los siguientes motivos:
- Configuración incorrecta de objetos binarios grandes (LOB)
- No se admite el tipo de datos de origen o de destino
- Los errores o excepciones que se producen durante la replicación de la captura de datos de cambios (CDC) provocan un error en la transacción del lenguaje de manipulación de datos (DML) en la base de datos de destino
Si no utiliza la configuración de LOB correcta, los datos se truncan en función de la configuración de la tarea LobMaxSize. Por lo tanto, la columna LOB de destino no contiene exactamente los mismos datos que el origen.
Durante la migración heterogénea, AWS DMS convierte el tipo de datos de origen en un tipo de datos interno. A continuación, AWS DMS convierte los datos internos en el tipo de datos de destino. Dado que AWS DMS no admite completamente ciertos tipos de datos de origen y destino, es posible que los datos no coincidan entre el origen y el destino.
Resolución
Realice las comprobaciones iniciales
Si utiliza una tarea de solo carga completa, asegúrese de que la migración se haya completado y de que la tarea esté detenida.
Si utiliza una tarea de carga completa y de CDC o una tarea exclusiva para CDC, compruebe las métricas de Amazon CloudWatch CDCLatencySource y CDCLatencyTarget. Confirme que no haya latencia.
Compruebe que no haya otras aplicaciones conectadas a las bases de datos de origen o destino, ya que esto puede provocar la manipulación de los datos. Por ejemplo, si está ejecutando una tarea de solo carga completa y otra aplicación modifica la fecha de origen, los datos del destino no coincidirán. O bien, si otra aplicación escribe datos en la tabla de destino migrada de la base de datos de destino, los datos no coincidirán entre el destino y el origen.
Consulte la tabla awsdms_validation_failures_v1 en el destino
Si su objetivo es la coherencia de los datos, active la validación cuando cree la tarea de AWS DMS.
Nota: Si una tabla tiene columnas LOB y usa el modo LOB limitado para realizar la migración, debe establecer ValidationPartialLobSize en el mismo valor que LobMaxSize.
**Solucionar problemas cuando se activa la validación **
Si la validación está activada, compruebe la tabla awsdms_Validation_failures_v1 de la base de datos de destino. Si un registro entra en el estado ValidationSuspended o ValidationFailed durante la migración, AWS DMS escribe la información de diagnóstico en awsdms_validation_failures_v1. Para solucionar errores de validación, ejecute un comando similar al siguiente:
select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';
Para obtener información sobre el error, consulte la columna Detalles de la salida. Utilice la columna Clave para comparar los datos del registro entre el origen y el destino. Para obtener más información sobre cómo solucionar problemas con la validación de datos, consulte Solución de problemas.
Solucionar problemas cuando la validación está desactivada
Si no ha activado la validación en su tarea de AWS DMS, cree una tarea exclusiva de validación.
Para realizar una migración única, utilice la función de validación de carga completa para comparar rápidamente todas las filas entre el origen y el destino.
Para realizar una replicación continua, utilice la tarea de validación exclusiva de CDC. Una tarea de validación exclusiva 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 aparecen e informa de los errores de validación de datos.
Compruebe si hay limitaciones en los datos de origen y destino
Después de identificar los datos que no coinciden, compruebe el origen y el destino para ver si hay limitaciones asociadas a sus tipos de datos. Por ejemplo, cuando usa PostgreSQL como origen, no puede migrar los tipos de datos ENUM.
Comprobar si hay errores en el registro de tareas
Compruebe si hay errores en el registro de tareas en el momento del error de validación. O bien, consulte las tablas de control para ver las excepciones que se registran durante la etapa de replicación de datos.
Resolver datos no coincidentes que haya causado el truncamiento
Cuando utiliza el modo LOB limitado, AWS DMS preasigna memoria en la instancia de replicación. A continuación, AWS DMS utiliza la configuración de la tarea LobMaxSize para cargar los datos de LOB de forma masiva. AWS DMS trunca los LOB que superan el tamaño máximo de LOB y, a continuación, muestra un mensaje de advertencia en el archivo de registro.
Compruebe los archivos de registro para ver si hay mensajes de advertencia que indiquen que los datos se han truncado y, a continuación, compruebe el tamaño máximo de la columna LOB correspondiente. Defina un valor LobMaxSize que sea mayor que el tamaño de la columna LOB para que los datos no se trunquen. Utilice un script de soporte de diagnóstico para buscar las tablas que contengan datos de LOB y, a continuación, consulte el tamaño de la columna LOB.
Si el tamaño máximo de la columna LOB es superior a 100 MB, utilice el modo LOB completo o LOB en línea para detener el truncamiento de los datos de la columna LOB.
Información relacionada
Tareas de validación exclusiva
Configurar la compatibilidad de LOB para las bases de datos de origen en una tarea de AWS DMS