Azure Database for PostgreSQL zu Hetzner Cloud migrieren – pg_dump/restore Guide

Hinweis zum Inhalt: Die Informationen in diesem Artikel wurden nach bestem Wissen zum Zeitpunkt der Veröffentlichung zusammengestellt. Technische Details, Preise, Versionen, Lizenzmodelle und externe Inhalte können sich ändern. Bitte prüfen Sie die genannten Angaben eigenständig, insbesondere vor geschäftskritischen oder sicherheitsrelevanten Entscheidungen. Dieser Artikel ersetzt keine individuelle Fach-, Rechts- oder Steuerberatung.

Azure-Kosten explodieren? Flexible Server zu teuer? Wir migrieren eure PostgreSQL-Datenbanken von Azure zu Hetzner Cloud – mit minimalem Risiko und klarem Cutover-Plan. 👉 Zur Azure-Migration-Übersicht | Kostenlose Analyse anfragen
Wenn Teams aus Azure rausmigrieren, ist die Datenbank oft der kritischste Baustein: Kosten und Lock-in spielen eine Rolle, aber im Alltag zählen vor allem Planbarkeit, Datenintegrität und ein sauberer Cutover. Für Azure Database for PostgreSQL (Flexible Server) beschreibt Microsoft Dump & Restore als Standardweg und empfiehlt dabei u.a. Directory-Format + Parallelisierung für große Datenbanken (Microsoft Learn).
Für das Ziel: In der Hetzner Cloud gibt es kein "Azure-ähnliches Managed PostgreSQL" – ihr baut das Ziel als VM + selbst installiertes PostgreSQL (und sorgt selbst für Backups/Monitoring). Für VM-Backups könnt ihr bei Hetzner Daily Backups aktivieren (7 Slots, Rotation) (Hetzner Docs).
Inhaltsverzeichnis
- Empfehlung und Zielbild
- Vorab-Checkliste
- Zielsystem vorbereiten: Hetzner VM und PostgreSQL
- Weg 1: Dump und Restore (Offline)
- Validierung nach Migration
- Weg 2: Logical Replication (Low Downtime)
- Häufige Fallstricke
- Cutover-Checkliste
- Unser Vorgehen bei WZ-IT
- Weiterführende Guides
Empfehlung und Zielbild
Default-Empfehlung: pg_dump/pg_restore
Wenn ihr Azure nutzt und ein Wartungsfenster (Downtime) akzeptabel ist:
- Der Ansatz ist erprobt, stabil und transparent – Microsoft liefert sehr konkrete Best Practices (Microsoft Learn)
- Komplizierte Replikation oder DMS-Setups entfallen
- Für Datenbanken bis ca. 100-500 GB ist ein Wartungsfenster realistisch planbar
Low-Downtime (Weg 2) lohnt sich erst, wenn:
- euer Wartungsfenster zu klein ist
- die DB so groß ist, dass Restore zu lange dauert
- oder ihr Writes nicht sauber "freezen" könnt
Vorab-Checkliste
Bevor ihr irgendwas dump't:
- Postgres Major Version prüfen (Azure → Ziel sollte kompatibel sein; ideal: gleiche Major-Version)
- Extensions inventarisieren
SELECT extname, extversion FROM pg_extension ORDER BY 1; - Rollen/Privileges: Wer braucht welche Rechte nach dem Umzug?
- Größe + Downtime-Toleranz: bestimmt Dump-Format, Parallelität, Cutover-Fenster
- Netzwerkzugriff: Ziel-VM muss aus Azure erreichbar sein
Zielsystem vorbereiten: Hetzner VM und PostgreSQL
VM und Storage anlegen
- 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: Port 5432 nur von Admin-/Migration-IPs
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
Backups aktivieren
In Hetzner könnt ihr Daily Backups für Cloud-Server aktivieren (7 Slots, ältestes wird überschrieben) (Hetzner Docs). Das ersetzt keine DB-logischen Backups, ist aber ein gutes Fallschirmnetz.
Weg 1: Dump und Restore (Offline)
Microsoft beschreibt für Azure Database for PostgreSQL Flexible Server explizit das Vorgehen inkl. Rollen-Export, Dump-Optionen und Restore; außerdem wird das Directory-Format empfohlen, weil es Parallelisierung ermöglicht (Microsoft Learn).
Ablauf (High-Level)
- Wartungsfenster starten – App in Maintenance / Read-Only
- Rollen sichern (separat mit pg_dumpall)
- Dump erstellen (Directory-Format, parallel)
- Transfer des Dumps zur Hetzner-VM
- Restore auf Ziel-PostgreSQL (parallel)
- Fixups – Ownership, Grants, Sequences, Stats
- Validierung – Counts, Stichproben, Smoke Tests
- Cutover – App-Connection-String umstellen
- Monitoring – Azure DB vorerst behalten (Rollback-Fenster)
Schritt 1: Rollen/Users exportieren
Microsoft führt das Muster pg_dumpall -r explizit als Schritt für Rollen/Users auf (Microsoft Learn).
export PGPASSWORD="<AZURE_PASSWORD>"
pg_dumpall -h <AZURE_HOST> -p 5432 -U <AZURE_ADMIN_USER> -r > roles.sql
Tipp: Rollen-File später reviewen (nicht blind ausführen), um unerwünschte Owner/Privilegien zu vermeiden.
Schritt 2: Datenbank dumpen (parallel)
Directory Format (für große DBs empfohlen):
export PGPASSWORD="<AZURE_PASSWORD>"
pg_dump \
-h <AZURE_HOST> -p 5432 -U <AZURE_ADMIN_USER> -d <DBNAME> \
-Fd -j 8 \
-f dumpdir/
Custom Format (für kleine/mittlere DBs):
pg_dump \
-h <AZURE_HOST> -p 5432 -U <AZURE_ADMIN_USER> -d <DBNAME> \
-Fc -Z 6 \
-f db.dump
Microsoft hat einen eigenen Artikel "Best practices for pg_dump and pg_restore" mit Parallelitäts- und VM-Überlegungen (Microsoft Learn).
Schritt 3: Transfer zur Hetzner VM
rsync -avP dumpdir/ root@<HETZNER_VM_IP>:/root/dumpdir/
rsync -avP roles.sql root@<HETZNER_VM_IP>:/root/
Schritt 4: Restore auf Hetzner VM
Datenbank anlegen:
export PGPASSWORD="<HETZNER_PASSWORD>"
createdb -h <HETZNER_VM_IP> -p 5432 -U <HETZNER_USER> <DBNAME>
Rollen einspielen (mit Vorsicht):
psql -h <HETZNER_VM_IP> -p 5432 -U <HETZNER_USER> -f /root/roles.sql
Restore (Directory, parallel):
pg_restore \
-h <HETZNER_VM_IP> -p 5432 -U <HETZNER_USER> -d <DBNAME> \
--no-owner --no-privileges \
-j 8 \
/root/dumpdir/
Warum
--no-owner --no-privileges? Beim Provider-Wechsel wollt ihr Rollen/Grants kontrolliert auf euer Zielmodell ziehen, statt Azure-Defaults zu importieren.
Statistiken aktualisieren:
ANALYZE;
Validierung nach Migration
Harte Checks (Daten)
- Rowcounts für kritische Tabellen vergleichen
- Summenchecks (z.B. Rechnungsbeträge)
- Stichproben (50-100 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)
Weg 2: Logical Replication (Low Downtime)
Azure Flexible Server unterstützt native logical replication und logical decoding; Microsoft beschreibt explizit Publisher/Subscriber-Modelle (Microsoft Learn). PostgreSQL erklärt dazu: Jede Subscription nutzt einen Replication Slot (PostgreSQL Docs).
High-Level Runbook:
- Ziel-VM steht, Schema ist vorbereitet
- Auf Azure: Publication erstellen
- Auf Hetzner: Subscription (Initial Sync + Streaming)
- Lag monitoren
- Cutover: kurzer Write-Freeze → Catch-up → App umstellen → Subscription/Slots aufräumen
Logical Replication ist mächtig – aber mehr Moving Parts (Netz, Slots, Lag, Wartung). Darum bei akzeptabler Downtime: Dump/Restore bleibt Default.
Häufige Fallstricke
| Problem | Lösung |
|---|---|
| Major Version Mismatch | Vorab festlegen, welche Postgres-Version auf Hetzner läuft |
| Extensions fehlen | Inventarisieren und installieren, bevor restore läuft |
| Sequences/Identity drift | Nach Restore prüfen (klassischer "Insert fails" Fehler) |
| Rollen/Grants fehlen | Mit --no-owner/--no-privileges bewusst nachziehen |
| Backup-Lücke nach Cutover | Sofort DB-Backup-Plan aktivieren |
Cutover-Checkliste
T-7 bis T-2 Tage
- Hetzner VM + Volume + Firewall fertig
- PostgreSQL installiert, Monitoring/Logs ok
- Hetzner Server Backups aktiviert (7 Slots)
- Extensions & Versionen geprüft
- Testlauf (kleine DB oder Snapshot) erfolgreich
T-24h
- Wartungsfenster kommuniziert
- Rollback-Plan schriftlich (Connection String zurück)
- Smoke-Test-Szenarien fixiert
Cutover
- App Read-Only / Maintenance
-
pg_dumpall -r+pg_dump+ Transfer +pg_restore - Validierung: Counts + Stichproben + Smoke Tests
- App auf Hetzner DB umgestellt
- Monitoring (Errors, DB connections, latency)
T+24h
- Azure DB noch als Fallback behalten
- Performance & Fehler beobachten
- Azure DB dekommissionieren, wenn stabil
Unser Vorgehen bei WZ-IT
Unser Standard-Flow für Azure PostgreSQL → Hetzner:
- Assessment: DB-Größe, Extensions, Änderungsrate, Downtime-Budget
- Zielsystem: Hetzner VM provisionieren, PostgreSQL installieren, Firewall/Backup
- Testmigration: Probedump auf Test-DB, Validierung, Performance-Check
- Cutover-Planung: Wartungsfenster, Rollback-Plan, Kommunikation
- Migration: Dump → Transfer → Restore → Validierung → Cutover
- 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:
- Azure Blob Storage zu Hetzner Object Storage migrieren – AzCopy & rclone Guide
- Azure zu Hetzner Migration – Komplettübersicht – Alle Azure-Services im Überblick
- Cloud-Migration Hub – Alle Provider-Migrationen im Überblick
- AWS RDS/Aurora PostgreSQL zu Hetzner migrieren – pg_dump/restore Guide
- Hetzner Expertise – Unsere Hetzner-Services im Überblick
Bereit für die Migration? Bei WZ-IT übernehmen wir Analyse, Migration und Betrieb eurer Datenbank-Infrastruktur – von Azure zu kosteneffizienten, europäischen Alternativen.
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 Azure Database for PostgreSQL. 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 Azure Flexible Server Instanzen liegen bei 100-200€/Monat – ohne Storage und Backups.
Ja, mit Logical Replication (Publication/Subscription). Azure Flexible Server unterstützt native logical replication. Das erfordert mehr Setup, ermöglicht aber Cutover mit minimalem Freeze.

Geschrieben von
Timo Wevelsiep
Co-Founder & CEO
Co-Founder von WZ-IT. Spezialisiert auf Cloud-Infrastruktur, Open-Source-Plattformen und Managed Services für KMUs und Enterprise-Kunden weltweit.
LinkedInLassen 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.


Timo Wevelsiep & Robin Zins
Geschäftsführer




