WZ-IT Logo

AWS RDS/Aurora PostgreSQL zu Hetzner Cloud migrieren – pg_dump/restore Guide

Timo Wevelsiep
Timo Wevelsiep
#AWS #RDS #Aurora #PostgreSQL #Hetzner #Migration #pgdump #CloudMigration #DSGVO

AWS-Kosten explodieren? RDS zu teuer? Wir migrieren eure PostgreSQL-Datenbanken von AWS RDS/Aurora zu Hetzner Cloud – mit minimalem Risiko und klarem Cutover-Plan. 👉 Zur AWS-Migration-Übersicht | Kostenlose Analyse anfragen

AWS ist für viele Teams der Startpunkt – und später der Kostentreiber. Spätestens wenn eine Anwendung stabil läuft, werden die „weichen" Posten sichtbar: laufende RDS-Instanzkosten, Storage/IO, Backups – und vor allem Datenverkehr/Egress. AWS weist selbst darauf hin, dass Data-Transfer-Kosten beim Architekturdesign oft übersehen werden (AWS Blog).

Dazu kommt bei EU-Unternehmen immer häufiger ein zweites Motiv: digitale Souveränität und Datenhoheit. Seit Schrems II ist das Thema Drittlandtransfer und EU-konforme Cloud-Architektur stärker auf dem Radar (EuroCloud). Hetzner betreibt eigene Rechenzentren in Nürnberg, Falkenstein (DE) und Helsinki (FI) (Hetzner Docs).

In diesem Beitrag geht es um den häufigsten Exit-Schritt nach Storage: AWS RDS PostgreSQL → PostgreSQL auf einer Hetzner Cloud VM. Und weil Downtime akzeptabel ist, ist die Default-Empfehlung klar: pg_dump/pg_restore – der pragmatischste, am besten kontrollierbare Weg.

Inhaltsverzeichnis


Empfehlung und Zielbild

Default-Empfehlung: pg_dump/pg_restore

Wenn ihr RDS nutzt und ein Wartungsfenster (Downtime) akzeptabel ist:

  • Der Ansatz ist erprobt, stabil und transparent – native PostgreSQL-Tools reichen aus (AWS Docs)
  • Komplizierte Replikation, Logical Replication oder DMS-Setups entfallen
  • Für Datenbanken bis ca. 100-500 GB ist ein Wartungsfenster realistisch planbar

Zielbild bei Hetzner: Es gibt kein "Managed PostgreSQL" bei Hetzner Cloud. Das Ziel ist: VM anlegen und PostgreSQL selbst installieren/betreiben – mit voller Kontrolle über Konfiguration, Backups und Updates.


Zielsystem vorbereiten: Hetzner VM und PostgreSQL

VM und Storage anlegen

  1. VM in Hetzner Cloud anlegen
    • Ubuntu LTS (z.B. 22.04) oder Debian
    • Genügend RAM/CPU entsprechend der DB-Last
    • Separates Volume für /var/lib/postgresql (Wachstum/Backups)
    • Private Network / Firewall-Regeln für Zugriff

PostgreSQL installieren

sudo apt update
sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

Datenbank und User anlegen:

sudo -u postgres createuser --pwprompt appuser
sudo -u postgres createdb -O appuser appdb

Remote-Zugriff konfigurieren

  • postgresql.conf: listen_addresses nur auf benötigte IPs
  • pg_hba.conf: nur explizite Netze/IPs erlauben
  • Firewall: Port 5432 nur von Migration-Host/App-Netz

Backup-Strategie definieren

Ab jetzt seid ihr selbst DBA. Minimum:

  • Nightly pg_dump + Rotation
  • VM/Volume Snapshots (zusätzlich, nicht allein)
  • Optional: WAL-Archivierung für Point-in-Time Recovery

Migration mit pg_dump/pg_restore

