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 .