Сравнение решений высокой доступности для СУБД Postgres Pro
Функциональность
| Postgres Pro BIHA | Postgres Pro Multimaster | Corosync/Pacemaker | Patroni | |
|---|---|---|---|---|
| Область применения | Реляционная СУБД со встроенной отказоустойчивостью и катастрофоустойчивостью. | Реляционная СУБД со встроенной отказоустойчивостью. | Реляционная СУБД с отказоустойчивостью и катастрофоустойчивостью . | Реляционная СУБД с отказоустойчивостью и катастрофоустойчивостью. |
| Конфигурация узла кластера |
Физический сервер или виртуальная машина. Узел рефери может использоваться для хранения WAL журналов. |
Физический сервер или виртуальная машина. |
Физический сервер или виртуальная машина. |
Физический сервер или виртуальная машина. |
|
Схемы построения |
Узлы кластера могут располагаются на разных площадках. |
Все узлы кластера располагаются на одной площадке. |
Узлы кластера могут располагаются на разных площадках. |
Узлы кластера могут располагаются на разных площадках. |
|
Распределение нагрузки между узлами кластера |
БД доступна в режиме чтения-записи на основном узле и в режиме только чтения на резервном узле. |
БД доступна в режиме чтения-записи на всех узлах кластера. |
БД доступна в режиме чтения-записи на основном узле и в режиме только чтения на резервном узле. |
БД доступна в режиме чтения-записи на основном узле и в режиме только чтения на резервном узле. |
|
Репликация данных |
Репликация блоков данных БД. Реплицируются все БД экземпляра Postgres. |
Репликация данных БД. Синхронная репликация одной БД экземпляра Postgres. |
Репликация блоков данных БД. Реплицируются все БД экземпляра Postgres. |
Репликация блоков данных БД. Реплицируются все БД экземпляра Postgres. |
|
Возможность создания узла рефери без СУБД, для двух узловых конфигураций |
Да, может использоваться как синхронное/асинхронной хранилище WAL журналов/ |
Да. |
Да |
Да |
|
Необходимость использования внешнего устойчивого к сбоям хранилища ключ-значение (key-value) |
Нет |
Нет |
Нет |
Да |
Администрирование
|
Postgres Pro BIHA |
Postgres Pro Multimaster |
Corosync/Pacemaker |
Patroni |
|
|---|---|---|---|---|
|
Автоматизация и время переключения |
Переключение на резервный узел отказоустойчивого кластера выполняется автоматически, катастрофоустойчивого кластера вручную. Время переключения на основе проведенных тестов: - switchover/failover ~ 10-15 секунд. |
Switchover/failover как таковой не требуется, при отказе узла сразу переключаемся на следующий работоспособный узел. |
Переключение на резервный узел отказоустойчивого кластера выполняется автоматически, катастрофоустойчивого кластера вручную. Время переключения на основе проведенных тестов: - switchover/failover ~ 30-40 секунд |
Переключение на резервный узел отказоустойчивого кластера выполняется автоматически, катастрофоустойчивого кластера вручную. Время переключения на основе проведенных тестов: - switchover/failover ~ 30-40 секунд |
|
Статус БД на узлах кластера |
В любой момент времени известен статус БД на всех узлах кластера. |
В любой момент времени известен статус БД на всех узлах кластера. |
В любой момент времени известен статус БД на всех узлах кластера. |
В любой момент времени известен статус БД на всех узлах кластера. |
|
Unlogged объекты/операции |
Необходимо использовать режим logged. |
Необходимо использовать режим logged. |
Необходимо использовать режим logged. |
Необходимо использовать режим logged. |
|
Установка обновлений БД |
Требуется остановка БД. |
Обновление минорных версий ПО СУБД и одиночных исправлений (patches) не требуют остановки БД. |
Требуется остановка БД. |
Требуется остановка БД. |
Приложения
|
Postgres Pro BIHA |
Postgres Pro Multimaster |
Corosync/Pacemaker |
Patroni |
|
|---|---|---|---|---|
|
Единая точка подключения к кластеру БД из приложения может обеспечиваться: |
- перечислением всех узлов кластера в строке подключения специального драйвера (libpq, jdbc, odbc) - балансировщиком нагрузки - DNS |
- перечисление всех узлов кластера в строке подключения через специальный драйвер (libpq, jdbc, odbc) |
- перечислением всех узлов кластера в строке подключения специального драйвера (libpq, jdbc, odbc) - балансировщиком нагрузки - DNS - использование виртуального IP-адрес |
- перечислением всех узлов кластера в строке подключения специального драйвера (libpq, jdbc, odbc) - балансировщиком нагрузки - DNS - использование виртуального IP-адрес |
|
Необходимость изменения кода приложения для использования HA решения |
Нет |
Да |
Нет |
Нет |
Сеть
|
|
Postgres Pro BIHA |
Postgres Pro Multimaster |
Corosync/Pacemaker |
Patroni |
|---|---|---|---|---|
|
Сеть передачи данных |
Необходимо LAN- соединение на площадке и между площадками, с определённой пропускной способностью и временно́й задержкой для передачи изменений данных БД. |
Необходимо LAN- соединение на площадкае, с определённой пропускной способностью и временно́й задержкой для передачи изменений данных БД. |
Необходимо LAN- соединение на площадке и между площадками, с определённой пропускной способностью и временно́й задержкой для передачи изменений данных БД. |
Необходимо LAN- соединение между площадками, с определённой пропускной способностью и временно́й задержкой для передачи изменений данных БД. |
|
Требование к пропускной способности сети передачи данных |
Определяется объемом изменений в системе, для оценки требуется тестирование. |
Определяется объемом изменений в системе, для оценки требуется тестирование. |
Определяется объемом изменений в системе, для оценки требуется тестирование. |
Определяется объемом изменений в системе, для оценки требуется тестирование. |
|
Требование к временно́й задержке сети передачи данных |
Для оценки требуется тестирование. (*) |
Для оценки требуется тестирование. (*) |
Для оценки требуется тестирование. (*) |
Для оценки требуется тестирование. (*) |
|
Сетевое соединение на уровне L2 (Data Link Layer) между узлами кластера |
Не требуется |
Не требуется |
Требуется |
Не требуется |
* - на основании практического опыта предварительная оценка максимального значения временно́й задержки в сети передачи данных ~5 мс
Аварийные сценарии
|
|
Postgres Pro BIHA |
Postgres Pro Multimaster |
Corosync/Pacemaker |
Patroni |
|---|---|---|---|---|
|
Сетевой сбой между узлами кластера или между площадками. |
Используется встроенный механизм сетевых heartbeats для исключения узла/ узлов кластера из кластерной конфигурации. |
Используется встроенный механизм сетевых heartbeats для исключения узла/ узлов кластера из кластерной конфигурации. |
Для защиты от ‘split-brain’ используются Fencing Agents (механизм STONITH). I/O Fencing может быть реализован с использованием устройств IPMI, PDU, UPS, LAN/SAN switch. |
Для защиты от split-brain используются арбитры кластера и агенты Postgres. Для Patroni - DCS, Patroni- агент, Patroni-bot (Postgres - агент). |
|
Потеря БД на одном из узлов кластера. |
Для восстановления БД на резервном узле кластера необходимо восстановление из последней резервной копии, применение всех необходимых журнальных файлов и синхронизация с основной БД. |
Для восстановления БД на одном из узлов кластера необходимо восстановление из последней резервной копии, применение всех необходимых журнальных файлов и синхронизация с доступной БД. |
Для восстановления БД на резервном узле кластера необходимо восстановление из последней резервной копии, применение всех необходимых журнальных файлов и синхронизация с основной БД. |
Для восстановления БД на резервном узле кластера необходимо восстановление из последней резервной копии, применение всех необходимых журнальных файлов и синхронизация с основной БД. |
|
Недоступность (сбой или установка обновлений) одного из узлов кластера. |
Репликация данных останавливается. После восстановления резервного узла его БД автоматически или вручную синхронизируется с основной БД. |
Репликация данных останавливается. После восстановления узла его БД автоматически или вручную синхронизируется с доступной БД.
|
Репликация данных останавливается. После восстановления резервного узла его БД автоматически или вручную синхронизируется с основной БД. |
Репликация данных останавливается. После восстановления резервного узла его БД автоматически или вручную синхронизируется с основной БД. |
Дополнительно
|
Postgres Pro BIHA |
Postgres Pro Multimaster |
Corosync/Pacemaker |
Patroni |
|
|---|---|---|---|---|
|
Поддержка ОС |
Linux |
Linux |
Linux |
Linux и Windows. |
|
Поддержка версии Postgres |
16 и выше |
9-16 |
9-16 |
9-16 |
|
Лицензирование |
Postgres Pro Enterprise (лицензии/поддержка) |
Postgres Pro Enterprise (лицензии/поддержка) |
Postgres Pro Enterprise (лицензии/поддержка) или Postgres Pro Standard (лицензии/поддержка) или PostgreSQL (поддержка) + Corosync / Pacemaker (поддержка) |
Postgres Pro Enterprise (лицензии/поддержка) или Postgres Pro Standard (лицензии/поддержка) или PostgreSQL (поддержка) + Patroni (поддержка) |
|
|