Я запускаю две базы данных (PostgreSQL 9.5.7) в конфигурации ведущий/подчиненный. Мое приложение подключается к экземпляру pgpool, который направляется к основной базе данных (и подчиненному для запросов только для чтения).
Теперь я пытаюсь масштабировать некоторые данные в другой экземпляр базы данных только для чтения, содержащий всего несколько таблиц. Это отлично работает при использовании pglogical непосредственно в базе данных master.
Однако если по какой-то причине главный узел переходит в подчиненный, pglogical больше не может выполнять репликацию, поскольку узел находится в режиме ожидания.
Пробовал следующие вещи:
- подписан на ведомом устройстве, так как вероятность того, что оно выйдет из строя или перегреется, меньше: репликация на резервном узле невозможна.
- подписано через сервер pgpool: pgpool не принимает соединения для репликации.
- подписаны на оба сервера: конфигурация pglogical реплицируется, поэтому нельзя дать им разные имена узлов.
Единственное, о чем я сейчас думаю, это написать свой собственный tcp-прокси, который регулярно проверяет состояние сервера, на который я могу подписаться.
Есть ли другой/более простой способ решить эту проблему? Возможно, я использую неправильные инструменты?