Администрируем
Oracle, SQL Server, PostgreSQL

Логическая репликация в PostgreSQL

Логическая репликация в PostgreSQL — мощный инструмент, который позволяет гибко управлять копированием данных между базами.
Она представляет собой механизм передачи данных между серверами с возможностью выборочного синхронизации таблиц, что позволяет избежать передачи всей базы данных.
В отличие от физической репликации, которая работает с полными копиями данных, логическая репликация работает на уровне логических изменений (например, вставки, обновления, удаления записей) и может быть настроена для работы с конкретными таблицами.
Логическая репликация обеспечивает более широкий контроль над процессом синхронизации, что делает её удобным решением для разнообразных бизнес-задач.

Особенности логической репликации PostgreSQL

Логическая репликация PostgreSQL строится на уровне SQL-команд. Это значит, что вместо копирования данных на уровне блока файлов, как в физической репликации, здесь передаются изменения в виде отдельных операций: INSERT, UPDATE, DELETE, а начиная с версии 15 — и TRUNCATE
Основное преимущество логической репликации заключается в её гибкости. Она позволяет синхронизировать данные между:
  • разными версиями PostgreSQL;
  • серверами в разных сетях;
  • отдельными таблицами, а не всей базой данных.
Кроме того, логическая репликация поддерживает архитектуру "один к многим" или "многие к одному". Например, можно отправлять данные с основного сервера сразу нескольким репликам, либо агрегировать данные с нескольких источников в одну целевую базу.
Репликация также возможна между разными версиями PostgreSQL, разными операционными системами и аппаратными архитектурами.
При настройке логической репликации важно учитывать, что мастер-сервер отправляет изменения данных на подписчиков, сохраняя транзакционную целостность, а также может быть использован для двусторонней репликации между серверами​.
Начиная с версии 16, включена поддержка двунаправленной логической репликации, которая позволяет реплицировать данные между двумя таблицами на разных публикующих серверах.

Какие задачи решает логическая репликация?

Основные сценарии, где она применяется:
  1. Миграция данных между версиями PostgreSQL. Логическая репликация позволяет передавать данные между разными версиями PostgreSQL, что значительно упрощает обновления.
  2. Объединение или разделение данных. Вы можете настроить репликацию так, чтобы синхронизировать только определённые таблицы или их части.
  3. Географически распределённые системы. Репликация между серверами в разных сетях упрощает работу распределённых приложений.
  4. Обновление без остановки. Логическая репликация позволяет плавно мигрировать данные и приложения, минимизируя простои.
Мы в ДБ-Сервис часто используем логическую репликацию PostgreSQL для реализации этих сценариев обновления данных у наших клиентов. Это очень полезно, когда нужно синхронизировать данные для аналитических целей или при необходимости объединения баз.

Возможности и ограничения

Возможности:
  • Точное управление данными. Логическая репликация позволяет настраивать синхронизацию на уровне отдельных строк или таблиц.
  • Совместимость с несколькими версиями PostgreSQL. Например, вы можете настроить репликацию между PostgreSQL 13 и 15.
  • Снижение нагрузки на сеть. Возможность выбора только части объектов для репликации позволяет не нагружать БД.
  • Поддержка стандартных команд SQL. Используются привычные SQL-операции, что упрощает интеграцию в существующие приложения.
Основные ограничения:
  1. Не поддерживает системные таблицы и некоторые типы данных, такие как большие объекты (Large Objects).
  2. Производительность может быть ниже, чем у физической репликации, из-за необходимости обработки каждой транзакции.
  3. Требует настройки публикации и подписки, что усложняет внедрение по сравнению с физической репликацией.
  4. Не поддерживаются инструкции DDL (изменения схемы).
  5. Триггеры не исполняются на подписчиках.
  6. Последовательности не синхронизируются.
Специалисты ДБ-Сервис помогают клиентам учитывать эти ограничения при проектировании архитектуры баз данных.

Как специалисты ДБ-Сервис настраивают логическую репликацию PostgreSQL?

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

Публикация может включать одну или несколько таблиц, и её настройки могут быть изменены в дальнейшем. Публикация настраивается только на основном сервере, и она отвечает за отправку изменений.
Далее создаются восстановление схемы данных на подписчиках, а также таблицы, подлежащие репликации.
2. Создание подписки на подписчиках
После создания публикации на основном сервере необходимо настроить подписку на подписчике. Подписка — это механизм, через который подписчик будет получать данные из основного сервера.
3. Мониторинг состояния репликации
После настройки логической репликации важно следить за её состоянием, чтобы удостовериться, что данные синхронизируются корректно. Для этого можно использовать команды SQL для мониторинга статуса подписки.
4. Проверка синхронизации данных
Чтобы убедиться, что данные полностью синхронизированы, можно использовать запросы к системным таблицам PostgreSQL.

Если количество строк в таблице показывает, что процесс синхронизации завершён, можно считать, что данные на реплицируемом сервере идентичны данным на основном.
Логическая репликация PostgreSQL — это универсальный инструмент для сложных задач: от миграций до масштабирования систем.

Мы в ДБ-Сервис помогаем настроить логическую репликацию PostgreSQL на всех этапах — от проектирования до тестирования.

Обратившись к специалистам ДБ-Сервис, вы получите профессиональную настройку и поддержку PostgreSQL. Мы поможем использовать её возможности на максимум, исключая ошибки и недочёты.

Эксперт ДБ-сервис