Wird geladen...

Wir haben festgestellt, dass Ihre Browsersprache Chinesisch ist. Möchten Sie unsere chinesische Website besuchen? [ Schließen ]
Von: Dervish

Im täglichen Datenbank‑Betrieb und ‑Wartung ist das Kopieren einer PostgreSQL‑Datenbank auf einen anderen Server eine kritische, häufig durchzuführende Aufgabe – sei es für die Migration auf einen Hochleistungsserver, das Bereitstellen einer produktionsähnlichen Umgebung über unterschiedliche Infrastrukturen hinweg oder den Aufbau eines redundanten Sicherungsservers. Zuverlässige Verfahren zum Kopieren von PostgreSQL‑Datenbanken auf andere Server zu beherrschen, ist unerlässlich für reibungslose DevOps‑ und Datenverwaltungs‑Workflows. Dieser Artikel erläutert die zentralen Voraussetzungen, zwei bewährte Verfahren für den serverübergreifenden Kopiervorgang (mit wiederverwendbaren Code‑Beispielen für jeden Schritt) sowie einen schnellen Workflow für das Kopieren innerhalb desselben Servers als vorbereitende Maßnahme – alles optimiert für die nahtlose Migration auf einen Remote‑Server.

PostgreSQL Copy Database to Another Server

Warum eine PostgreSQL‑Datenbank auf einen anderen Server kopieren?

Das serverübergreifende Kopieren von PostgreSQL‑Datenbanken ist eine grundlegende Operation moderner Dateninfrastruktur mit drei zentralen geschäftlichen und technischen Anwendungsfällen:

  1. Server‑Migration und Skalierung: Verschieben von Datenbanken von lokalen Altservern auf Cloud‑Instanzen (AWS, Azure, GCP) oder Hochleistungs‑Dediziert‑Server, um wachsenden Geschäftsverkehr und Datenvolumen zu bewältigen.
  2. Isoliertes Test‑ und Entwicklungsumfeld: Replizieren einer Produktionsdatenbank auf einen entfernten Testserver für die Funktionsentwicklung, Fehlerbehebung und Leistungstests – ohne Risiken durch Änderungen an der laufenden Produktionsdatenbank.
  3. Notfallwiederherstellung und Redundanz: Aufbau eines entfernten Sicherungsdatenbank‑Servers, um die Wiederherstellbarkeit der Daten bei Hardware‑Ausfällen, Netzwerkausfällen oder menschlichen Fehlern auf dem Primärserver sicherzustellen.

Voraussetzungen für das Kopieren einer PostgreSQL‑Datenbank auf einen anderen Server

Stellen Sie sicher, dass diese Anforderungen erfüllt sind, um Kopier‑ oder Migrationsfehler zu vermeiden:

  1. Auf sowohl dem Quellserver (Originaldatenbank) als auch dem Zielserver (entfernter Zielort) ist PostgreSQL installiert, mit kompatiblen Hauptversionen (vermeiden Sie die Migration von einer neueren PostgreSQL‑Version auf eine ältere).
  2. Sie verfügen über ein PostgreSQL‑Benutzerkonto mit den Berechtigungen SUPERUSER oder CREATEDB/pg_dump auf beiden Servern.
  3. Die Netzwerkverbindung zwischen den Servern ist hergestellt: Der Zielserver kann den Quellserver erreichen, und der Standard‑Port 5432 von PostgreSQL ist in Firewalls‑/Sicherheitsgruppen auf beiden Seiten geöffnet.
  4. Ein SSH‑Zugriff zwischen den Servern ist verfügbar (für den Dateitransfer beim Dump‑Restore‑Verfahren).

Datenbank‑Snapshot auf demselben Server: Vorbereitung für den serverübergreifenden Kopiervorgang

Obwohl das Hauptziel das Kopieren auf einen anderen Server ist, ist eine Datenbankkopie auf demselben Server oft eine notwendige Vorbereitungsmaßnahme – beispielsweise zum Erstellen eines sauberen Snapshots der Produktionsdatenbank auf dem Quellserver (um das Kopieren von laufenden, sich ändernden Daten zu vermeiden), bevor diese remote migriert wird. Verwenden Sie den Befehl CREATE DATABASE…WITH TEMPLATE für das schnelle lokale Klonen (das einzige Verfahren für Kopien auf demselben Server, das Sie benötigen).

Schritt 1: Aktive Verbindungen zur Quelldatenbank beenden

Das lokale Klonen schlägt fehl, falls für die Quelldatenbank noch aktive Benutzer‑ oder Anwendungsverbindungen bestehen – fragen Sie zuerst alle offenen Sitzungen ab und beenden Sie diese:

  1. Melden Sie sich im PostgreSQL‑Terminal auf dem Quellserver an:
