Lastausgleich und Sicherung mittels PGPool II

Hallo!

Zuerstmal die Beschreibung der Anforderungen:

Ich habe ein Datenbanksystem was mit wenigen Nutzern (<100) arbeitet, die aber z.T. sehr große Abfragen machen müssen (5GB Read ist nicht selten). Die Daten sollen auf 2 Servern synchron geschrieben werden und im Leseprozess soll eine Lastverteilung auf die Server stattfinden.

Dazu habe ich PGPool-II im logischen Replikationsmodus eingerichtet. Das funktioniert soweit auch so wie ich es möchte, aber ich habe ein großes Manko, bei dem ich nicht weiss ob und wie ich es lösen kann: Die Datenübertragungsrate geht mit Nutzung von PGPool signifikant runter. In Testbeispilen mit einem 5 GB Read von einer einzelnen Postgresql-Instanz (ohne Umweg über PG-Pool) ziehe ich mit etwa 120MB/sec.

Um so wenig Komplikationen wie möglich reinzubringen ist der PGPool für diesen Test auf der selben Maschine installiert wie unsere Postgresdatenbank und hat für den moment auch nur diesen Instanz konfiguriert. Wenn ich nun PGPool auf dem selben Server anspreche mit dem gleichen Read so lädt er nur noch mit etwa 40MB/sec.

Verständlicherweise ist bei der Größe der abgerufenen Daten eine Verdreifachung der Abrufzeit…suboptimal.

Nun die Frage: habe ich Möglichkeiten PGPool (oder irgendein anderes Tool das mir Synchronisation und Load-Balancing anbietet) so einzurichten, dass kein signifikanter Abfall in der Übertragungsrate auftritt?

Danke im Voraus :slight_smile:
Kai Dannies

Pgpool (und replication damit) stammt aus Zeiten, wo es noch keine eingebaute Replikation gab. Mit 9.0 und streaming replication ist es mehr oder weniger obsolet, finde ich. Gegenüber pgbouncer hat es, also als Pooler, einen Nachteil: es ist aufwändiger, es muß die Statements parsen.
https://pgbouncer.github.io/faq.html

Allerdings hast Du mit Streaming Replication nur einen Master (wo Du schreiben kannst) und 1 oder mehrere Standbys, die Read-Only sind. Die libpq kann im connection string aber auch mehrere Server haben und Du kannst sagen: irgend einen (nur zum lesen) oder den Master - zum schreiben.

Falls Du Multi-Master suchst: BDR. Version 1 ist frei, aber auf 9.4 beschränkt und wird nicht weiterentwickelt. Die Entwicklung ist bei Version 3, was Du aber nur bei Abschluß eines Supportvertrages mit uns bekommen kannst.

Das sind so mal die Möglichkeiten aus meiner Sicht.