BDR (Bi-Directional Replication) для PostgreSQL
BDR (Bi-Directional Replication, двунаправленная репликация) — это расширение для PostgreSQL, которое обеспечивает механизм multi-master (мульти-мастер) репликации и распределения данных. Оно позволяет настроить кластер баз данных, где каждый узел может принимать операции записи (writes), а изменения автоматически синхронизируются со всеми остальными узлами в группе.
Изначально разработанное компанией 2ndQuadrant, BDR создано для обеспечения высокой доступности и работы с географически распределёнными кластерами.
Ключевые принципы и архитектура BDR
BDR основана на логической репликации PostgreSQL, но добавляет важные функции для управления сложной многоузловой средой.
Главные характеристики дистрибутива:
- Multi-Master (Множество Мастеров): В отличие от традиционной потоковой репликации (Master-Standby), где записи принимает только один сервер, в кластере BDR все узлы (ноды) являются активными мастерами. Вы можете записывать данные на любой узел, и изменения будут распространены на остальные.
- Logical Replication (Логическая Репликация): BDR реплицирует изменения на уровне строк данных (DML) и схем (DDL), а не на уровне физических блоков данных. Это более гибкий подход, который позволяет узлам кластера работать на разных версиях программного обеспечения или иметь частичные наборы данных.
- Asynchronous (Асинхронная): По умолчанию BDR использует асинхронную репликацию. Это означает, что транзакция считается завершённой на локальном узле сразу после фиксации (COMMIT), и только потом изменения отправляются на другие узлы. Это обеспечивает низкую задержку, но приводит к тому, что данные на разных узлах могут быть не абсолютно одинаковыми в один и тот же момент времени (т. н. eventual consistency).
- Mesh Topology (Сетчатая Топология): BDR-кластеры обычно строятся по принципу «каждый-с-каждым» (mesh), где каждый узел напрямую соединяется со всеми остальными для обмена данными.
- Conflict Management (Управление Конфликтами): В мульти-мастер системах неизбежно возникают конфликты, когда две разные ноды одновременно изменяют одну и ту же строку. BDR имеет встроенные механизмы для обнаружения и разрешения таких конфликтов (например, с использованием принципа «последняя запись выигрывает» — last-update wins, или более продвинутых методов).
Применение и преимущества BDR
BDR наиболее эффективен в сценариях, требующих максимальной доступности, распределения нагрузки и гео-распределения данных.
Ключевые сценарии использования:
- High Availability (Высокая Доступность): Поскольку все узлы активны, в случае выхода из строя одного сервера, приложение может немедленно переключиться на другой узел без необходимости длительного процесса «повышения» реплики до мастера. BDR позволяет создавать архитектуры Always On.
- Geographically Distributed Data (Гео-распределённые Данные): BDR позволяет размещать узлы кластера в разных дата-центрах или регионах, чтобы приложения могли работать с ближайшим сервером, обеспечивая низкую задержку для конечных пользователей.
- Rolling Upgrades (Скользящие Обновления): Возможность запускать узлы с разными версиями PostgreSQL позволяет проводить обновления программного обеспечения или схемы данных без простоя всего кластера.
Купить и внедрить BDR для PostgreSQL
Для реализации сложных мульти-мастер кластеров на базе BDR, особенно в критически важных корпоративных системах, необходима надёжная техническая поддержка и расширенный функционал, который предлагает EnterpriseDB (EDB) в своём продукте EDB Postgres Distributed (PGD).
Вы можете купить корпоративные решения, включающие BDR, через компанию ЭмПиАй.
12 лет
успешной истории на рынке программного обеспечения и ИТ
2 000 +
наименований доступных продуктов к поставке и внедрению
20+
высококлассных специалистов в штате
300 +
успешно реализованных проектов на территории России и СНГ