Info2soft verwendet Cookies, um Ihnen ein besseres und angenehmeres Surferlebnis auf unserer Website zu ermöglichen. Datenschutzerklärung
Wird geladen...
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.
Das serverübergreifende Kopieren von PostgreSQL‑Datenbanken ist eine grundlegende Operation moderner Dateninfrastruktur mit drei zentralen geschäftlichen und technischen Anwendungsfällen:
Stellen Sie sicher, dass diese Anforderungen erfüllt sind, um Kopier‑ oder Migrationsfehler zu vermeiden:
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:
psql -U postgres
SELECT pid, usename, client_addr
FROM pg_stat_activity
WHERE datname = 'dvdrental';
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):
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):
\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.
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.
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:
pg_dump -U postgres -d dvdrental_snapshot -f dvdrental_snapshot.sql
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:
scp dvdrental_snapshot.sql postgres@target_server_ip:/home/postgres/
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:
psql -U postgres
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:
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.
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:
pg_dump -C -h source_server_ip -U postgres dvdrental_snapshot | psql -h target_server_ip -U postgres dvdrental
-C: Erstellt automatisch die Zieldatenbank auf dem Remote‑Server – Sie müssen CREATE DATABASE nicht manuell ausführen (spart einen Arbeitsschritt auf dem Zielserver).
Ü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:
psql -U postgres -d dvdrental
-- 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.
Fragen Sie Beispieldaten aus einer wichtigen Tabelle ab, um zu bestätigen, dass die Werte mit der Quelle identisch sind:
SELECT * FROM payment LIMIT 10;
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.
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.
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.