Сравнение решений высокой доступности для СУБД 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 (поддержка) |
|