Ablauf (High-Level)

  1. Wartungsfenster starten – App in Maintenance / Read-Only
  2. Dump erstellen (komprimiert, optional parallel)
  3. Transfer des Dumps zur Hetzner-VM
  4. Restore auf Ziel-PostgreSQL
  5. Fixups – Extensions, Owner, Grants, Sequences
  6. Validierung – Counts, Stichproben, Smoke Tests
  7. Cutover – App-Connection-String umstellen
  8. Monitoring – Altes RDS vorerst read-only lassen (Rollback-Fenster)

CMD-Beispiele

Dump (AWS RDS als Quelle)

Custom Format (kompakt, flexibel):

export PGPASSWORD="<AWS_PASSWORD>"

pg_dump \
  -h <AWS_HOST> -p 5432 -U <AWS_USER> -d <DBNAME> \
  -Fc -Z 6 \
  -f db.dump
  • -Fc: Custom Format (ideal für pg_restore)
  • -Z 6: Kompression

Directory Format + parallel (für große DBs):

pg_dump \
  -h <AWS_HOST> -p 5432 -U <AWS_USER> -d <DBNAME> \
  -Fd -j 8 \
  -f dumpdir/

Transfer zur Hetzner VM

rsync -avP db.dump root@<HETZNER_VM_IP>:/root/

Restore auf Hetzner VM

Datenbank anlegen:

export PGPASSWORD="<HETZNER_PASSWORD>"
createdb -h <HETZNER_VM_IP> -p 5432 -U <HETZNER_USER> <DBNAME>

Restore:

pg_restore \
  -h <HETZNER_VM_IP> -p 5432 -U <HETZNER_USER> -d <DBNAME> \
  --no-owner --no-privileges \
  -j 8 \
  /root/db.dump

Warum --no-owner --no-privileges? Beim Provider-Wechsel wollt ihr Rollen/Grants kontrolliert auf euer Zielmodell ziehen, statt AWS-Defaults zu importieren.

Statistiken aktualisieren:

ANALYZE;

Validierung nach Migration

Harte Checks (Daten)

  • Rowcounts für kritische Tabellen vergleichen
  • Summenchecks (z.B. Rechnungsbeträge)
  • Stichproben (IDs) quer prüfen
SELECT 'users'  AS t, count(*) FROM public.users
UNION ALL
SELECT 'orders' AS t, count(*) FROM public.orders;

Smoke Tests (Applikation)

  • Login funktioniert
  • 2-3 wichtigste Geschäftsprozesse (Create/Update/Payment)
  • Background Jobs / Cron
  • Schreibpfade testen (Insert/Update/Delete)

Performance Quickcheck

  • Connection Pooling konfiguriert?
  • Error Rate & DB Connections nach Cutover beobachten

Häufige Fallstricke

Problem Lösung
Extensions fehlen Vorab inventarisieren (SELECT * FROM pg_extension) und auf Ziel installieren
Sequences falsch nextval() stimmt nicht → per Script setval() anpassen
Grants/Owner fehlen Nachziehen, weil --no-owner/--no-privileges genutzt wird
Timeouts beim Dump Parallelisieren (-j), Wartungsfenster anpassen

Cutover-Checkliste

T-7 bis T-2 Tage

  • Hetzner VM + Volume steht (Location gewählt)
  • PostgreSQL installiert, Firewall/pg_hba konfiguriert
  • Backup-Job auf Ziel aktiv
  • Probedump/Proberestore durchgeführt

T-24h

  • Wartungsfenster kommuniziert
  • Rollback definiert (Conn-String zurück auf RDS)
  • Smoke-Test-Szenarien dokumentiert

Cutover

  • App Read-Only / Maintenance
  • Dump erstellt + transferiert + restore
  • Validierung: Counts + Stichproben + Smoke Tests
  • App auf Hetzner DB umgestellt
  • Monitoring (Errors, DB connections, latency)