bash
psql -U postgres
  1. Liste der aktiven Verbindungen zur Quelldatenbank anzeigen (ersetzen Sie dvdrental durch Ihren Datenbanknamen):
SQL
SELECT pid, usename, client_addr 
FROM pg_stat_activity
WHERE datname = 'dvdrental';
  1. Alle aktiven Verbindungen zur Quelldatenbank beenden:
SQL
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'dvdrental';

Schritt 2: Lokale Snapshot‑Kopie erstellen

Klonen Sie die Quelldatenbank zu einem lokalen Snapshot (diese saubere Kopie wird anschließend auf den Remote‑Server migriert):

SQL
CREATE DATABASE dvdrental_snapshot WITH TEMPLATE dvdrental; 

Dieser Befehl erstellt eine exakte Kopie der Quelldatenbank. Die Ausführungsdauer hängt von der Datenbankgröße ab – für diese native PostgreSQL‑Operation werden keine zusätzlichen Werkzeuge benötigt.

Schritt 3: Lokalen Snapshot überprüfen

Bestätigen Sie die erfolgreiche Erstellung des Snapshots (um eine gültige Kopie für die Remote‑Migration sicherzustellen):

SQL
\l

Sie sehen die Snapshot‑Datenbank (z. B. dvdrental_snapshot) in der PostgreSQL‑Datenbankliste – dies ist Ihre stabile Quelle für das Kopieren auf einen anderen Server.

So kopieren Sie eine PostgreSQL‑Datenbank auf einen anderen Server [2 Verfahren]

Dies sind die zwei branchenüblichen Verfahren zum Kopieren einer PostgreSQL‑Datenbank auf einen entfernten Zielserver – jedes optimiert für unterschiedliche Netzwerk‑ und Datenmengen‑Szenarien, mit schrittweisen Code‑Beispielen für die direkte Umsetzung.

Verfahren 1. PostgreSQL‑Datenbank mit Dump, Transfer und Wiederherstellung kopieren

Dies ist das stabilste und am weitesten verbreitete Verfahren für das serverübergreifende PostgreSQL‑Kopieren, ideal für große Datenbanken (ab 10 GB) oder langsame Netzwerkverbindungen zwischen Servern. Dabei wird die Datenbank auf dem Quellserver in eine portable SQL‑Dump‑Datei exportiert, die Datei per SSH auf den Zielserver übertragen und anschließend auf dem Remote‑Server in eine neue Datenbank wiederhergestellt. Während der Wiederherstellung ist keine permanente Netzwerkverbindung erforderlich – dadurch ist es unempfindlich gegen Netzwerkunterbrechungen.

Schritt 1: Export des Datenbank‑Snapshots in eine SQL‑Dump‑Datei (Quellserver)

Nutzen Sie auf der Befehlszeile des Quellservers (nicht im PostgreSQL‑Terminal) pg_dump (das native Sicherungswerkzeug von PostgreSQL), um Ihren lokalen Snapshot (oder direkt die Quelldatenbank) in eine SQL‑Datei zu exportieren. Ersetzen Sie dvdrental_snapshot durch Ihren Datenbanknamen:

bash
pg_dump -U postgres -d dvdrental_snapshot -f dvdrental_snapshot.sql
Parameter‑Erläuterung:
-U postgres: Angabe des privilegierten PostgreSQL‑Benutzers (bei Bedarf durch Ihren eigenen Benutzer ersetzen).
-d dvdrental_snapshot: Die zu exportierende Datenbank (verwenden Sie den lokalen Snapshot für eine saubere Kopie).
-f dvdrental_snapshot.sql: Die Ausgabedump‑Datei (wird standardmäßig im aktuellen Verzeichnis gespeichert).

Schritt 2: Übertragen der Dump‑Datei auf den Zielserver (SSH/SCP)

Nutzen Sie scp (Secure Copy Protocol), um die SQL‑Dump‑Datei vom Quellserver auf den Zielserver zu übertragen – dies ist die sicherste Methode für den Netzwerk‑Dateitransfer. Führen Sie diesen Befehl auf dem Quellserver aus:

bash
scp dvdrental_snapshot.sql postgres@target_server_ip:/home/postgres/
Ersetzen:
target_server_ip: Die öffentliche/private IP‑Adresse oder der Hostname Ihres entfernten Zielservers.
/home/postgres/: Das Verzeichnis auf dem Zielserver, in das die Datei gespeichert wird (verwenden Sie einen Pfad, auf den der PostgreSQL‑Benutzer Zugriff hat).

