Сбой задачи AWS DMS через некоторое время в режиме CDC

У меня возникли проблемы с настройкой задачи миграции данных из базы данных RDS (PostgreSQL, движок 10.15) в корзину S3 в режиме начальной миграции + CDC. Обе конечные точки настроены и успешно протестированы. Я создавал задачу дважды, оба раза она выполнялась не более пары часов, в первый раз начальный дамп прошел нормально и также имели место некоторые инкрементные дампы, во второй раз завершился только первоначальный дамп, а инкрементный дамп не был выполняется до того, как задача не удалась.

Сообщение об ошибке теперь:

Last Error Task 'data-migration-bp-dev' was suspended after 9 successive recovery failures Stop Reason FATAL_ERROR Error Level FATAL_

но сразу после того, как он впервые потерпел неудачу, это было:

Last Error An internal WAL conversational protocol error has occurred. Task error notification received from subtask 0, thread 0 reptask/replicationtask.c:2859 1020452 Error executing source loop; Stream component failed at subtask 0, component st_0_data-migration-rds-bp-dev; Stream component 'st_0_data-migration-rds-bp-dev' terminated reptask/replicationtask.c:2866 1020452 Stop Reason RECOVERABLE_ERROR Error Level RECOVERABLE

В журналах CloudWatch я вижу следующие сообщения об ошибках:

SOURCE_CAPTURE I: Streaming initiated successfully (postgres_pglogical.c:274)
SOURCE_CAPTURE I: #1 : Non-monotonic LSN sequence: Current LSN '00000000/00000000' < Previous LSN '000001E3/94016430'. Event is ignored. (postgres_endpoint_wal_engine.c:710)
SOURCE_CAPTURE I: Unable to resolve attributes for relation id '28804'. Aborting action. (postgres_pglogical.c:1643)
SOURCE_CAPTURE I: End of CDC / CAPTURE events for POSTGRES endpoint. (postgres_endpoint_capture.c:520)
SOURCE_CAPTURE I: CAPTURE ended with exceptions. (postgres_endpoint_capture.c:527)
SOURCE_CAPTURE E: Could not find relation id '28804' in hash. 1020483 (postgres_pglogical.c:1470)
SOURCE_CAPTURE E: Failed to parse relation from dml command 1020483 (postgres_pglogical.c:2515)
SOURCE_CAPTURE E: Failed to find relation id on target while processing message from source 1020452 (postgres_endpoint_wal_engine.c:805)
SOURCE_CAPTURE E: WAL stream loop ended abnormally. (STATUS_PROTOCOL_ERROR) 1020452 (postgres_endpoint_wal_engine.c:992)
SOURCE_CAPTURE E: WAL reader terminated with irrecoverable error. 1020452 (postgres_endpoint_capture.c:496)
TASK_MANAGER I: Task - data-migration-bp-dev is in ERROR state, updating starting status to AR_NOT_APPLICABLE (repository.c:5102)
SOURCE_CAPTURE E: Error executing source loop 1020452 (streamcomponent.c:1870)
TASK_MANAGER E: Stream component failed at subtask 0, component st_0_data-migration-rds-bp-dev 1020452 (subtask.c:1409)
SOURCE_CAPTURE E: Stream component 'st_0_data-migration-rds-bp-dev' terminated 1020452 (subtask.c:1578)
TASK_MANAGER E: Task error notification received from subtask 0, thread 0 1020452 (replicationtask.c:2859)
TASK_MANAGER E: Error executing source loop; Stream component failed at subtask 0, component st_0_data-migration-rds-bp-dev; Stream component 'st_0_data-migration-rds-bp-dev' terminated 1020452 (replicationtask.c:2866)
TASK_MANAGER E: Task 'data-migration-bp-dev' encountered a recoverable error, retry attempt # 0 (repository.c:5184)

Здесь я должен упомянуть, что нам пришлось настроить плагин pglogical и перезапустить базу данных, но в итоге мы получили ошибку, которую мы проигнорировали, поскольку после этой операции запускалась задача DMS.

ERROR: current database is not configured as pglogical node
HINT: create pglogical node first

Связана ли проблема нашей неудачной задачи DMS с настройкой плагина pglogical? Если да, то как мы можем настроить его для работы (наш движок db должен быть совместим с ним, нет?)? А если нет, то как исправить?

Заранее спасибо!


person MKS    schedule 21.05.2021    source источник


Ответы (1)


Если кто-то получит такую ​​же ошибку в будущем, вот что нам сказал технический специалист AWS:

Существует известная (для AWS) проблема с подключаемым модулем pglogical. Решение требует вместо этого использования подключаемого модуля test_decoding.

  1. Принудительно использовать подключаемый модуль test_decoding на конечной точке DMS, указав pluginName = test_decoding в Дополнительные атрибуты подключения
  2. Создайте новую задачу DMS, используя эту конечную точку (использование старой задачи может привести к ее сбою из-за рассинхронизации между задачей и журналами)

Это действительно решило проблему, но мы до сих пор не знаем, в чем проблема на самом деле была с плагином, который настоятельно рекомендуется повсюду в документации DMS (на данный момент).

person MKS    schedule 01.06.2021