postgres перенаправляет запросы в режим ожидания?

Я пытаюсь создать систему пула соединений с балансировкой нагрузки. Из того, что я понимаю, PGbouncer не имеет опции балансировки нагрузки, и все, что я могу сделать, это создать файл со всеми пользователями + передать и настроить базы данных / кластеры. но в этом варианте я не могу направить подключения к конкретному кластеру. Я объясню: вставки пойдут в первичный, а выбор - в подчиненный. что возможно, так это позволить пользователю user1 подключаться к кластеру через порт 5432 к базе данных 123 DB.

Как я могу перенаправить запросы в режим ожидания с помощью других инструментов? Я пытался сделать это с помощью pgpool, но по какой-то причине резервный режим всегда находится в состоянии ожидания - ›Невозможно настроить pgpool с ведущими и ведомыми узлами


person hello    schedule 22.12.2020    source источник


Ответы (1)


По оператору SQL невозможно сказать, изменит он данные или нет. А что насчет SELECT delete_my_data();?

Таким образом, все инструменты, которые пытаются выяснить это, глядя на оператор SQL, потенциально проблематичны.

Лучшее, что вы можете сделать, - это написать свое приложение так, чтобы оно использовало два источника данных: один для чтения и один для записи, и вы сами определяете, что куда идет.

person Laurenz Albe    schedule 22.12.2020
comment
О, я не думал о вызове функции с выбранными состояниями .... вы правы. Но в любом случае, как я могу настроить pgpool для перевода всего выбора в режим ожидания? Похоже, это не работает. когда я запускаю show pool_nodes; Я вижу, что выбран счетчик, и все переходит в главное .... - person hello; 23.12.2020
comment
Я недостаточно знаю о pgPool, чтобы ответить на этот вопрос - я слышал, что его сложно правильно настроить. - person Laurenz Albe; 23.12.2020
comment
Только что сделал это, все выборы проходят в режиме ожидания и вставляются / обновляются / удаляются в основной. Но, как вы упомянули ранее, при выборе функций это проблематично ... - person hello; 23.12.2020