У меня есть два сервера Linux (A
и B
) с установленной базой данных PostgreSQL 9.5
. Я настроил режим горячего режима ожидания, как описано в документации. В этой настройке A
настраивается как ведущий, B
в режиме горячего ожидания. Это работает хорошо и ведет себя так, как ожидалось.
Теперь я хочу подключить независимое приложение Java EE
(работающее на другой машине) через Hibernate
/JDBC
через источник данных TomEE
для этой базы данных.
В документации PostgreSQL указано, что в URL-адресе подключения jdbc указывается несколько хостов:
jdbc:postgresql://host1:port1,host2:port2/database
Итак, мои вопросы:
- Если
A
выключено иB
переключается вручную в обычный режим работы, мое приложение все еще может продолжить работу с базой данных с помощью URL-адреса соединения jdbc, как указано выше? - Нужно ли мне настраивать другие параметры/библиотеки?
Примечание. Из разных источников я узнал, что PostgreSQL
не поддерживает автоматический переход на другой ресурс (если в процесс не участвует стороннее программное обеспечение - см. комментарии ниже). По этой причине отказоустойчивость должна выполняться вручную, что подходит для этого конкретного случая использования.
РЕДАКТИРОВАТЬ-1:
Я решил протестировать pgBouncer
(как предложено в комментариях) для обходного пути. Это хорошо работает для моего прецедента. Я написал сторожевой таймер script, который автоматизирует шаги руководства:
- Непрерывно проверяйте, если
A
все еще жив и прослушивает входящие соединения. - В случае перехода на другой ресурс переключите
B
в обычный режим работы и позвольте ему стать новым мастером и перезапустите службу. - Измените настройки
pgBouncer
, чтобы указатьB
вместоA
и перезапустить службу.
Тем не менее, меня все равно интересовало бы, если у кого-нибудь есть опыт без стороннего программного обеспечения?