Как балансировать запросы на чтение между репликами, если на уровне приложения разделить запросы на чтение и запись невозможно?
Здравствуйте!
Есть PostgreSQL 15 с потоковой репликацией, мастер и одна реплика.
С помощью какого инструмента можно балансировать читающие запросы между мастером и репликой, чтобы хоть как-то разгрузить мастер от частых коротких запросов, при условии что это не поддерживается на стороне приложения совсем. Приложение - "черный ящик" и подключается к СУБД под одним единственным пользователем, из под которого происходит как запись, так и чтение.
Как будто под эту задачу подходит Pgpool-II, но может есть кроме него еще какой-то подход? Как я понял, ему придется парсить все запросы, которых очень много и он будет потреблять все свободные серверные ресурсы, а возможно во время пиковой нагрузки и вовсе не будет успевать это делать.
На самом деле вы можете даже сломать бизнес-логику "черного ящика" если будете
его балансировать между primary / replica на основании своих придуманных правил.
Поэтому владелец "черного ящика" должен быть поставлен в известность о том что вы
делаете и он должен выразить согласие с этой оптимизацией.