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

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

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

Оглавление

29.1. Публикация
29.1.1. Репликационный идентификатор
29.2. Подписка
29.2.1. Управление слотами репликации
29.2.2. Примеры: Настройка Логической Репликации
29.2.3. Примеры: Отложенное создание слота репликации
29.3. Переключение на резервную копию логической репликации
29.4. Фильтры строк
29.4.1. Правила фильтрации строк
29.4.2. Ограничения выражений
29.4.3. ОБНОВИТЬ Преобразования
29.4.4. Таблицы с разделением
29.4.5. Синхронизация начальных данных
29.4.6. Комбинирование нескольких фильтров строк
29.4.7. Примеры
29.5. Списки столбцов
29.5.1. Примеры
29.6. Репликация генерируемых столбцов
29.7. Конфликты
29.8. Ограничения
29.9. Архитектура
29.9.1. Начальный снимок
29.10. Мониторинг
29.11. Безопасность
29.12. Настройки конфигурации
29.12.1. Издатели
29.12.2. Подписчики
29.13. Обновление
29.13.1. Подготовка к обновлению публикующего сервера
29.13.2. Подготовка к обновлению подписчика
29.13.3. Обновление кластеров логической репликации
29.14. Быстрая настройка

Логическая репликация - это метод репликации объектов данных и их изменений на основе их идентификатора репликации (обычно первичного ключа). Мы используем термин "логическая" в отличие от физической репликации, которая использует точные адреса блоков и репликацию байт-в-байт. PostgreSQL поддерживает оба механизма одновременно, см. Глава 26. Логическая репликация позволяет тонко настраивать как репликацию данных, так и безопасность.

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

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

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

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

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

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

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

  • Репликация между экземплярами PostgreSQL на разных платформах

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

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

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