pg_local_cache auf einem bestehenden PostgreSQL-Server installieren

Diese Anleitung gilt für Linux und PostgreSQL 14–18. Installation und Konfiguration erfordern Datenbank-Superuserrechte. Das Eintragen der Erweiterung in shared_preload_libraries erfordert einen Neustart von PostgreSQL.

1. Voraussetzungen

Verwenden Sie beim Bauen aus dem Quellcode das pg_config des Zielservers. Planen Sie den Neustart mit dem Dienst oder Operator, der den PostgreSQL-Cluster verwaltet.

2. Paket installieren

Laden Sie das Paket und SHA256SUMS für PostgreSQL-Hauptversion und Architektur aus demselben GitHub-Release herunter.

Debian und Ubuntu

Laden Sie postgresql-<major>-pg-local-cache_<version>-1_<arch>.deb herunter. Die Pakete werden auf Debian 12 gebaut und benötigen glibc 2.36 oder neuer. Das Manifest enthält alle Release-Dateien; bei einer Teilauswahl benötigen Sie --ignore-missing.

Prüfen Sie Prüfsumme und Build-Provenienz, installieren Sie anschließend das Paket:

sha256sum -c --ignore-missing SHA256SUMS
gh attestation verify <file>.deb --repo profundium/pg_local_cache
sudo apt install ./<file>.deb

RHEL, Rocky Linux und AlmaLinux 9

Diese RPMs benötigen eine passende PostgreSQL-Installation aus dem PGDG-Yum- Repository. Aktivieren Sie das PGDG-Repository für Ihre EL-Version und PostgreSQL-Hauptversion. Installieren Sie zuerst postgresql<major>-server von PGDG. Das Erweiterungspaket wird unter /usr/pgsql-<major> installiert. Distributionspakete für PostgreSQL verwenden andere Paketnamen, Pfade und Dienstnamen; verwenden Sie für solche Server die Anleitung zum Bauen aus dem Quellcode.

Laden Sie das passende .rpm für PostgreSQL-Hauptversion und Architektur herunter. Prüfen und installieren Sie es:

sha256sum -c --ignore-missing SHA256SUMS
gh attestation verify <file>.rpm --repo profundium/pg_local_cache
sudo dnf install ./<file>.rpm

PGXN

Installieren Sie den PGXN-Client, die PostgreSQL-Server-Entwicklungsheader der Zielversion, einen C-Compiler und GNU Make. Geben Sie das pg_config des Zielservers an; sonst verwendet PGXN das erste Programm auf PATH. Für die Installationsphase sind Root-Rechte nötig. Siehe die PGXN-Installationsoptionen.

pgxn install --pg_config /path/to/pg_config --sudo sudo pg_local_cache

Aus dem Quellcode bauen

Installieren Sie die Entwicklungs-Header der Zielversion von PostgreSQL, einen C-Compiler und GNU Make. Bauen und installieren Sie die Erweiterung mit dem pg_config dieser Version:

make PG_CONFIG=/path/to/pg_config && \
  sudo make PG_CONFIG=/path/to/pg_config install

3. postgresql.conf konfigurieren

Behalten Sie vorhandene Einträge in shared_preload_libraries bei und ergänzen Sie pg_local_cache. Ersetzen Sie app durch den Namen der Datenbank, die die Erweiterung bedient.

RESP-Listener konfigurieren

Konfigurieren Sie den RESP-Listener mit einer eigenen Worker-Rolle, einer geschützten Token-Datei und nativem TLS. Die folgende Konfiguration aktiviert mTLS durch Vertrauen in eine Client-CA. Native RESP-TLS setzt PostgreSQL mit OpenSSL-Unterstützung voraus.

shared_preload_libraries = 'pg_local_cache'
pg_local_cache.database = 'app'
pg_local_cache.role = 'local_cache_worker'
pg_local_cache.port = 6380
pg_local_cache.bind_address = '10.0.0.10'
pg_local_cache.auth_token_file = '/secure/path/token'
pg_local_cache.cache_entries = 16384
pg_local_cache.memory_budget_mb = 384
pg_local_cache.tls = on
pg_local_cache.tls_cert_file = '/secure/path/resp.crt'
pg_local_cache.tls_key_file = '/secure/path/resp.key'
pg_local_cache.tls_ca_file = '/secure/path/client-ca.crt'
pg_local_cache.tls_min_protocol_version = 'TLSv1.2'
pg_local_cache.allow_plaintext_network = off