T+24h

  • RDS noch read-only behalten (Sicherheitsnetz)
  • Performance & Fehler beobachten
  • RDS dekommissionieren, wenn stabil

Alternativen bei minimaler Downtime

Wenn Dump/Restore zu lang dauert oder Downtime kritisch ist:

  • Logical Replication (Publication/Subscription) – Low Downtime, mehr Setup (AWS Blog)
  • AWS DMS (Full Load + CDC) – orchestriert, aber Setup-Aufwand (AWS Docs)

Für diesen Artikel – weil Downtime ok – bleibt pg_dump/restore die Default-Empfehlung.


Unser Vorgehen bei WZ-IT

Unser Standard-Flow für AWS RDS → Hetzner PostgreSQL:

  1. Assessment: DB-Größe, Extensions, Änderungsrate, Downtime-Budget
  2. Zielsystem: Hetzner VM provisionieren, PostgreSQL installieren, Firewall/Backup
  3. Testmigration: Probedump auf Test-DB, Validierung, Performance-Check
  4. Cutover-Planung: Wartungsfenster, Rollback-Plan, Kommunikation
  5. Migration: Dump → Transfer → Restore → Validierung → Cutover
  6. Monitoring: Error Rates, Latenzen, App-Logs, Backup-Verifizierung

👉 Wir erstellen euch einen konkreten Cutover-Runbook mit allen Befehlen und Checklisten.


Weiterführende Guides

Diese Anleitungen könnten euch ebenfalls interessieren:


Bereit für die Migration? Bei WZ-IT übernehmen wir Analyse, Migration und Betrieb eurer Datenbank-Infrastruktur – von AWS zu kosteneffizienten, europäischen Alternativen.

👉 Jetzt kostenlose Kostenanalyse anfragen

Häufig gestellte Fragen

Antworten auf wichtige Fragen zu diesem Thema

Die Dauer hängt von der Datenbankgröße ab. Mit pg_dump/restore und parallelen Jobs (-j 8) sind 50-100 GB in wenigen Stunden migriert. Für größere DBs oder minimale Downtime: Logical Replication prüfen.

Nein, wenn ihr während des Dumps einen Write-Freeze macht (App Read-Only). pg_dump erstellt einen konsistenten Snapshot. Validierung über Rowcounts und Stichproben empfohlen.

Nein, Hetzner bietet kein Managed PostgreSQL wie AWS RDS. Ihr betreibt PostgreSQL selbst auf einer Cloud VM – mit voller Kontrolle über Konfiguration, Backups und Updates.

Eine Hetzner Cloud VM (z.B. CPX31 mit 8 vCPU, 16 GB RAM) kostet ca. 15€/Monat. Vergleichbare RDS-Instanzen (db.m5.large) liegen bei 150-200€/Monat – ohne Storage, I/O und Backups.

Installiert die gleiche Major-Version wie auf RDS (z.B. PostgreSQL 15). pg_dump/restore funktioniert auch bei Minor-Version-Unterschieden problemlos.

Lassen Sie uns über Ihre Idee sprechen

Ob konkrete IT-Herausforderung oder einfach eine Idee – wir freuen uns auf den Austausch. In einem kurzen Gespräch prüfen wir gemeinsam, ob und wie Ihr Projekt zu WZ-IT passt.

Vertraut von führenden Unternehmen

  • Keymate
  • SolidProof
  • Rekorder
  • Führerscheinmacher
  • ARGE
  • NextGym
  • Paritel
  • EVADXB
  • Boese VA
  • Maho Management
  • Aphy
  • Negosh
  • Millenium
  • Yonju
  • Mr. Clipart
Timo Wevelsiep & Robin Zins - CEOs of WZ-IT

Timo Wevelsiep & Robin Zins

Geschäftsführer

1/3 – Themenauswahl33%

Worum geht es bei Ihrer Anfrage?

Wählen Sie einen oder mehrere Bereiche, bei denen wir Sie unterstützen dürfen.