Глава 28. Логическая репликация

Содержание

28.1. Публикация
28.2. Подписка
28.2.1. Управление слотами репликации
28.2.2. Примеры: настройка логической репликации
28.2.3. Примеры: отложенное создание слота репликации
28.3. Отработка отказа логической репликации
28.4. Фильтры строк
28.4.1. Правила фильтров строк
28.4.2. Ограничения выражений
28.4.3. Преобразования UPDATE
28.4.4. Секционированные таблицы
28.4.5. Начальная синхронизация данных
28.4.6. Объединение нескольких фильтров строк
28.4.7. Примеры
28.5. Списки столбцов
28.6. Репликация генерируемых столбцов
28.7. Конфликты
28.8. Ограничения
28.9. Архитектура
28.10. Мониторинг
28.11. Безопасность
28.12. Параметры конфигурации
28.12.1. Публикующие серверы
28.12.2. Подписчики
28.13. Обновление
28.13.1. Подготовка обновления публикующего узла
28.13.2. Подготовка к обновлению подписчиков
28.13.3. Обновление кластеров логической репликации
28.14. Быстрая настройка

Логическая репликация — это метод репликации объектов данных и изменений в них, использующий репликационные идентификаторы (обычно это первичный ключ). Мы называем такую репликацию «логической», в отличие от физической, которая построена на точных адресах блоков и побайтовом копировании. Postgres Pro поддерживает оба механизма одновременно; см. Главу 25. Логическая репликация позволяет более детально управлять репликацией данных и аспектами безопасности.

В логической репликации используется модель публикаций/подписок с одним или несколькими подписчиками, которые подписываются на одну или несколько публикаций на публикующем узле. Подписчики получают данные из публикаций, на которые они подписаны, и могут затем повторно опубликовать данные для организации каскадной репликации или более сложных конфигураций.

Когда логическая репликация таблицы обычно начинается, PostgreSQL создаёт снимок данных таблицы в публикуемой базе данных и копирует её подписчику. После этого изменения на стороне публикации, начиная с первоначальной копии, непрерывно передаются подписчику. Подписчик применяет изменения в том же порядке, что и узел публикации, так что для публикаций в рамках одной подписки гарантируется транзакционная целостность. Этот метод репликации данных иногда называется транзакционной репликацией.

Типичные сценарии использования логической репликации:

  • Передача подписчикам инкрементальных изменений в одной базе данных или подмножестве базы данных, когда они происходят.

  • Срабатывание триггеров для отдельных изменений, когда их получает подписчик.

  • Объединение нескольких баз данных в одну (например, для целей анализа).

  • Репликация между разными основными версиями Postgres Pro.

  • Репликация между экземплярами Postgres Pro на разных платформах (например, с Linux на Windows)

  • Предоставление доступа к реплицированным данным другим группам пользователей.

  • Разделение подмножества базы данных между несколькими базами данных.

База данных подписчика функционирует так же, как и любой другой экземпляр базы Postgres Pro, и может стать публикующей, если создать публикации в ней. Когда подписчик действует как исключительно читающее приложение, никаких конфликтов с одной подпиской не будет. Но они могут возникнуть, если в тот же набор таблиц производят запись какие-либо приложения или другие подписчики.