AWS DMS Текущая репликация отстает? - PullRequest
0 голосов
/ 06 сентября 2018

Мы используем AWS DMS для текущей репликации определенных таблиц из одного экземпляра базы данных Oracle RDS в другую базу данных Oracle RDS (обе 11g).

Периодически репликация, кажется, отстает или выходит из строясинхронизации.В журнале нет ошибок, и все сообщается как успешное, но данные отсутствуют.

Мы можем запустить полное обновление, и данные будут отображаться, но это нереальный вариант на обычнойоснова.Это производственная система, и полное обновление занимает более 14 часов

. Мы хотели бы отслеживать, является ли база данных назначения, по крайней мере, в основном, актуальной.Это означает, что не позднее, чем через 2-3 часа.

Я обнаружил, что вы можете получить текущий SCN из исходной базы данных, используя "SELECT current_scn FROM V $ DATABASE" и из цели в "awsdms_txn_state"Таблица.

Однако эта таблица не существует, и я не вижу возможности включить TaskRecoveryTableEnabled при создании или изменении задачи.

Существует ли существующая функция, которая будет автоматически отслеживать эти значения?Можно ли это сделать через Lambda?

Если DMS сообщает об успехе, мы не можем знать, что наши данные отстают на несколько часов или дней до тех пор, пока кто-то не позвонит нам с жалобой.

Я вижувариант в задаче DMS «Включить проверку», но интуиция подсказывает мне, что это приведет к значительному увеличению нежелательных накладных расходов.

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

1 Ответ

0 голосов
/ 27 сентября 2018

Здесь есть несколько вопросов:

  1. Задача Мониторинг задержки CDC
  2. Как установить TaskRecoveryTableEnabled

Для первой задачи Мониторинг предоставляет ряд метрик CloudWatch (см. Все метрики CDC *).

На этих показателях можно увидеть, когда цель не синхронизирована с источником, и где в процессе экземпляра репликации происходят эти изменения. Подробный блог от AWS, объясняющий эти Метрики мониторинга задач , стоит прочитать.

Один из вариантов - установить CloudWatch Alarm на CDCLatencySource.

В качестве альтернативы вы можете создать свою собственную Lambda по расписанию CloudWatch, чтобы выполнять ваши запросы SCN по источнику и цели и выводить пользовательскую метрику CloudWatch с помощью PutMetricData. Вы можете создать CloudWatch Alarm для этой метрики, если они не синхронизированы.

Для второго вопроса, чтобы установить TaskRecoveryTableEnabled через консоль, отметьте опцию «Создать таблицу восстановления на целевой БД»

Create recovery table on target DB

После установки этого флажка вы можете подтвердить, что для TaskRecoveryTableEnabled установлено значение Да, просмотрев вкладку Обзор задачи. Внизу есть Настройки задач json, которые будут выглядеть примерно так:

    "TargetMetadata": {
        "TargetSchema": "",
        "SupportLobs": true,
        "FullLobMode": false,
        "LobChunkSize": 0,
        "LimitedSizeLobMode": true,
        "LobMaxSize": 32,
        "InlineLobMaxSize": 0,
        "LoadMaxFileSize": 0,
        "ParallelLoadThreads": 0,
        "ParallelLoadBufferSize": 0,
        "BatchApplyEnabled": false,
        "TaskRecoveryTableEnabled": true
  }

Task Settings in the console

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...