PostgreSQL-Datenbanken über SSH-Tunnel sichern und wiederherstellen

Musst du eine PostgreSQL-Datenbank auf Sliplane sichern? Diese Anleitung zeigt dir, wie du Sicherungen sicher über einen SSH-Tunnel erstellen und wiederherstellen kannst. Diese Methode hält deine Datenbank privat, während du vollen Zugriff hast, ohne sie öffentlich verfügbar zu machen.
Was du lernen wirst
In dieser Anleitung lernst du:
- Einen SSH-Tunnel-Service in Sliplane einzurichten
- Sicherungen mit pg_dump über den Tunnel zu erstellen
- Datenbanken mit pg_restore wiederherzustellen
- Mit verschiedenen Backup-Formaten und Wiederherstellungsoptionen umzugehen
Hinweis: Wenn deine Datenbank bereits öffentlich ist und deine IP auf der Whitelist steht, kannst du dich direkt ohne SSH-Tunnel verbinden.
Voraussetzungen
Stelle vor dem Start sicher, dass du hast:
- PostgreSQL-Client-Tools installiert:
pg_dump
,pg_restore
,psql
- Deine Sliplane PostgreSQL-Datenbank-Anmeldedaten
- Ein Sliplane-Projekt mit einem laufenden PostgreSQL-Service
Schritt 1: SSH-Tunnel-Service erstellen
Erstelle zuerst einen dedizierten SSH-Tunnel-Service in deinem Sliplane-Projekt:
- Gehe in deinem Sliplane-Dashboard zu deinem Projekt
- Klicke auf Add Service → Presets → SSH Tunnel
- Verwende diese Einstellungen:
- Image:
ghcr.io/sliplane/docker-ssh:latest
- Environment Variables:
HOST=0.0.0.0
PORT=2222
ROOT_PASSWORD=
wähle ein starkes Passwort
- Image:
- Stelle den Service bereit und notiere seine öffentliche Domain (z.B.
ssh-tunnel-123.sliplane.app
)
Schritt 2: SSH-Tunnel herstellen
Öffne ein Terminal und erstelle einen lokalen Tunnel zu deiner Sliplane-Datenbank:
ssh -p 2222 \
[email protected] \
-L 5433:postgres-service-name.internal:5432 \
-N
Ersetze postgres-service-name.internal
mit dem internen Hostnamen deines PostgreSQL-Service. Halte dieses Terminalfenster während des Sicherungs-/Wiederherstellungsprozesses geöffnet.
Schritt 3: Verbindung testen
Überprüfe, ob der Tunnel funktioniert, bevor du Sicherungen erstellst:
PGPASSWORD='dein-passwort' \
psql -h 127.0.0.1 -p 5433 -U dein-benutzer -d deine-datenbank \
-c 'SELECT version();'
Wenn du die PostgreSQL-Version siehst, funktioniert dein Tunnel korrekt.
Schritt 4: Sicherung erstellen
Da dein SSH-Tunnel funktioniert, ist es Zeit, eine Sicherung zu erstellen. PostgreSQL bietet mehrere Backup-Optionen über pg_dump, jede mit unterschiedlichen Anwendungsfällen und Vorteilen.
Custom Archive (Empfohlen)
Dieses Format ist komprimiert, unterstützt parallele Wiederherstellungen und erlaubt selektive Wiederherstellungen:
PGPASSWORD='dein-passwort' \
pg_dump \
-h 127.0.0.1 -p 5433 \
-U dein-benutzer -d deine-datenbank \
-Fc \
-f backup-$(date +%F).dump
Plain SQL Format
Einfach zu lesen und zu bearbeiten, aber langsamer bei der Wiederherstellung:
PGPASSWORD='dein-passwort' \
pg_dump \
-h 127.0.0.1 -p 5433 \
-U dein-benutzer -d deine-datenbank \
-f backup-$(date +%F).sql
Bestimmte Objekte sichern
Sichere nur bestimmte Schemas oder Tabellen:
# Ein bestimmtes Schema sichern
pg_dump -n schema_name -h 127.0.0.1 -p 5433 -U dein-benutzer -d deine-datenbank -f schema-backup.dump
# Bestimmte Tabellen sichern
pg_dump -t table1 -t table2 -h 127.0.0.1 -p 5433 -U dein-benutzer -d deine-datenbank -f tables-backup.dump
Schritt 5: Wiederherstellen der Sicherung
Mit deiner Sicherungsdatei kannst du diese jetzt in deiner PostgreSQL-Datenbank wiederherstellen. Der Wiederherstellungsprozess hängt von deinem Backup-Format ab und davon, ob du in eine bestehende Datenbank wiederherstellst oder eine neue erstellst.
Custom Archive wiederherstellen
Zu einer bestehenden Datenbank:
# Datenbank erstellen, falls sie nicht existiert
PGPASSWORD='dein-passwort' \
createdb -h 127.0.0.1 -p 5433 -U dein-benutzer zieldatenbank
# Sicherung wiederherstellen
PGPASSWORD='dein-passwort' \
pg_restore \
-h 127.0.0.1 -p 5433 \
-U dein-benutzer -d zieldatenbank \
--clean --if-exists \
--no-owner --no-privileges \
backup-YYYY-MM-DD.dump
Datenbank während der Wiederherstellung erstellen
PGPASSWORD='dein-passwort' \
pg_restore -C \
-h 127.0.0.1 -p 5433 -U dein-benutzer \
-d postgres \
backup-YYYY-MM-DD.dump
Parallele Wiederherstellung (Schneller)
Verwende für große Datenbanken parallele Verarbeitung:
PGPASSWORD='dein-passwort' \
pg_restore -j 4 \
-h 127.0.0.1 -p 5433 -U dein-benutzer -d zieldatenbank \
backup-YYYY-MM-DD.dump
Plain SQL wiederherstellen
PGPASSWORD='dein-passwort' \
psql -h 127.0.0.1 -p 5433 -U dein-benutzer -d zieldatenbank \
-f backup-YYYY-MM-DD.sql
Diese Methode gibt dir sicheren, zuverlässigen Zugriff auf deine PostgreSQL-Datenbank auf Sliplane für Sicherungen und Wiederherstellungen, während deine Infrastruktur sicher bleibt.