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

Содержание

29.1. Публикация
29.2. Подписка
29.2.1. Управление слотами репликации
29.2.2. Примеры: настройка логической репликации
29.2.3. Примеры: отложенное создание слота репликации
29.3. Фильтры строк
29.3.1. Правила фильтров строк
29.3.2. Ограничения выражений
29.3.3. Преобразования UPDATE
29.3.4. Секционированные таблицы
29.3.5. Начальная синхронизация данных
29.3.6. Объединение нескольких фильтров строк
29.3.7. Примеры
29.4. Списки столбцов
29.5. Конфликты
29.6. Ограничения
29.7. Архитектура
29.8. Мониторинг
29.9. Безопасность
29.10. Параметры конфигурации
29.10.1. Публикующие серверы
29.10.2. Подписчики
29.11. Быстрая настройка

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

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

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

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

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

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

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

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

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

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

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

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