Ersetzen Sie 10.0.0.10 durch eine für Clients erreichbare Adresse. TLS ist standardmäßig deaktiviert; zum Aktivieren sind Serverzertifikat und Schlüssel erforderlich. Diese Konfiguration schützt einen Nicht-Loopback-RESP-Listener mit TLS und prüft Clientzertifikate über die CA-Einstellung. Für TLS nur mit Serverauthentifizierung lassen Sie pg_local_cache.tls_ca_file leer und Clientzertifikate weg. RESP-TLS ist unabhängig von PostgreSQL-ssl_*-Einstellungen. Ohne TLS benötigt ein Nicht-Loopback-Listener pg_local_cache.allow_plaintext_network = on; verwenden Sie dieses Opt-in nur in einem vertrauenswürdigen Netzwerk.

Für den privaten Schlüssel gilt PostgreSQLs Regel für Server-Schlüsseldateien: Modus 0600, wenn die Datei dem PostgreSQL-Betriebssystembenutzer gehört, oder Root-Eigentümer mit Modus 0640 und Leserecht für die Servergruppe.

Stimmen Sie Cache-Einträge, Relationszustände, Worker, Clients und memory_budget_mb gemeinsam ab. Hinweise zu Kapazität und Speicher finden Sie in der technischen Referenz.

4. PostgreSQL neu starten

Verwenden Sie den Dienst oder Operator, der den Cluster verwaltet. Mit systemd:

# Debian and Ubuntu
sudo systemctl restart postgresql@<major>-main
# RHEL, Rocky Linux, and AlmaLinux
sudo systemctl restart postgresql-<major>

Ändern Sie bei Patroni die Clusterkonfiguration und starten Sie den Cluster über Patroni neu:

patronictl edit-config <cluster>
patronictl restart <cluster>

Erstellen Sie für Kubernetes ein eigenes PostgreSQL-Image mit dem passenden Paket und rollen Sie es über Ihren Operator aus. CloudNativePG-Erweiterungsimages sind geplant.

5. Initialisieren

Verbinden Sie sich als Datenbank-Superuser mit der konfigurierten Datenbank. Erstellen Sie die Erweiterung und eine eigene Worker-Rolle und gewähren Sie ihr Zugriff auf die Metadaten:

CREATE EXTENSION IF NOT EXISTS pg_local_cache;
CREATE ROLE local_cache_worker LOGIN NOINHERIT NOSUPERUSER
    NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;
GRANT CONNECT ON DATABASE app TO local_cache_worker;
GRANT USAGE ON SCHEMA local_cache TO local_cache_worker;
GRANT SELECT ON TABLE local_cache.mapping TO local_cache_worker;

Verwenden Sie für die Worker-Rolle keine Rollen, denen Anwendungstabellen gehören. Binden Sie jede permanente Tabelle mit unterstütztem Primärschlüssel an:

Tabelle anbinden

SELECT local_cache.attach_table('public.items'::regclass);

Bereitschaft prüfen

SELECT local_cache.health();

Prüfen Sie, ob die Erweiterung bereit ist und die Zuordnungen aktuell sind.

6. Aktualisieren

Für das Upgrade von 3.0.0 auf 3.1.0 folgen Sie dem Upgrade-Leitfaden. Bei 2.x durchlaufen Sie zuerst den dort beschriebenen Upgrade-Pfad über 3.0.0 zu 3.1.0. Stellen Sie Anwendungen von SQL mget auf RESP MGET um, installieren Sie das passende 3.1.0-Paket, starten Sie PostgreSQL neu und aktualisieren Sie die Erweiterung in jeder Datenbank, in der sie installiert ist:

ALTER EXTENSION pg_local_cache UPDATE;

7. Deinstallieren

Trennen Sie alle angebundenen Tabellen und entfernen Sie die Erweiterung als Datenbank-Superuser. Entfernen Sie pg_local_cache aus shared_preload_libraries, starten Sie PostgreSQL neu und entfernen Sie das Paket mit dem passenden Paketmanager:

SELECT local_cache.detach_table('public.items'::regclass);
DROP EXTENSION pg_local_cache;
sudo apt remove postgresql-<major>-pg-local-cache
sudo dnf remove pg_local_cache_<major>

Weiter: Lesen Sie in der technischen Referenz mehr über SQL, Speicherbedarf, Monitoring und RESP-Sicherheit.

Dokumentation für 2.x: https://github.com/profundium/pg_local_cache/tree/v2.0.4/docs

Aktualisiert .