Managed Postgres
Managed Postgres auf Lizard (lizard.build) ist eine PostgreSQL-Datenbank, die Sie mit lizard add postgres zu einem Projekt hinzufügen. Neue Datenbanken laufen standardmäßig mit PostgreSQL 18. Lizard legt die Verbindungszeichenfolge in DATABASE_URL und ihre Bestandteile in PGHOST, PGPORT, PGUSER, PGPASSWORD und PGDATABASE ab, und Ihre Services lesen sie über eine Referenz wie ${{postgres.DATABASE_PRIVATE_URL}}. Für CPU, Arbeitsspeicher und Speicher der Datenbank zahlen Sie dieselben Tarife wie für Apps. Im Dashboard können Sie die Datenbank mit einem SQL-Editor abfragen. Einen Überblick und die Preise finden Sie auf der Seite zu Managed Postgres.
Bereitstellen
lizard add postgresDas erste Postgres-Add-on heißt postgres, daher funktioniert ${{postgres.DATABASE_URL}} sofort.
Umgebungsvariablen
Das Add-on stellt einen Standardsatz an Verbindungsvariablen bereit:
| Variable | Beschreibung |
|---|---|
DATABASE_URL | Vollständige Verbindungszeichenfolge über den öffentlichen Endpunkt (postgresql://…) |
DATABASE_PRIVATE_URL | Verbindungszeichenfolge über das private Netzwerk des Projekts (<name>.lizard.internal:5432) |
PGHOST | Host |
PGPORT | Port |
PGUSER | Benutzer |
PGPASSWORD | Passwort |
PGDATABASE | Datenbankname |
POSTGRES_USER | Alias für den Benutzer |
POSTGRES_DB | Alias für die Datenbank |
POSTGRES_PASSWORD | Alias für das Passwort |
Postgres-Verbindungszeichenfolge
Jede Datenbank hat zwei Verbindungszeichenfolgen. Beide verwenden den Benutzer postgres und die Datenbank postgres:
| Variable | Zugriff von | Format |
|---|---|---|
DATABASE_PRIVATE_URL | Services im selben Projekt | postgresql://postgres:<password>@<name>.lizard.internal:5432/postgres |
DATABASE_URL | Ihrem Rechner, CI oder einem Service in einem anderen Projekt | postgresql://postgres:<password>@<host>:<port>/postgres |
<name> ist der Name der Datenbank im Projekt, postgres für die erste. Lizard vergibt den öffentlichen Host und Port beim Erstellen der Datenbank. Lesen Sie sie daher aus DATABASE_URL, PGHOST und PGPORT, statt sie abzutippen. Die private Adresse funktioniert nur innerhalb des Projekts; siehe privates Netzwerk.
Die meisten Treiber übernehmen die Zeichenfolge unverändert:
// Node.js with pg
import pg from 'pg';
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });# Python with psycopg
import os, psycopg
conn = psycopg.connect(os.environ["DATABASE_URL"])psql und andere libpq-Werkzeuge lesen die PG*-Variablen und verbinden sich daher ohne Argumente.
Wie sehe ich die Verbindungszeichenfolge?
- Dashboard: Öffnen Sie die Datenbank in Ihrem Projekt. Der Tab Overview zeigt
DATABASE_URLund die private URL mit Kopier-Schaltflächen. Der Tab Secrets listet jede Verbindungsvariable und die${{…}}-Referenz, die Sie in einen Service einfügen. - CLI:
lizard run --service postgres -- printenv DATABASE_URLgibt die öffentliche Zeichenfolge aus. Sie enthält das Passwort, fügen Sie sie also nicht in Logs oder Chats ein.
Die Zeichenfolge enthält Zugangsdaten. Verwenden Sie in Services eine Referenz auf die Zeichenfolge. So erhalten sie bei jedem Deploy den aktuellen Wert, ohne dass Sie ihn in ein Secret kopieren müssen.
Einen Service verbinden
Referenzieren Sie die private Verbindungszeichenfolge im Service, der die Datenbank nutzt, und deployen Sie erneut:
lizard secrets set DATABASE_URL='${{postgres.DATABASE_PRIVATE_URL}}' --service api
lizard redeploy --service apiLizard löst die Referenz beim Deployment auf. Der Service erhält dabei die aktuellen Werte des Add-ons. Verwenden Sie stattdessen DATABASE_URL für Clients außerhalb des Projekts. Jeder Service im Projekt erhält außerdem die öffentliche DATABASE_URL des Add-ons mit der niedrigsten Priorität; eine explizite Referenz überschreibt sie.
Prüfen Sie die Verbindung von Ihrem Rechner aus, ohne die Verbindungszeichenfolge auszugeben:
lizard run --service postgres -- sh -c 'psql "$DATABASE_URL" -c "SELECT 1"'lizard run --service postgres führt den Befehl auf Ihrem Rechner mit den öffentlichen Verbindungswerten der Datenbank aus; dafür muss psql lokal installiert sein. lizard run --service api würde ${{…}}-Referenzen als unveränderten Text weitergeben; siehe lizard run.
Migrationen beim Bereitstellen ausführen
Verwenden Sie für Migrationen einen Befehl vor dem Deployment. Er wird nur ausgeführt, wenn auch ein Startbefehl gesetzt ist, und zwar als sh -c "<pre> && exec <start>" beim Start jedes Containers: jedes Replikats, jedes Neustarts. Gestalten Sie Migrationen so, dass sie sicher mehrfach und gleichzeitig ausgeführt werden können und sowohl mit der alten als auch mit der neuen Anwendungsversion kompatibel sind:
lizard service set api --set preDeployCommand="npm run migrate" --set startCommand="npm start"
lizard redeploy --service apiFür eine Django-App lautet der Befehl python manage.py migrate; siehe den Django-Leitfaden und Python-App-Hosting. Die Leitfäden zu Umami und Flowise zeigen vollständige Apps auf Managed Postgres.
Daten durchsuchen und abfragen
Öffnen Sie den Postgres-Editor im Dashboard (lizard open), um SQL auszuführen und Tabellen direkt zu durchsuchen. Für lokale Ad-hoc-Arbeiten führen Sie einen Befehl mit den Verbindungswerten des Add-ons aus:
lizard run --service postgres -- sh -c 'exec psql "$DATABASE_URL"'Speicher erweitern
Datenvolumes können nur vergrößert werden:
lizard scale --service postgres --storage 8192Mehrere Datenbanken
Wenn Sie ein zweites Postgres hinzufügen, erhält es einen generierten Namen (z. B. postgres-autumn-bear). Referenzieren Sie es explizit:
lizard add postgres
lizard secrets set ANALYTICS_URL='${{postgres-autumn-bear.DATABASE_PRIVATE_URL}}' --service apiBackups und Wiederherstellung
Gehen Sie nicht von geplanten Backups oder Point-in-Time-Recovery aus. Exportieren Sie die Datenbank vor einer riskanten Migration selbst und testen Sie die Wiederherstellung in einer separaten Datenbank. Zum Beispiel mit lokal installiertem pg_dump 18 oder neuer:
lizard run --service postgres -- sh -c 'pg_dump "$DATABASE_URL" > backup.sql'Siehe Speicher und Wiederherstellung für einen Plan zur Wiederherstellung.
Siehe auch
- Managed Addons — Benennung, Referenzen und die Dashboard-Browser.
- Service-übergreifende Referenzen — Referenzsyntax und Auflösung.
Aktualisiert