Identifizieren von Migrationstooloptionen

Abgeschlossen

Es gibt viele Optionen, um eine Migration von einem PostgreSQL-Server zu Azure Database für PostgreSQL Flexible Server durchzuführen. Es gibt native PostgreSQL-Tools wie pg_dump, pgadmin und pg_restore. Es gibt Microsoft Azure-Clouddienste wie den Datenbankmigrationsdienst und die Migrationsoption in Azure Database for PostgresSQL – Flexible Server, der den gesamten Datenübertragungsprozess von Quelle zu Ziel weitgehend automatisieren kann.

Azure-Datenbank für PostgreSQL Flexible Server – Migration

Innerhalb der Azure-Datenbank für PostgreSQL – Flexibler Serverdienst gibt es eine systemeigene Funktion, um die Migration von Datenbanken von anderen PostgreSQL-Instanzen zum Azure-basierten Dienst zu unterstützen. Diese Option ist auf die Offlinemigration von Datenbanken von Quelle zu Ziel ausgerichtet. Um diese Option zu verwenden, müssen wir die zuvor erläuterten pg_dumpall- und psql-Tools verwenden, um die Datenbanken auf Serverebene zu migrieren, die zum flexiblen Server migriert werden.

Dieses Feature wurde mit externen PostgreSQL-Instanzen als Quelle und dem flexiblen Server entworfen, auf dem das Migrationsprojekt als Ziel erstellt wurde. Im Wesentlichen zum Abrufen von Daten in den flexiblen Server. Die Vorteile der Nutzung dieses Dienstes im Vergleich zum manuellen Dump- und Wiederherstellungsprozess liegen in der gesteuerten Durchführung der Migration. Nach der Konfiguration überwacht sie den Prozess für alle Tabellen, die in den flexiblen Server migriert werden, sodass wir leicht erkennen können, wann die Umstellung auf Anwendungsebene durchgeführt werden kann.

Migrationsprojekte

Sobald die Konnektivität sortiert ist, müssen wir lediglich die Datenbank oder Datenbanken auswählen, die wir auf den neuen Server migrieren möchten. Beachten Sie im folgenden Screenshot, dass, wenn mehrere Datenbanken vorhanden sind, die mehrere Dienste zurückstellen, die Teil eines größeren Systems sind, dann können wir auswählen, dass sie als Gruppe und nicht einzeln migriert werden sollen. Diese Datenbankgruppierung kann nicht nur dazu beitragen, Migrationen zu beschleunigen, sondern auch die logische Konsistenz während der Migrationsaktivitäten aufrechtzuerhalten.

Screenshot des Azure-Portals mit der Auswahl der Migrationsprojektdatenbank.

Wenn wir den Überprüfungs- und Migrationsprozess starten, können wir den Gesamtfortschritt des Prozesses mithilfe des Projektdashboards überprüfen. Dieses Dashboard zeigt uns an, wie die Datenbanken überprüft und dann auf den neuen Server migriert werden.

Screenshot des Azure-Portals mit der Überprüfung und dem Migrationsstatus der Migrationsprojektdatenbank.

Diese Informationen werden nach der Migration aufbewahrt, sodass wir den Gesamtfortschritt nachverfolgen können. Die Informationen enthalten auch alle Nachweise, die erforderlich sind, um Kontrollprozesse über den Erfolg und die Dauer der durchgeführten Arbeiten zu ändern.

PostgreSQL-Werkzeuge

Hier untersuchen wir die wichtigsten Tools, die zum Migrieren von Daten von einem PostgreSQL-Server zu Azure Database für PostgreSQL Flexible Server verwendet werden können.

pgcopydb

Pgcopydb ist ein Open Source-Projekt, das den Kopiervorgang einer Datenbank zwischen PostgreSQL-Servern automatisieren kann. Es gibt mehrere Vorteile bei der Verwendung von pgcopydb im Vergleich zu den systemeigenen Tools, die bei der Installation von PostgreSQL bereitgestellt werden. Diese Vorteile sind unter anderem:

  • Entfernen der Notwendigkeit von Zwischendateien mithilfe von pg_backup und pg_restore.
  • Erstellen Sie Index Concurrency, um die Erstellung von Indizes in Tabellen mithilfe der synchronize__seqscans-Fähigkeit in PostgreSQL zu parallelisieren.
  • Multithreadtabellen zum parallelen Kopieren in Partitionsdaten und Übertragen größerer Tabellen.
  • Ändern Sie die Datenerfassung für die Datensynchronisierung, um die Notwendigkeit längerer Ausfallzeiten zu minimieren.

Es gibt zwei Hauptoptionen in pgcopydb, die für die Datenbank- und Datenmigration von einem Quellserver zum Ziel verwendet werden können. Diese Optionen sind klonen und kopieren.

pgcopydb clone