Schritt 3: Leere Datenbank erstellen (Zielserver)

Melden Sie sich im PostgreSQL‑Terminal auf dem Zielserver an und erstellen Sie eine leere Datenbank für die wiederherzustellenden Daten – der Datenbankname kann zur Konsistenz mit dem der Quelldatenbank übereinstimmen:

bash
psql -U postgres
SQL
CREATE DATABASE dvdrental; 

Schritt 4: Wiederherstellen der Dump‑Datei in der neuen Datenbank (Zielserver)

Nutzen Sie auf der Befehlszeile des Zielservers (verlassen Sie zuerst das PostgreSQL‑Terminal) psql, um die SQL‑Dump‑Datei in der soeben erstellten leeren Datenbank wiederherzustellen. Führen Sie folgenden Befehl aus:

bash
psql -U postgres -d dvdrental -f /home/postgres/dvdrental_snapshot.sql 

Der Wiederherstellungsvorgang erstellt alle Tabellen, Indizes und Daten exakt so, wie sie im Snapshot des Quellservers vorliegen.

Verfahren 2. PostgreSQL‑Datenbank mit direktem Pipe‑Sync kopieren

Für kleine bis mittlere Datenbanken (unter 10 GB) sowie schnelle, stabile Netzwerkverbindungen zwischen den Servern (z. B. innerhalb desselben Cloud‑VPC, dediziertes privates Netzwerk) können Sie mit einem einzeiligen Pipe‑Befehl die PostgreSQL‑Datenbank direkt auf einen anderen Server kopieren – es ist keine zwischengeschaltete SQL‑Dump‑Datei erforderlich. Dieses Verfahren ist schneller und kompakter, da es die Ausgabe von pg_dump (Quellserver) direkt an psql (Zielserver) in Echtzeit weiterleitet.

Ausführen des einzeiligen serverübergreifenden Kopierbefehls:

Führen Sie diesen Befehl auf dem Quellserver aus (oder auf Ihrem lokalen Rechner mit Zugriff auf beide Server) – dieser einzelne Befehl übernimmt Export, Transfer und Wiederherstellung gleichzeitig:

bash
pg_dump -C -h source_server_ip -U postgres dvdrental_snapshot | psql -h target_server_ip -U postgres dvdrental
Wichtige Parameter‑Erläuterung (der Parameter -C ist entscheidend für dieses Verfahren):

-C: Erstellt automatisch die Zieldatenbank auf dem Remote‑Server – Sie müssen CREATE DATABASE nicht manuell ausführen (spart einen Arbeitsschritt auf dem Zielserver).

-h source_server_ip: IP‑Adresse / Hostname des Quellservers (verwenden Sie localhost, falls der Befehl direkt auf dem Quellserver ausgeführt wird).
-h target_server_ip: IP‑Adresse / Hostname des entfernten Zielservers.
dvdrental_snapshot: Die Quelldatenbank (lokaler Snapshot auf dem Quellserver).
dvdrental: Der Name der Zieldatenbank (wird automatisch durch den Parameter -C erstellt).

Überprüfung nach dem Kopiervorgang: Sicherstellen der Datenintegrität auf dem Zielserver

Nach dem Kopieren der Datenbank auf einen anderen Server müssen Sie die Datenkonsistenz zwischen Quell‑ und Zielserver prüfen – dieser Schritt ist zwingend erforderlich, um fehlende Daten oder beschädigte Tabellen in der entfernten Datenbank auszuschließen. Führen Sie diese Prüfungen auf dem Zielserver aus:

  1. Überprüfung der Existenz von Datenbank und Tabellen
bash
psql -U postgres -d dvdrental 
SQL
-- Alle Tabellen auflisten (Anzahl muss mit der Quelle übereinstimmen) \dt
-- Gesamtanzahl Zeilen einer Kern‑Tabelle prüfen (durch Ihre Schlüsseltabelle ersetzen) SELECT COUNT(*) FROM customer;

Vergleichen Sie Tabellenanzahl und Zeilenzahlen mit dem Quellserver – diese müssen exakt übereinstimmen.

  1. Stichprobenartige Datenprüfung

Fragen Sie Beispieldaten aus einer wichtigen Tabelle ab, um zu bestätigen, dass die Werte mit der Quelle identisch sind:

SQL
SELECT * FROM payment LIMIT 10; 
  1. Funktionsprüfung der Datenbank
  • Prüfen Sie, ob Indizes, Fremdschlüssel und gespeicherte Prozeduren vorhanden sind und funktionieren (z. B. Ausführen einer einfachen Join‑Abfrage).
  • Falls die Datenbank mit einer Anwendung verknüpft ist, leiten Sie die Anwendung auf den entfernten Zielserver um und testen Sie zentrale Geschäftsfunktionen (z. B. Benutzer‑Login, Einfügen/Aktualisieren von Daten).

