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