web-dev-qa-db-fra.com

Est-il possible de configurer PGbouncer pour distribuer des requêtes parmi maîtres et esclaves?

Nous avons maître (lecture en écriture) et esclave (readonly) Postgres 10 bases de données. L'esclave est une réplication en ligne de Master.

Maintenant, notre application (C # webapi) se connecte au Master uniquement directement. Nous voulons exécuter toutes les requêtes de sélection sur l'esclave pour distribuer la charge parmi notre matériel.

  1. L'idée est d'ajouter du pooleur de raccordement qui transmettra tous les éléments sélectionnés sur esclave, d'autres requêtes passues à Master
  2. Si la réplication tombe en panne, il détectera que cela va automatiquement dès que possible et passera tous les éléments sélectionnés pour maîtriser la réplication en ligne.

Pgbouncer est-il ok pour ça? Un autre outil?

2
Doctor Coder

pGBouncer ne peut pas faire cela et, en effet, il s'agit d'une fonctionnalité discutable. Comment pouvez-vous dire de manière fiable une déclaration comme

SELECT pg_create_physical_replication_slot('aname');

ne modifiera pas votre base de données?

Il y a PGPool qui dispose d'une telle fonctionnalité, vous pourriez enquêter.

La meilleure technique est généralement destinée à votre application d'utiliser deux connexions de base de données: une pour la lecture et une des modifications de données. Cela ne vous met pas à la merci d'un outil qui essaie de deviner.

3
Laurenz Albe