Alternatives Verfahren zum Kopieren einer PostgreSQL‑Datenbank auf einen anderen Server

Obwohl die nativen pg_dump‑ / Pipe‑Verfahren für einfache serverübergreifende Kopiervorgänge funktionieren, weisen sie klare Einschränkungen auf: Manuelle Befehlszeilen‑Operationen sind fehleranfällig (insbesondere für technisch weniger versierte Benutzer), eine echte inkrementelle Echtzeit‑Replikation wird nicht unterstützt (es lassen sich nur statische Snapshots kopieren), und es gibt keine zentrale Überwachung oder visuelle Verwaltung. Für Unternehmensumgebungen, in denen Ausfallzeitfreiheit, Echtzeit‑Synchronisation und einfache Verwaltung entscheidend sind, ist i2Stream von Information2 Software eine leistungsstarke Lösung, die diese Probleme behebt und einzigartige Vorteile gegenüber nativen Verfahren bietet.

  • Kein Befehlszeilen‑Aufwand: Native Verfahren erfordern manuelle CLI‑Operationen und PostgreSQL‑Fachkenntnisse. Über die visuelle Web‑Konsole von i2Stream richten Sie die serverübergreifende Replikation mit wenigen Klicks ein – auch für Nicht‑DBAs geeignet.
  • Inkrementelle Echtzeit‑Synchronisation: Native Werkzeuge unterstützen nur statische Voll‑Snapshots. i2Stream bietet sowohl die vollständige Replikation als auch eine inkrementelle Synchronisation im Millisekunden‑Bereich, sodass Zielserver stets auf dem aktuellen Stand gehalten werden.
  • Keine Auswirkungen auf die Produktion: Das native pg_dump verursacht hohe CPU‑ und Speicherauslastung auf Quellservern. Das agentenlose Design von i2Stream erfordert keine Software‑Bereitstellung auf der Produktionsseite und gewährleistet so die Geschäftskontinuität.
  • Garantierte Transaktionskonsistenz: Bei nativen Verfahren muss die Datenprüfung manuell erfolgen. i2Stream unterstützt die integrierte DDL‑/DML‑Synchronisation, setzt nach Netzwerkunterbrechungen automatisch fort und gewährleistet Datenintegrität auf Transaktionsebene.
  • Hervorragende Kompatibilität und Überwachung: Native Werkzeuge erfordern identische PostgreSQL‑Versionen. i2Stream unterstützt die plattform‑ und versionsübergreifende Replikation sowie eine zentrale Konsole zur Echtzeit‑Überwachung von Fortschritt, Latenz und Fehlern.

Wenn Sie weitere Informationen zum Kopieren von PostgreSQL‑Gesamtdatenbanken auf einen anderen Server wünschen, wenden Sie sich bitte über den technischen Support an uns, um eine Demo anzufordern.

60‑TAGE‑KOSTENLOSE TESTVERSION

Fazit

Das Kopieren von PostgreSQL‑Datenbanken von einem Server auf einen anderen ist zentral für Migrationen, Testumgebungen und Notfallwiederherstellung. Für einfache, kostengünstige Anforderungen wählen Sie die nativen Verfahren: Dump‑und‑Wiederherstellung für große Datenbanken / langsame Netzwerke oder den direkten Pipe‑Transfer für kleine Datenmengen / schnelle Netzwerke. Für Unternehmens‑Szenarien mit Anforderungen an Echtzeit‑Synchronisation, keine Produktionseinflüsse und einfache Verwaltung ist i2Stream die bessere Lösung.

Keine Kurzbiografie vorhanden

Weitere verwandte Artikel

Inhaltsverzeichnis:
Bleiben Sie über die neuesten Tipps informiert
Abonnieren Sie unseren Newsletter für aktuelle Einblicke, Neuigkeiten und exklusive Inhalte. Sie können sich jederzeit abmelden.
Abonnieren
Bereit, Ihre Unternehmensdatensicherheit zu verbessern?
Starten Sie eine 60-tägige Testversion oder sehen Sie sich eine Demo an, um zu erfahren, wie Info2soft Unternehmensdaten schützt.
Bitte füllen Sie das Formular aus und senden Sie es ab – unser Kundenservice wird sich in Kürze bei Ihnen melden.
Mit dem Absenden dieses Formulars bestätige ich, dass ich die Datenschutzerklärung.
{{ isSubmitting ? 'Wird gesendet...' : 'Absenden' }}