Anwendungsmigration
Sobald Sie Ihre Datenbank von einem lokalen Speicherort zu Azure migriert haben, müssen Sie Ihre vorhandenen Anwendungen aktualisieren, sodass diese am neuen Speicherort auf PostgreSQL zugreifen können.
Ihr ursprünglicher lokaler Server und Ihre ursprüngliche lokale Datenbank enthalten Rollen. Diese Rollen definieren Berechtigungen, die Benutzern zugeordnet sind, die Vorgänge, die von diesen Benutzern durchgeführt werden können, sowie die Objekte, für die diese Benutzer die genannten Vorgänge durchführen können. Für Azure Database for PostgreSQL werden dieselben Authentifizierungs- und Autorisierungsmethoden genutzt wie bei einer lokalen Ausführung von PostgreSQL.
In dieser Lerneinheit erfahren Sie, welche Aktualisierungen Sie durchführen müssen, damit Ihre Anwendungen eine Verbindung zur neu migrierten Azure Database for PostgreSQL-Instanz herstellen können.
Manuelles Erstellen der Benutzerrollen
Wenn Sie eine PostgreSQL-Datenbank mithilfe von Azure Database Migration Service zu Azure Database for PostgreSQL migrieren, werden die Rollen und Rollenzuweisungen nicht kopiert. Sie müssen die erforderlichen Rollen und Benutzerkonten für den Administrator und die Benutzer der Tabellen in der Zieldatenbank neu erstellen. Dafür nutzen Sie das psql- oder das pgAdmin-Hilfsprogramm. Führen Sie den Befehl CREATE ROLE
aus. Mithilfe des GRANT
-Befehls weisen Sie einer Rolle die erforderlichen Berechtigungen zu. Beispiel:
CREATE ROLE myuseraccount WITH LOGIN NOSUPERUSER CREATEDB PASSWORD 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuseraccount;
Hinweis
Mit dem createuser
-Befehl können Sie in der Bash-Eingabeaufforderung auch PostgreSQL-Rollen erstellen.
Wenn Sie vorhandene Rollen in der lokalen Datenbank anzeigen möchten, führen Sie die folgende SQL-Anweisung aus:
SELECT rolname
FROM pg_roles;
Sie können den \du-Befehl im psql-Hilfsprogramm verwenden, um die den Rollen zugewiesenen Berechtigungen anzuzeigen.
List of roles
Role name | Attributes | Member of
---------------+------------------------------------------------------------+-----------
azureuser | Superuser, Create DB | {}
myuseraccount | Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Hinweis
Sie können feststellen, dass Azure Database for PostgreSQL einige eigene Rollen hinzufügt. Zu diesen Rollen gehört azure_pg_admin
, azure_superuser
und der Administratorbenutzer, den Sie bei Erstellung des Diensts angegeben haben. Sie melden sich mithilfe Ihrer Administratorkonten an, die anderen beiden Rollen dahingegen sind für die Verwendung durch Azure reserviert. Sie sollten nicht versuchen, diese Rollen zu verwenden.
Neukonfigurieren von Anwendungen
Das Neukonfigurieren einer Anwendung, sodass eine Verbindung zu Azure Database for PostgreSQL hergestellt wird, ist ein einfacher Prozess. Es ist jedoch wichtiger, eine Strategie für Migrationsanwendungen zu bestimmen.
Überlegungen für das Neukonfigurieren von PostgreSQL-Anwendungen
In einer Unternehmensumgebung gibt es möglicherweise viele Anwendungen, die für dieselben PostgreSQL-Datenbanken ausgeführt werden. Möglicherweise gibt es eine große Anzahl Benutzer, die diese Anwendungen ausführen. Sie möchten sicher sein, dass Ihre Systeme weiterhin funktionieren, Benutzer weiterhin ihre Aufgaben durchführen können und dass der Betrieb unternehmenskritischer Vorgänge weiterhin gewährleistet ist, wenn Sie vom vorhandenen System zu Azure Database for PostgreSQL wechseln. In Modul 1, Lerneinheit 2 (Überlegungen zur Migration) wurden viele der Themen auf allgemeiner Ebene besprochen. Wenn Sie eine PostgreSQL-Datenbank zu Azure migrieren, sollten die folgenden Punkte berücksichtigt werden:
- Wenn Sie eine Offlinemigration durchführen, kann es schnell vorkommen, dass die Daten in der ursprünglichen PostgreSQL-Datenbank von den Daten in den neuen Datenbanken, die in Azure ausgeführt werden, abweichen, wenn die alte Datenbank weiterhin verwendet wird. Eine Offlinemigration eignet sich, wenn Sie den gesamten Betrieb eines Systems kurzzeitig einstellen und dann alle Anwendungen in das neue System übertragen, bevor Sie es wieder starten. Dieser Ansatz ist für ein unternehmenskritisches System möglicherweise ungeeignet. Wenn Sie eine Migration zu einer auf einer Azure-VM ausgeführten PostgreSQL-Instanz durchführen, konfigurieren Sie die PostgreSQL-Replikation zwischen Ihrem lokalen System und dem System, das in Azure ausgeführt wird. Die native PostgreSQL-Replikation erfolgt nur in eine Richtung, Drittanbieterlösungen sind jedoch verfügbar, die eine bidirektionale Replikation zwischen PostgreSQL-Servern unterstützen. Diese Lösungen funktionieren mit Azure Database for PostgreSQL jedoch nicht.
- Wenn Sie eine Onlinemigration durchführen, richtet der Azure Database for PostgreSQL-Dienst die Replikation von der lokalen Datenbank zur Datenbank ein, die in Azure ausgeführt wird. Nach der ersten Datenübertragung sorgt die Replikation dafür, dass alle Änderungen, die an der lokalen Datenbank vorgenommen wurden, in die Datenbank in Azure kopiert werden, jedoch nicht umgekehrt.
In beiden Fällen sollten Sie dafür sorgen, dass keine Livedaten durch versehentliche Überschreibungen verloren gehen. In einem Onlineszenario könnten beispielsweise Änderungen für eine Anwendung, die mit der in Azure Database for PostgreSQL ausgeführten Datenbank verbunden ist, versehentlich von einer Anwendung überschrieben werden, die noch die lokale Datenbank verwendet. Unter Berücksichtigung dieses Faktors sollten Sie sich die folgenden Ansätze ansehen:
- Migrieren Sie Anwendungen basierend auf Workloadtyp. Eine Anwendung, die nur zu Lesezwecken auf die Daten zugreift, kann sicher in die Datenbank verschoben werden, die in Azure Database for PostgreSQL ausgeführt wird. Alle Änderungen, die von Anwendungen vorgenommen werden, die noch die lokale Datenbank verwenden, werden übernommen. Sie können auch eine umgekehrte Strategie verwenden, wenn schreibgeschützte Anwendungen nicht vollständig aktuelle Daten benötigen.
- Migrieren Sie Benutzer basierend auf Workloadtyp. Diese Strategie ähnelt der vorherigen, mit Ausnahme der Tatsache, dass Sie möglicherweise über Benutzer verfügen, die nur Berichte erstellen, während andere die Daten auch ändern. Möglicherweise haben Sie dieselbe Anwendung so konfiguriert, dass sie entsprechend der Benutzeranforderungen eine Verbindung zur benötigten Datenbank herstellt.
- Migrieren Sie Anwendungen basierend auf verwendeten Datasets. Wenn verschiedene Anwendungen verschiedene Teilmengen der Daten verwenden, können Sie diese Anwendungen möglicherweise unabhängig voneinander migrieren.
Neukonfigurieren einer Anwendung
Wenn Sie eine Anwendung neu konfigurieren möchten, verweisen Sie in der neuen Datenbank darauf. Bei den meisten sinnvoll geschriebenen Anwendungen wird die Verbindungslogik isoliert. Dies sollte auch der einzige Codeteil sein, der geändert werden muss. In vielen Fällen sind diese Verbindungsinformationen möglicherweise als Konfigurationsinformationen gespeichert, und Sie müssen nur diese Informationen aktualisieren.
Die Verbindungsinformationen für Ihren Azure Database for PostgreSQL-Dienst finden Sie im Azure-Portal auf der Seite Verbindungszeichenfolgen für Ihren Dienst. Azure bietet die Informationen für viele gängige Programmiersprachen und Frameworks.
Öffnen von Netzwerkports
Wie in Lerneinheit 1 dieses Moduls erwähnt, handelt es sich bei Azure Database for PostgreSQL um einen geschützten Dienst, der hinter einer Firewall ausgeführt wird. Clients können keine Verbindung herstellen, wenn ihre IP-Adresse nicht vom Dienst erkannt wird. Sie müssen die IP-Adressen oder Adressblockbereiche für Clients hinzufügen, die Anwendungen ausführen, die eine Verbindung mit Ihren Datenbanken herstellen müssen.
Testen und Überprüfen von Anwendungen
Bevor Sie Ihre Anwendungen und Benutzer auf die neue Datenbank übertragen, müssen Sie dafür sorgen, dass die gesamte Konfiguration ordnungsgemäß durchgeführt wurde.
Beginnen Sie damit, eine Probeausführung für die Anwendungen durchzuführen und die einzelnen Rollen zu verbinden, um sicherzustellen, dass die richtige Funktionalität gegeben ist.
Führen Sie dann Belastungstests durch, um die typische Anzahl von Benutzern zu imitieren, die repräsentative Workloads parallel und für einen bestimmten Zeitraum ausführen. Überwachen Sie das System, und überprüfen Sie, ob Sie Ihrem Azure Database for PostgreSQL-Dienst ausreichend Ressourcen zugeordnet haben.
Nun können Sie das Rollout des Systems für Benutzer beginnen. Manchmal empfiehlt es sich, eine Art Canary-Test zu implementieren, bei dem eine kleine Teilmenge der Benutzer unvorbereitet in das neue System übertragen wird. So erhalten Sie eine unvoreingenommene Meinung darüber, ob Benutzer mit der neuen Datenbank gleich zufrieden, zufriedener oder unzufriedener sind.