Перейти к основному содержимому

Настройка репликации из нескольких источников в один приемник с помощью технической таблицы

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

Для репликации данных из нескольких источников в один приемник GraDeLy использует техническую таблицу $GRADELY_APPLY_POSITION$.

При репликации из нескольких источников количество строк таблицы будет определяться количеством источников транзакции и количеством модулей Applier в каждом потоке (если в репликации участвует один модуль Applier, то thread_id=0).

Таким образом, для определения места начала репликации GraDeLy ориентируется на source_id, указывающий строку и БД-источник, и trx_id, содержащий идентификатор транзакции GraDeLyID.

Если в таблице есть запись с идентификаторами source_id и trx_id, то модуль Applier начинает применение изменений из trail-файла со значения на единицу больше текущего GraDeLyID (поле trx_id).

При каждом применении транзакции на БД приемнике выполняется команда обновления таблицы:

update "$GRADELY_APPLY_POSITION$" set trx_id = ?, internal_id = ? where source_id = ? and thread_id=0

В случае переключения БД-лидера (switchover), идентификатором источника будет выступать новая БД.

При таком сценарии модуль APPLIER добавляет новую строку в техническую таблицу, а в старой строке обновляет поле trx_id=-1, чтобы показать, что из этого источника применение прекращено.

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

Для запуска репликации из нескольких источников в один приемник:

  1. Убедитесь, что у вас создана техническая таблица $GRADELY_APPLY_POSITION$. Как создать техническую таблицу описано в разделе Подготовка окружения воркеров документа Руководство по установке.

  2. Создайте на сервере-источнике слот публикации и публикацию для каждого источника:

    SELECT * FROM pg_create_logical_replication_slot('<slot_name>', 'pgoutput');
    CREATE PUBLICATION for table <publication_name>
  3. Создайте соединения для каждой БД-источника, указав для каждого соединения слот и публикацию из пункта 2.

  4. Создайте граф репликации с несколькими источниками, модулями Capture, Kafka, модулями Applier и одним приемником.

    Схема сложного графа

  5. Запустите граф репликации.

    Схема сложного графа

Результат​

Граф работает.