Перезапуск графа репликации с позиции с помощью технической таблицы#

Перезапускать репликацию могут пользователи с правами APPADMIN и APPDUTY.

Для перезапуска графа репликации с позиции GraDeLy использует собственный идентификатор транзакций GraDeLyID. Идентификатор записывается в Kafka в столбцы key и value, в столбец trx_id технической таблицы, если создана и участвует в репликации.

Чтобы гарантировать корректный перезапуск модуля GraDeLy, в базе данных создается техническая таблица $GRADELY_APPLY_POSITION$, содержащая GraDeLyID, идентификатор последней примененной транзакции. Таблица содержит единственную строку уникального SourceID, значение в которой обновляется после каждой выполненной транзакции.

Столбцы таблицы:

  • thread_id — идентификатор строки;

  • source_id — идентификатор строки и БД источника (первичный ключ), с которого пришла транзакция;

  • trx_id — идентификатор транзакции GraDeLyID;

  • internal_id — идентификатор, формируемый источником: в PostgreSQL это lsn, в Oracle — CommitSCN.

Как создать техническую таблицу описано в «Руководстве по установке», разделе «Установка» → «Порядок установки», пункт 12.

Последовательность выполнения#

Для перезапуска графа с GraDeLyID из технической таблицы:

  1. Откройте на стенде вкладку Соединения.

  2. Выберите соединение Target и нажмите значок Соединения, Значок карандаша рядом с названием соединения и выберите Редактировать в открывшемся меню.

    Графы репликации, Перезапуск графа

  3. Пропишите "apply_position_schema" : "{имя_схемы}" в поле Опции в открывшемся окне Редактирование свойств соединения.

    Графы репликации, Перезапуск графа

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

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

  4. Нажмите Сохранить.

  5. Откройте вкладку Графы репликации и запустите граф.

    Теперь GraDeLyID, идентификатор последней примененной транзакции, записывается в техническую таблицу.

  6. Для перезапуска графа после остановки выберите модуль применителя на схеме графа, который нужно перезапустить.

    Соединения, Редактирование модуля

  7. Нажмите Соединения, Редактирование модуля в открывшемся окне Модуль.

    Соединения, Редактирование модуля

    Репликация запустится с последнего записанного в техническую таблицу значения GraDeLyID + 1.

Результат#

Репликация возобновилась. Граф работает.