5
Публикации и подписки
Публикация
включает одну или несколько таблиц базы данных
обрабатывает команды INSERT, UPDATE, DELETE, TRUNCATE
выдает изменения построчно после фиксации транзакции
использует слот логической репликации
Подписка
получает и применяет изменения
возможна начальная синхронизация
без разбора, переписывания и планирования — сразу выполнение
возможны конфликты с локальными данными
Логическая репликация использует модель «публикация-подписка».
На одном сервере создается публикация, которая может включать ряд
таблиц одной базы данных. Другие серверы могут подписываться на
эту публикацию: получать и применять изменения.
Реплицируются только измененные строки таблиц (а не команды SQL).
Команды DDL не передаются; таблицы-приемники на подписчике надо
создавать вручную. Но есть возможность автоматической начальной
синхронизации содержимого таблиц при создании подписки.
После фиксации транзакции информация о строках, которые она
изменила, извлекается из записей WAL на стороне публикации – эта
процедура называется логическим декодированием. Сформированные
сообщения пересылаются подписке по протоколу репликации
в формате, независимом от платформы и версии сервера.
Для каждой подписки на ее стороне запускается процесс logical
replication worker, он применяет полученные сообщения. При этом не
требуется выполнять разбор, переписывание и планирование, поэтому
применение происходит эффективно.