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

Для перезапуска графа репликации с позиции 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.

Результат#

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