¿Por qué no se vuelve a intentar mi tarea de AWS DMS?

Última actualización 18-08-2022

Tengo una tarea de AWS Database Migration Service (AWS DMS) que se ha detenido y no se vuelve a intentar. ¿Cómo puedo reanudar el funcionamiento de mi tarea de AWS DMS?

Resolución

AWS DMS es un servicio administrado que está diseñado para tener un comportamiento de autorreparación. Esto significa que, cuando se producen problemas, AWS DMS intenta solucionarlo y, a continuación, reanuda las operaciones sin que se tenga que tomar ninguna medida. Sin embargo, hay algunas situaciones en las que la migración se detiene y no se vuelve a intentar.

En primer lugar, es importante comprender los dos tipos de errores que puede encontrar al usar AWS DMS:

  • Errores graves
  • Errores recuperables

Errores graves

Si AWS DMS encuentra un error que impide que continúe con la migración, la tarea se detiene y pasa al estado de ERROR. Esto se denomina error grave. Entre los ejemplos se incluyen:

  • El punto de conexión de origen no está configurado, lo cual es un requisito previo para la migración.
  • La instancia de replicación de AWS DMS no recupera los objetos de origen de la base de datos de origen.

En los registros de tareas, verá mensajes similares a este:

2022-05-28T16:07:35 [TASK_MANAGER    ]E:  Task 'K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA' encountered a fatal error” (2022-05-28T16:07:35 [TASK_MANAGER    ]E:  La tarea 'K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA' encontró un error grave)

Cuando AWS DMS encuentra un error grave, intenta reiniciarse seis veces. Si la tarea ya no se vuelve a intentar, es probable que ya haya completado estos intentos.

Errores recuperables

AWS DMS considera todos los errores de entorno como errores recuperables. Por lo tanto, si una tarea o instancia de replicación encuentra un error de entorno, la tarea se interrumpe, pero se recupera sola y, a continuación, se vuelve a intentar.

Algunos ejemplos de errores recuperables son los siguientes:

  • Se interrumpe la conectividad de la instancia de replicación de AWS DMS con la base de datos de origen o destino.
  • Debido al mantenimiento, la instancia de replicación se reinició.

En los registros de tareas, verá mensajes similares a este:

“Last Error Task error notification received from subtask 0, thread 0 [reptask/replicationtask.c:2673] [1022502] Stop Reason RECOVERABLE_ERROR Error Level RECOVERABLE” (Se recibió la notificación de error de la última tarea de error de la subtarea 0, subproceso 0 [reptask/replicationtask.c:2673] [1022502] Motivo de detención RECOVERABLE_ERROR Nivel de error RECOVERABLE)

De forma predeterminada, una tarea con un error recuperable intenta volver a intentarlo indefinidamente. La configuración RecoverableErrorCount controla este comportamiento. Este parámetro establece el número máximo de intentos que hace AWS DMS para reiniciar una tarea cuando se encuentra con un error de entorno. Después de que el sistema intenta reiniciar la tarea un número determinado de veces, la tarea se detiene y se necesita una intervención manual. El valor predeterminado es -1, que indica a AWS DMS que reinicie la tarea indefinidamente.

Si un error recuperable hace que una tarea se detenga y ya no se vuelva a intentar, verifique si ocurre lo siguiente:

  • El parámetro RecoverableErrorCount se establece en un valor personalizado.
  • La propia instancia de replicación está inactiva.

Verifique si otras configuraciones de valores no predeterminadas impiden los reintentos

Si esta configuración se establece en un valor no predeterminado, es posible que impidan que la tarea de AWS DMS se vuelva a intentar:

"ErrorBehavior": {
        "FailOnNoTablesCaptured": false,
        "ApplyErrorUpdatePolicy": "LOG_ERROR",  --- can be set to STOP_TASK
        "FailOnTransactionConsistencyBreached": false,
        "RecoverableErrorThrottlingMax": 1800,
        "DataErrorEscalationPolicy": "SUSPEND_TABLE",  --- can be set to STOP_TASK
        "ApplyErrorEscalationCount": 0,
        "RecoverableErrorStopRetryAfterThrottlingMax": false,
        "RecoverableErrorThrottling": true,
        "ApplyErrorFailOnTruncationDdl": false,
        "DataTruncationErrorPolicy": "LOG_ERROR",  --- can be set to STOP_TASK
        "ApplyErrorInsertPolicy": "LOG_ERROR",  --- can be set to STOP_TASK
        "EventErrorPolicy": "IGNORE",
        "ApplyErrorEscalationPolicy": "LOG_ERROR",  --- can be set to STOP_TASK
        "RecoverableErrorCount": -1,
        "DataErrorEscalationCount": 0,
        "TableErrorEscalationPolicy": "STOP_TASK",
        "RecoverableErrorInterval": 5,
        "ApplyErrorDeletePolicy": "IGNORE_RECORD",  --- can be set to STOP_TASK
        "TableErrorEscalationCount": 0,
        "FullLoadIgnoreConflicts": true,
        "DataErrorPolicy": "LOG_ERROR",
        "TableErrorPolicy": "SUSPEND_TABLE"
    },

Error handling task settings (Configuración de tareas de gestión de errores)

Troubleshooting migration tasks in AWS Database Migration Service (Solución de problemas de las tareas de migración en AWS Database)

¿Le resultó útil este artículo?


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