PostgreSQL-Datenbank anschließen
Diese Anleitung geht von einer laufenden App aus. Am Ende liest und schreibt sie in einer verwalteten PostgreSQL, ohne dass ein Passwort im Quelltext steht.
1. Datenbank anlegen
In der Console unter Datenbanken → Datenbank anlegen: Name, Größe und PostgreSQL-Version wählen, fertig. Nach wenigen Sekunden läuft sie. Der Name darf Kleinbuchstaben, Ziffern und Bindestriche enthalten.
2. Mit der App verknüpfen
Auf der Detailseite der Datenbank wählst du unter Verknüpfte Apps deine App aus. Beim nächsten Start setzt Rechenhalle diese Variablen im Container:
DATABASE_URL=postgres://benutzer:passwort@hafen-db-name:5432/name
Den Namen der Variable kannst du beim Verknüpfen ändern – nützlich, wenn eine App zwei Datenbanken nutzt oder deine Anwendung einen anderen Namen erwartet.
3. Aus dem Code zugreifen
Alle gängigen Bibliotheken lesen DATABASE_URL von selbst.
// Node.js mit pg
import { Pool } from "pg";
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
const { rows } = await pool.query("SELECT now()");
# Python mit psycopg
import os, psycopg
with psycopg.connect(os.environ["DATABASE_URL"]) as conn:
print(conn.execute("SELECT now()").fetchone())
// Prisma – in schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
TLS ist innerhalb des Team-Netzes nicht nötig: Der Verkehr verlässt den Server nicht. Wenn deine
Bibliothek trotzdem sslmode verlangt, setze sslmode=disable.
4. Migrationen ausführen
Schema-Änderungen gehören vor den ersten Zugriff der neuen Version. Am einfachsten hängst du sie an den Startbefehl:
# Procfile
web: npx prisma migrate deploy && node server.js
Schlägt die Migration fehl, startet die App nicht, der Health-Check bleibt rot – und Rechenhalle schaltet den Verkehr gar nicht erst um. Die alte Version läuft weiter.
5. Sicherungen und Wiederherstellung
Jede Nacht läuft automatisch ein pg_dump je Datenbank. Aufbewahrt werden die letzten
28 Tage, auf denselben Servern in Falkenstein.
Brauchst du eine Sicherung zurück oder willst du eine Kopie herausgegeben bekommen, erreichst du uns über die Kontaktseite – wir spielen sie ein oder legen sie dir bereit.
Eine eigene Sicherung vor einer größeren Migration ist trotzdem eine gute Idee: ein pg_dump
aus einem Job heraus, abgelegt im Speicher, gehört dir allein.
6. Daten von woanders übernehmen
Ein Abzug aus deiner bisherigen Datenbank lässt sich direkt einspielen. Am einfachsten über einen einmaligen Job in der App, die bereits mit der neuen Datenbank verknüpft ist:
pg_dump "$ALTE_DATENBANK_URL" --no-owner --no-acl -Fc -f /tmp/abzug.dump
pg_restore --dbname "$DATABASE_URL" --no-owner --no-acl /tmp/abzug.dump
--no-owner ist wichtig: Die Rollennamen der alten Datenbank gibt es hier nicht.
Häufige Fragen
Können mehrere Apps dieselbe Datenbank nutzen?
Ja. Verknüpfe die Datenbank einfach mit jeder App – alle liegen im selben Team-Netz und bekommen dieselben Zugangsdaten.
Wie viele Verbindungen sind erlaubt?
100 gleichzeitig. Nutze in der App einen Pool mit einer festen Obergrenze, sonst öffnet jede Instanz beliebig viele Verbindungen.