PgBouncer-Verbindungspool
PostgreSQLStufe: MittelDauer: 30–45 minInstallation von PgBouncer aus dem PGDG-Repository: Pool-Modus transaction oder session, Authentifizierung mit scram-sha-256 über auth_query (eine SECURITY-DEFINER-Funktion) oder userlist.txt, Pool-Größen berechnet aus max_connections und CPU-Anzahl der Datenbank, systemd sowie optional mehrere Prozesse mit so_reuseport. Zum Abschluss Admin-Konsole (SHOW POOLS/STATS), Connection String der Anwendung und eine Checkliste zur Kompatibilität mit dem Transaction-Modus.
Wann einsetzen: Anwendungen öffnen Hunderte oder Tausende Verbindungen, sorry, too many clients already tritt auf, oder der Verbindungsaufbau ist teuer. PgBouncer ist keine HA- oder Backup-Lösung: Für Failover brauchst du Streaming Replication oder Patroni, für Backups pgBackRest.
Topologie: PgBouncer auf dem Datenbankserver oder auf einem eigenen Server; bei Patroni vor HAProxy/VIP
Vor dem Start
- PostgreSQL ist mit dem Guide pg-install installiert und läuft; die Datenbank … und der Benutzer … (mit scram-sha-256-Passwort) existieren.
- …Der PostgreSQL-Patroni-Cluster (pg-patroni) läuft; … ist aktuell Leader…Der PostgreSQL-Primary (pg-streaming) läuft…PostgreSQL ist mit dem Guide pg-install installiert und läuft…; die Datenbank … und der Benutzer … (mit scram-sha-256-Passwort) existieren.
- Der Patroni-Cluster … ist fehlerfrei: ein Leader, Replicas streaming; der HAProxy-Schreibport (…:…) leitet nur zum Leader.
- Das Passwort des Anwendungsbenutzers ist als SCRAM-SHA-256 gespeichert (Benutzer mit alten md5-Hashes müssen ihr Passwort bei password_encryption = scram-sha-256 neu setzen).
- Die Werte für max_connections (…) und CPU (…) im Formular entsprechen den tatsächlichen Werten auf dem Datenbankserver (die Pool-Größen werden daraus berechnet).
- Der PgBouncer-Server erreicht die Datenbank (…HAProxy/VIP ……:…); die Anwendungsserver erreichen PgBouncer (…:…).
- Port … ist frei.
- Der Pool-Modus ist mit dem Anwendungsteam abgestimmt: Im Transaction-Modus werden keine Funktionen genutzt, die auf Sitzungszustand angewiesen sind (Checkliste unten).
- Für das Kopieren der Passwort-Hashes vom Datenbankserver zum PgBouncer-Server besteht scp-Zugriff (root oder ein Benutzer mit sudo-Rechten), oder du überträgst die Datei auf einem anderen sicheren Weg.
Phasen der Anleitung
- PgBouncer-Installation — PGDG-Repository hinzufügen · PGDG-Repository hinzufügen · PgBouncer installieren
- Datenbankseite — Rolle prüfen: Ist dieser Server der …Leader…Primary…? · Admin- und Authentifizierungsbenutzer anlegen · Admin- und Authentifizierungsbenutzer anlegen · Passwörter setzen · Passwörter setzen · PgBouncer-Server in pg_hba.conf eintragen …
- PgBouncer-Konfiguration — Passwort von auth_user hinzufügen · pgbouncer.ini schreiben · Grenze für Dateideskriptoren setzen · PgBouncer starten
- Mehrere Prozesse (so_reuseport) — Konfigurationsdateien pro Prozess · systemd-Template-Dienst · Einzelprozess-Dienst stoppen und die Prozesse starten
- Verifizierung — Als Anwendungsbenutzer verbinden · Prüfen, dass die Verbindungen den Leader erreichen · Admin-Konsole prüfen · PgBouncer-Port in der Firewall öffnen
- Anwendungsseite und nach der Installation — Connection String der Anwendung · Checkliste zur Kompatibilität mit dem Transaction-Modus · Pool überwachen · Einstellungen ändern und neu laden