Clone ist die primäre Option zum Kopieren einer gesamten Datenbank von einem Quellserver in ein Ziel. Dieser Befehl verfügt über mehrere Optionen, die es uns ermöglichen, einen einfachen Klonvorgang zu konfigurieren, bis die Konfiguration der Änderungsdatenerfassung zum Synchronisieren von Daten automatisiert wird, um Migrationsausfallzeiten zu minimieren. Wir können auch die Optionen zum Parallelisieren der Datenübertragung nach Tabelle und Parallelübertragungsoptionen für Tabellen, Indizes und große Objekte angeben.

pgcopydb kopieren

"Kopieren" ist eine Option, die eine größere Granularität der Kontrolle ermöglicht, wenn es darum geht, die Datenbank oder Teile davon zu migrieren. Mit dieser Befehlsoption können Wir auswählen, welche Schemas, Tabellen, Rollen usw. von einer Quellserverdatenbank auf den Zielserver und die Zieldatenbank übertragen werden sollen. Dieser Befehl ist in den Szenarien hilfreich, in denen eine große Datenbank als Teil einer Anwendungsmodernisierungsmigrationsaktivität in kleinere datenbank umgewandelt wird. Alternativ können wir mit einer Konsolidierungsmigrationsaktivität den Inhalt einer Datenbank in Schemas innerhalb einer anderen Datenbank migrieren.

Diese Optionen sind nur einige der Möglichkeiten, wie pgcopydb uns dabei helfen kann, den Prozess der Migration von Datenbanken zu Azure Database für PostgreSQL Flexible Server zu verbessern. Dieser Prozess bietet eine Migration, die Risiken minimiert und unsere Erfolgsaussichten maximiert.

pgAdmin

pgAdmin ist ein weit verbreitetes Verwaltungstool, das für die Interaktion mit PostgreSQL-Datenbanken verwendet werden kann. Dieses Tool ermöglicht die Erstellung und Ausführung von pgsql-Skripts. Das Tool enthält ein Array nützlicher GUI-Tools, die zum Konfigurieren, Sichern und Wiederherstellen von PostgreSQL-Datenbanken verwendet werden können. Installieren Sie pgAdmin in der Regel auf Verwaltungsarbeitsstationen. Dieses Tool ermöglicht das Registrieren und Herstellen einer Verbindung mit mehreren PostgreSQL-Servern, wodurch es zu einem wichtigen Bestandteil unseres Migrationstools-Satzes wird.

Screenshot von pgAdmin mit Menüs mit verschiedenen Administratoroptionen.

pg_dump, pg_restore und psql

pg_dump ist ein Befehlszeilentool, das neben einer PostgreSQL-Instanz installiert und bei Bedarf auf einer Verwaltungsarbeitsstation installiert werden kann. Es ermöglicht die Erstellung konsistenter Datenbanksicherungen aus PostgreSQL auch dann, wenn eine gleichzeitige Arbeitsauslastung stattfindet. Es funktioniert mit einzelnen Datenbanken und ermöglicht es uns, eine ganze Datenbank oder Teile davon zu sichern.

Wenn Sie pg_dump zum Exportieren von Schemaobjekten verwenden, können wir psql verwenden, um die resultierende .sql Datei in der Zieldatenbank auszuführen, um die Objekte zu erstellen. Nach diesem Schritt können wir möglichkeiten zum Verschieben der Daten aus der Quelle in das Zielsystem untersuchen. Die Befehle, die zum Exportieren eines Datenbankschemas aus einer Datenbank und zum Erstellen in einer anderen Datenbank verwendet werden sollen, finden Sie im folgenden Beispiel.


pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql

psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql

Wenn Sie eine vollständige Sicherung der Quelldatenbank erstellen, verwenden Sie pg_restore, um die resultierende Datei zu lesen und die Datenbank in der PostgreSQL-Zielinstanz wiederherzustellen. Die Dauer dieser Aktivitäten beim Ausführen einer Sicherung und Wiederherstellung der Sicherung hängen von verschiedenen Faktoren ab. Insbesondere die Größe der Datenbank, die Leistung des Speichersubsystems und die Netzwerkbandbreite und Latenz zwischen den Verarbeitungskomponenten.

Das folgende Beispiel zeigt, wie wir ein Datenbankabbild in einem benutzerdefinierten Format erstellen und es anschließend auf einem anderen Server wiederherstellen können.


pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump

pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump

pg_dumpall

Während pg_dump verwendet wird, um eine einzelne Datenbank abzubilden, wird pg_dumpall verwendet, um alle Datenbanken in einer einzigen Skriptdatei abzubilden, die psql in eine neue Instanz von PostgreSQL einliest.

Darüber hinaus können pg_dumpall verwendet werden, um Skriptdateien für Objekte auf globaler Serverebene zu generieren, z. B. Rollen, von denen Datenbanken abhängen können, wenn sie zwischen Servern migriert werden.