Настройка репликации из нескольких источников в один приемник с помощью технической таблицы#
Настраивать репликацию могут пользователи с правами 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)+1.
При каждом применении транзакции на БД приемнике выполняется команда обновления таблицы:
```
update "$GRADELY_APPLY_POSITION$" set trx_id = ?, internal_id = ? where source_id = ? and thread_id=0
```
В случае переключения БД-лидера (switchover), идентификатором источника будет выступать новая БД.
При таком сценарии модуль APPLIER добавляет новую строку в техническую таблицу, а в старой строке обновляет поле trx_id=-1, чтобы показать, что из этого источника применение прекращено.
Последовательность выполнения#
Для запуска репликации из нескольких источников в один приемник:
Убедитесь, что у вас создана техническая таблица
$GRADELY_APPLY_POSITION$. Как создать техническую таблицу описано в «Руководстве по установке», разделе «Установка» → «Порядок установки», пункт 12.Создайте на сервере-источнике слот публикации и публикацию для каждого источника:
SELECT * FROM pg_create_logical_replication_slot('{имя слота}', 'pgoutput'); CREATE PUBLICATION for table {имя_публикации}`Создайте соединения для каждой БД-источника, указав для каждого соединения слот и публикацию из пункта 2.
Создайте граф репликации с несколькими источниками, модулями Capture, Kafka, модулями Applier и одним приемником.
Запустите граф репликации.

