In einer Reihe von vier Tutorials untersuchen wir die Migration einer MySQL-Datenbankinstanz zu einer PostgreSQL-Datenbank mithilfe von AWS Database Migration Service (DMS). Im ersten Tutorial „Migrieren von MySQL zu PostgreSQL auf AWS RDS, Teil 1“ haben wir DMS eingeführt und einen IAM-Benutzer für das DMS erstellt. Im zweiten Tutorial, Migration von MySQL zu PostgreSQL auf AWS RDS, Teil 2“, haben wir Instanzen von MySQL und PostgreSQL auf RDS erstellt und eine Verbindung zu den beiden Instanzen hergestellt. In diesem Fortsetzungstutorial erstellen wir eine DMS-Migration, um die Migration durchzuführen. Dieses Tutorial hat die folgenden Abschnitte:
- Erstellen einer DMS-Migration
- Erstellen einer Replikationsinstanz
- Migrationstask-Endpunkte erstellen
- Migrationsaufgabe erstellen
- Schlussfolgerung
Erstellen einer DMS-Migration
In diesem Abschnitt erstellen wir einen Datenbankmigrationsdienst (DMS), um die MySQL-Datenbank in die PostgreSQL-Datenbank zu migrieren. Eine DMS-Migration besteht aus folgenden Komponenten:
- Replikationsinstanz
- Datenbankendpunkte
- Aufgabe
Wir werden die Erstellung jedes dieser Elemente in Unterabschnitten besprechen, aber zuerst müssen Sie eine DMS-Migration erstellen. Navigieren Sie zum DMS-Dashboard und klicken Sie auf Migration erstellen , wie in Abbildung 1 gezeigt.
Abbildung 1: Migration erstellen
Der DMS-Assistent wird gestartet. Klicken Sie auf Weiter, wie in Abbildung 2 gezeigt.
Abbildung 2: DMS-Assistent
Erstellen einer Replikationsinstanz
Konfigurieren Sie als Nächstes eine Replikationsinstanz, die die Verbindung zwischen den Quell- und Zieldatenbanken herstellt, die Daten überträgt und Datenänderungen zwischenspeichert, die während des anfänglichen Datenladens auftreten. Geben Sie eine Replikationsinstanz Name an und Beschreibung , und wählen Sie eine Instanzklasse aus (der Standardwert ist dms.t2.medium), wie in Abbildung 3 gezeigt. Wählen Sie eine VPC aus und wählen Sie die Option zum Konfigurieren von Hochverfügbarkeit mit Mult-Az aus; die Standardeinstellung ist „Nein“. Wählen Sie die Option Öffentlich zugänglich .
Abbildung 3: Konfigurieren einer Replikationsinstanz
Unter Erweitert , behalten Sie die Standardeinstellungen für Zugewiesener Speicher bei (50 GB), Replikations-Subnetzgruppe, Verfügbarkeitszone (Keine Präferenz) und VPC-Sicherheitsgruppe (Standard verwenden), wie in Abbildung 4 gezeigt. Wählen Sie den KMS-Hauptschlüssel (dbms) aus, der zuvor unter Einrichten der Umgebung
Abbildung 4: Erweiterte Einstellungen für die Replikationsinstanz konfigurieren
Klicken Sie auf Weiter, wie in Abbildung 5 gezeigt.
Abbildung 5: Weiter
Die Replikationsinstanz wird erstellt, wie die Meldung in Abbildung 6 zeigt. Als Nächstes müssen die Quell- und Zieldatenbankverbindungen konfiguriert werden, was wir im nächsten Unterabschnitt erledigen werden.
Abbildung 6: Die Erstellung der Replikationsinstanz beginnt
Migrationstask-Endpunkte erstellen
Es kann einige Minuten dauern, bis die Replikationsinstanz erstellt wird. Die Migrationsendpunkte können hinzugefügt werden, während die Replikationsinstanz erstellt wird. Wählen Sie die Quell-Engine aus als „mysql“, wie in Abbildung 7 gezeigt.
Abbildung 7: Source Engine auswählen
Wählen Sie Zielmaschine aus als „postgres“, wie in Abbildung 8 gezeigt.
Abbildung 8: Auswahl der Ziel-Engine
In Servername , geben Sie den Endpunkt an für die RDS-DB-Instance für die Datenbank, indem Sie :port entfernen Suffix. Für eine MySQL-Datenbank ist der RDS-Endpunkt mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:3306 . Geben Sie daher den Servernamen an als mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com , wie in Abbildung 9 gezeigt. Für eine PostgreSQL-Datenbank auf RDS ist der Endpunkt postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:5432; Geben Sie daher den Servernamen an als postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com . Geben Sie den Port getrennt für Quell- und Zieldatenbank an:3306 für die MySQL-Datenbank und 5432 für Postgres.
Abbildung 9: Angeben von Servername und Port für Quell- und Zieldatenbanken
Scrollen Sie nach unten, um weitere Endpunktkonfigurationseinstellungen anzuzeigen, wie in Abbildung 10 gezeigt. Wählen Sie SSL-Modus als keine sowohl für die Quell- als auch für die Zieldatenbank. Geben Sie den Benutzernamen und das Passwort wie beim Erstellen der RDS-DB-Instances konfiguriert an. Geben Sie den PostgreSQL-Datenbanknamen (postgresdb) an, der ebenfalls beim Erstellen der RDS-DB-Instanz konfiguriert wurde.
Abbildung 10: Angeben von SSL-Modus, Benutzername, Passwort und SID oder Datenbankname
In den erweiterten Einstellungen können zusätzliche Verbindungsattribute angegeben werden, die für die MySQL-Datenbank und die PostgreSQL-Datenbank verfügbar sind, aber für dieses Tutorial sind keine erforderlich. Wählen Sie den KMS-Masterschlüssel (dbms) sowohl für die Quell- als auch für die Zieldatenbank aus (siehe Abbildung 11). Um die DMS-Endpunkte zu testen, klicken Sie auf Test ausführen Schaltflächen sind vorhanden, wie in Abbildung 11 gezeigt. Der Test ausführen Schaltflächen sind ausgegraut oder deaktiviert, bis die Replikationsinstanz erstellt wurde.
Abbildung 11: Erweiterte Einstellungen für DMS-Endpunkte konfigurieren
Wenn die Replikationsinstanz erstellt wurde, wird die Meldung „Replikationsinstanz erfolgreich erstellt“ angezeigt, wie in Abbildung 12 gezeigt.
Abbildung 12: Replikationsinstanz erfolgreich erstellt
Nachdem die Replikationsinstanz erstellt wurde, wird der Test ausführen Schaltflächen werden aktiviert. Klicken Sie auf Test ausführen , wie in Abbildung 13 gezeigt, für jede Datenbank.
Abbildung 13: Test ausführen
Die Verbindungen werden getestet, wie durch die Meldung „Testing endpoint connection“ in Abbildung 14 angezeigt.
Abbildung 14: Endpunktverbindungen testen
Wenn die Endpunktverbindungen wie erforderlich konfiguriert wurden, sollte die Meldung „Verbindung erfolgreich getestet“ angezeigt werden, wie in Abbildung 15 gezeigt. Klicken Sie auf Weiter.
Abbildung 15: Verbindung erfolgreich getestet
Migrationsaufgabe erstellen
Nachdem wir eine Replikationsinstanz und Datenbankendpunkte erstellt haben, erstellen wir als Nächstes eine Migrationsaufgabe, um eine Verbindung zu den Endpunkten herzustellen und die Daten tatsächlich zu übertragen. In der Aufgabe erstellen Geben Sie im Assistenten einen Aufgabennamen an (ein Standardwert ist ebenfalls angegeben) und fügen Sie eine Aufgabenbeschreibung hinzu (siehe Abbildung 16). Wählen Sie die Option Aufgabe beim Erstellen starten aus .
Abbildung 16: Aufgabenassistent erstellen
Die Quell- und Zielendpunkte und die Replikationsinstanz wurden zuvor konfiguriert und können beim Erstellen einer Aufgabe nicht geändert werden. Wählen Sie einen Migrationstyp aus , das drei Optionen auflistet, wie in Abbildung 17 gezeigt.
- Vorhandene Daten migrieren :Migriert die vorhandenen Schemata, Tabellen und Tabellendaten, die bereits in der Quelldatenbank vorhanden sind, migriert jedoch nicht fortlaufend nachfolgende Änderungen.
- Migrieren Sie vorhandene Daten und replizieren Sie laufende Änderungen :Migriert die vorhandenen Schemas, Tabellen und Tabellendaten, die bereits in der Quelldatenbank vorhanden sind, und migriert auch fortlaufend nachfolgende Änderungen.
- Nur Datenänderungen replizieren :Migriert keine vorhandenen Schemas, Tabellen und Daten und migriert nur die Datenänderungen.
Wählen Sie Vorhandene Daten migrieren aus Option, wie in Abbildung 17 gezeigt. Um Änderungen zu migrieren, was die anderen beiden Optionen bieten, muss die Aufbewahrungszeit des Binärprotokolls auf der MySQL-DB-Instance auf 24 Stunden oder mehr erhöht werden.
Abbildung 17: Auswahl des Migrationstyps als Vorhandene Daten migrieren
Konfigurieren Sie als Nächstes die Aufgabeneinstellungen . Der Zieltabellen-Vorbereitungsmodus Die Einstellung gilt für die Tabellen in der Zieldatenbank und bietet drei Optionen:
- Nichts tun :Daten und Metadaten der Zieltabellen werden nicht verändert
- Drop-Tabellen auf Ziel :Die vorhandenen Tabellen, sofern vorhanden, werden gelöscht und neue Tabellen erstellt
- Abschneiden :Tabellen werden abgeschnitten, was bedeutet, dass die Tabellendaten gelöscht, aber die Tabellenmetadaten nicht geändert werden. Die LOB-Spalten in Replikation einbeziehen Die Einstellung gilt für die LOB-Datentypspalten in der Quelldatenbank und bietet drei Optionen:
- Keine LOB-Spalten einschließen :LOB-Spalten werden von der Migration ausgeschlossen
- Vollständiger LOB-Modus :Migriert komplette LOBs unabhängig von der Größe; LOBs werden in Blöcken migriert, was den Migrationsprozess verlangsamen könnte
- Eingeschränkter LOB-Modus :Kürzt die LOBs auf die unter max. LOB-Größe (kb) angegebene Größe
Wählen Sie Zieltabellen-Vorbereitungsmodus aus wie Nichts tun, wie in Abbildung 18 gezeigt. Wählen Sie LOB-Spalten in Replikation einbeziehen aus als begrenzter LOB-Modus und geben Sie Max. LOB-Größe an als 32 kb (Standard). Wählen Sie Protokollierung aktivieren aus Option.
Abbildung 18: Aufgabeneinstellungen
Fügen Sie als Nächstes Auswahlregeln und Transformationsregeln in Tabellenzuordnungen hinzu , wie in Abbildung 19 gezeigt. Tabellenzuordnungen können mithilfe der Geführten hinzugefügt werden Benutzeroberfläche oder als JSON . Die geführte Benutzeroberfläche wird empfohlen. Mindestens eine Auswahlregel muss hinzugefügt werden und Transformationsregeln sind optional. Auswahlregeln werden angewendet, während die Auswahl von Schemas, Tabellen und Spalten aus der Quelldatenbank und Transformationsregeln angewendet werden, bevor Schemas, Tabellen und Spalten in die Zieldatenbank migriert werden.
Abbildung 19: Tabellenzuordnungen
Das Schema kann aus Schema name is ausgewählt werden Drop-down-Menü oder wählen Sie Geben Sie ein Schema ein aus, falls keine aufgelistet sind und geben Sie ein Schema in Schema name is like an Feld. Die Aktion Dropdownliste zwei Optionen auf:Einschließen und Ausschließen . Die Option „Einschließen“ schließt die für Schemas und Tabellen vorgenommene Auswahl ein, und die Option „Ausschließen“ schließt die Schemas und Tabellen aus. Die Excludes werden nach den Includes verarbeitet. Es müssen nicht alle Schemas ausgewählt werden und es müssen nicht alle Tabellen eines Schemas ausgewählt werden.
Wir werden die folgende Auswahlregel hinzufügen:
- Alle Schemata und alle Tabellen aus der Quelldatenbank einbeziehen
Wählen Sie für die Auswahlregel Schema eingeben aus und geben Sie Schemaname ist an als % , wodurch alle Schemas in der Quelldatenbank ausgewählt werden, wie in Abbildung 20 gezeigt. Geben Sie Table name is like an als % , wodurch alle Tabellen in den ausgewählten Schemas ausgewählt werden. Wählen Sie Aktion aus als Einschließen .
Abbildung 20: Konfigurieren einer Auswahlregel
Klicken Sie auf Auswahlregel hinzufügen (siehe Abbildung 21).
Abbildung 21: Hinzufügen einer Auswahlregel
Eine Auswahlregel wird hinzugefügt, wie in Abbildung 22 gezeigt. Wenn die Aufgabe erstellt wird, eine IAM-Rolle dms-cloudwatch-logs-role wird erstellt, um DMS den Zugriff auf CloudWatch zu ermöglichen.
Abbildung 22: Auswahlregel hinzugefügt
Fügen Sie als Nächstes eine Transformationsregel hinzu. Klicken Sie dazu auf Transformationsregel hinzufügen Link, wie in Abbildung 23 gezeigt.
Abbildung 23: Transformationsregel hinzufügen
Eine Transformationsregel hat Einstellungen für das Ziel . Die Regel hat drei Optionen, wie in Abbildung 24 gezeigt.
- Schema
- Tabelle
- Spalte
Wo gibt eine Teilmenge der durch die Auswahlregeln ausgewählten Objekte an. Die Aktion ist die anzuwendende Transformation und die folgenden Optionen stehen zur Verfügung:
- Umbenennen in (verfügbar für Schema- und Tabellenobjekte)
- Spalte entfernen (verfügbar für Spalten)
- Kleinbuchstaben erstellen (verfügbar für Schemas, Tabellen und Spalten)
- Großbuchstaben verwenden (verfügbar für Schemas, Tabellen und Spalten)
- Präfix hinzufügen (verfügbar für Schemas, Tabellen und Spalten)
- Präfix entfernen (verfügbar für Schemas, Tabellen und Spalten)
Abbildung 24: Einstellungen für Transformationsregeln
PostgreSQL verwendet Kleinbuchstaben in Schemas, Tabellen und Spalten. Wir werden drei Transformationsregeln hinzufügen:
- Schreiben Sie alle Schemas in Kleinbuchstaben
- Alle Tabellen klein schreiben
- Schreiben Sie in allen Spalten Kleinbuchstaben
Um die erste dieser Transformationsregeln hinzuzufügen, wählen Sie Ziel aus als Schema wie in Abbildung 25 gezeigt. Geben Sie Schema name is like % an . Wählen Sie Aktion aus als Kleinbuchstaben schreiben und klicken Sie auf Transformationsregel hinzufügen .
Abbildung 25: Hinzufügen einer Transformationsregel
Eine Transformationsregel wird hinzugefügt (siehe Abbildung 26). Um eine weitere Transformationsregel hinzuzufügen, klicken Sie auf Transformationsregel hinzufügen erneut verlinken.
Abbildung 26: Transformationsregel hinzugefügt
Wählen Sie Ziel aus als Tabelle , wie in Abbildung 27 gezeigt. Geben Sie Schema name is like % an . Wählen Sie Tabellenname ist wie % . Wählen Sie Aktion aus als Kleinbuchstaben schreiben und klicken Sie auf Transformationsregel hinzufügen .
Abbildung 27: Hinzufügen einer Transformationsregel zum Umbenennen einer Tabelle
Wählen Sie Ziel aus als Spalte , wie in Abbildung 28 gezeigt. Geben Sie Schema name is like % an . Wählen Sie Tabellenname ist wie % . Wählen Sie Spaltenname ist wie % . Wählen Sie Aktion aus als Kleinbuchstaben schreiben und klicken Sie auf Transformationsregel hinzufügen .
Abbildung 28: Hinzufügen einer Transformationsregel, um den Spaltennamen in Kleinbuchstaben umzuwandeln
Die drei Auswahlregeln und eine hinzugefügte Transformationsregel sind in Abbildung 29 dargestellt. Wenn die Aufgabe ausgeführt wird, werden die Auswahlregeln vor den Transformationsregeln angewendet. Klicken Sie für erweiterte Einstellungen auf Erweiterte Einstellungen , wie in Abbildung 29 gezeigt.
Abbildung 29: Auswahlregeln und Transformationsregeln
In den Erweiterten Einstellungen , wählen Sie Tabelleneinstellungen steuern aus und geben Sie Steuertabelle im Ziel mit Schema erstellen an als öffentlich , wie in Abbildung 30 gezeigt, und klicken Sie auf Fertig.
Abbildung 30: Festlegen des Steuertabellenschemas in Target
Die Einstellung Erweitert wird hinzugefügt (siehe Abbildung 31).
Abbildung 31: Erweiterte Einstellung
Klicken Sie nach dem Konfigurieren der Aufgabe auf Aufgabe erstellen , wie in Abbildung 32 gezeigt, um die Aufgabe zu erstellen.
Abbildung 32: Aufgabe erstellen
Eine Migrationsaufgabe wird erstellt, wie in Abbildung 33 gezeigt. Anfänglich lautet der Aufgabenstatus „Wird erstellt.“
Abbildung 33: Migrationsaufgabe
Eine Aufgabe kann einen der in Tabelle 1 beschriebenen Status haben.
Status | Beschreibung |
Erstellen | Die Aufgabe wird erstellt. |
Fertig | Die Aufgabe kann gestartet und ausgeführt werden. Folgt normalerweise dem Status „Creating“. |
Start | Die Aufgabe wird gestartet, während dieser Zeit stellt die Aufgabe eine Verbindung mit der Replikationsinstanz und den Datenbankendpunkten her. Auswahl- und Transformationsregeln werden angewendet. |
Läuft | Der Task wird ausgeführt, was impliziert, dass der Task die Datenbank migriert. |
Laden abgeschlossen | Der Task hat das Laden (Migration) der Datenbank abgeschlossen. |
Fehlgeschlagen | Die Aufgabe ist fehlgeschlagen. |
Fehler | Während der Migration ist ein Fehler aufgetreten. Einige Schemas und Tabellen wurden möglicherweise erfolgreich migriert, aber mindestens ein Schema oder eine Tabelle konnte nicht migriert werden. |
Ändern | Die Aufgabe wird geändert, normalerweise nachdem ein Benutzer die Aufgabe geändert hat. |
Beenden | Die Aufgabe wird angehalten, was normalerweise der Fall ist, nachdem der Benutzer ausgewählt hat, dass eine Aufgabe angehalten wird. |
Gestoppt | Die Aufgabe wurde angehalten, was daran liegen könnte, dass ein Benutzer eine Aufgabe angehalten hat oder dass ein Migrationstyp von Vorhandene Daten migrieren und laufende Änderungen replizieren verwendet wird und die Aufgabe das anfängliche Laden abgeschlossen hat . |
Löschen | Die Aufgabe wird gelöscht, was darauf zurückzuführen ist, dass der Benutzer die Aufgabe gelöscht hat. |
Tabelle 1: Aufgabenstatus
Zwei IAM-Rollen, eine für CloudWatch und die andere für VPC, werden erstellt, wie in Abbildung 34 gezeigt.
Abbildung 34: IAM-Rollen für DMS
Schlussfolgerung
In diesem dritten Tutorial zum Migrieren einer MySQL-Datenbankinstanz auf RDS zu einer Postgres-Datenbankinstanz auf RDS haben wir eine DMS-Migration einschließlich Replikationsinstanz, Migrationsendpunkten und Migrationsaufgabe erstellt. Im vierten Tutorial besprechen wir die Ausführung der DMS-Migration, um die Migration durchzuführen und die Ergebnisse auszuwerten.