¿Por qué AWS DMS no migró los datos de mi punto de enlace de origen de Amazon S3 aunque mi tarea de AWS DMS se realizó correctamente?

5 minutos de lectura
0

Mi tarea de AWS Database Migration Service (AWS DMS) se ha realizado correctamente, pero no migra los datos de mi punto de enlace de origen de Amazon Simple Storage Service (Amazon S3). Quiero solucionar este problema.

Resolución

Hay varios motivos por los que una tarea de AWS DMS se realiza correctamente pero no migra los datos. Complete la resolución de su caso de uso.

El estado de la tarea es «Carga completa, replicación en curso», pero la tarea de AWS DMS no carga datos en el objetivo

Confirme que la ruta de S3 que definió para el punto de enlace de origen es correcta. En el registro de replicación, identifique las entradas que muestran que AWS DMS no puede encontrar los archivos de datos en la ruta de S3.

Ejemplo de entrada de registro de replicación:

[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)

Amazon S3 almacena el archivo de datos para la fase de carga completa (data.csv) y el archivo de datos para los cambios en curso (change_data.csv) en el siguiente formato:

  • S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
  • S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv

Para encontrar los archivos de datos, el punto de enlace de origen de S3 utiliza los campos de la carpeta del bucket, la ruta de captura de datos de cambios (CDC) y la estructura de la tabla.

En las rutas de archivo del ejemplo anterior, dms-folder/sub-folder es la carpeta del bucket. La ruta de CDC que introduce al crear el punto de enlace de origen de S3 es dms-cdc-path/dms-cdc-sub-path.

Ejemplo de estructura de tabla que usa la ruta de archivo de ejemplo:

{
  "TableCount": 1,
  "Tables": [
    {
      "TableColumns": […],
      "TableColumnsTotal": "1",
      "TableName": "dms_table",
      "TableOwner": "dms_schema",
      "TablePath": "dms_schema/dms_table/"
    }
  ]
}

Importante: No incluya la ruta de la carpeta del bucket dms-folder/sub-folder en la TablePath de la estructura de la tabla.

Al especificar la configuración del punto de enlace, la carpeta del bucket es opcional. Si especifica una carpeta del bucket, la ruta CDC y TablePath deben estar en la misma carpeta en Amazon S3. Si no especifica la carpeta del bucket, la ruta de TablePath y CDC se encuentran directamente debajo del bucket de S3.

La carpeta del bucket para el punto de enlace de origen de S3 puede ser cualquier directorio de carpetas entre el nombre del bucket y el nombre del esquema de la estructura de la tabla. En la estructura de la tabla del ejemplo anterior, el directorio de carpetas es dms-schema. Si no tiene una jerarquía de carpetas en el bucket, deje el campo en blanco.

Nota: Las carpetas del bucket y las rutas de CDC pueden ser carpetas individuales o pueden incluir subcarpetas, como dms-folder o dms-folder/sub-folder.

Si la configuración de tareas de DMS usa un punto de enlace de origen de S3, debe incluir el esquema y la tabla en la asignación de tablas. El esquema y la tabla son necesarios para migrar correctamente los datos al objetivo. Para obtener más información, consulte Definición de tablas externas para Amazon S3 como origen de AWS DMS.

Si usa Eliminar tablas en el objetivo como modo de preparación de tablas para la tarea, DMS crea la tabla objetivo dms_schema.dms_table.

Ejemplo de comando de creación de tablas objetivo:

CREATE TABLE 'dms_schema'.'dms_table' (...);

Nota: Los nombres de carpetas y objetos en Amazon S3 distinguen mayúsculas de minúsculas. Utilice las mayúsculas y minúsculas correctas al especificar los nombres de carpetas y objetos en el punto de enlace de S3.

El estado de la tarea es «Carga completa, replicación en curso», pero no hay ninguna tabla en la sección de estadísticas de la tabla

Cuando utiliza el modo Eliminar tablas en el objetivo, es posible que AWS DMS no cree una tabla en el punto de enlace objetivo. Este problema puede deberse a una ruta de S3 incorrecta o a un tipo de datos no compatible.

Confirme que la ruta de S3 para el punto de enlace de origen es correcta. A continuación, compruebe que el punto de enlace de S3 admite el tipo de datos.

Compruebe si el filtro que definió la asignación de tablas de su tarea de DMS está causando la falta de tablas. Asegúrese de haber definido la tabla requerida en la asignación de tablas de tareas en la estructura de tablas del punto de enlace de origen de S3.

El estado de la tarea es «En ejecución» y la tarea de DMS creó la tabla en el punto de enlace objetivo, pero no cargó los datos

Si AWS DMS no puede obtener los datos de la ruta de S3, utilice el registro de replicación para encontrar los errores. Para obtener registros detallados, cambie el nivel de registro de SOURCE_CAPTURE de Predeterminado a Depuración detallada.

Ejemplo de registro:

[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
                status = 4 (FAILED) [1001730] (transfer_client.cpp:592)

Recibe el error «No hay cuerpo de respuesta» en el registro de replicación

El error No hay cuerpo de respuesta se produce cuando el rol de AWS Identity and Access Management (IAM) para el punto de enlace de origen de S3 no tiene los permisos correctos. Para resolver este problema, confirme que el archivo de datos existe en la ruta de S3 que aparece en el mensaje de error. A continuación, confirme que el usuario de IAM tiene permisos para s3:GetObject.

Nota: Si ha activado el control de versiones en el bucket de origen, también debe conceder el permiso s3:GetObjectVersion.

Información relacionada

Uso de Amazon S3 como origen de AWS DMS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un mes