Bekannte Probleme und Einschränkungen bei Onlinemigrationen von PostgreSQL zu Azure Database for PostgreSQL
Wichtig
Wir empfehlen, dass Sie für eine optimierte und effizientere Migration den neuen Migrationsdienst in Azure Database for PostgreSQL verwenden. Dieser Dienst vereinfacht den Ablauf durch die Unterstützung einer Vielzahl von Quellumgebungen und stellt dadurch einen problemlosen Übergang zu Azure Database for PostgreSQL sicher.
Dieser Artikel beschreibt bekannte Probleme und Einschränkungen im Zusammenhang mit Online-Migrationen von PostgreSQL zu Azure Database for PostgreSQL mit Azure Database Migration Service (DMS).
Konfiguration der Onlinemigration
Die niedrigsten unterstützten PostgreSQL-Quellversionen sind 9.4, und die höchste unterstützte Zielversion ist 14.9.
Es werden nur Migrationen zur gleichen oder einer höheren Version unterstützt. Das Migrieren von PostgreSQL 9.5 zu Azure Database for PostgreSQL 9.6 oder 10 wird z. B. nicht unterstützt. Die Migration von PostgreSQL 11 zu PostgreSQL 9.6 wird nicht unterstützt.
Um die logische Replikation in der PostgreSQL-Quelldatei
postgresql.conf
zu aktivieren, legen Sie die folgenden Parameter fest:Parameter Beschreibung wal_level
Als logisch festgelegt. max_replication_slots
Legen Sie mindestens die maximale Anzahl von Datenbanken für die Migration fest. Wenn Sie vier Datenbanken migrieren möchten, legen Sie den Wert mindestens auf 4
fest.max_wal_senders
Einstellen der Anzahl gleichzeitig ausgeführter Datenbanken. Empfohlener Wert: 10
.Fügen Sie die IP-Adresse des DMS-Agents zur PostgreSQL-Quelldatei
pg_hba.conf
hinzu.Notieren Sie sich die DMS-IP-Adresse, nachdem Sie die Bereitstellung einer Instanz von Azure Database Migration Service abgeschlossen haben.
Fügen Sie die IP-Adresse der Datei
pg_hba.conf
hinzu:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
Der Benutzer muss auf dem Server, der die Datenbank hostet, über die Rolle REPLIKATION verfügen.
Quell- und Zieldatenbankschema müssen übereinstimmen.
Größeneinschränkungen
- Sie können mit einem einzigen DMS-Dienst bis zu 1 TB Daten von PostgreSQL zu Azure Database for PostgreSQL migrieren.
- DMS ermöglicht es den Benutzern, Tabellen innerhalb einer Datenbank auszuwählen, die sie migrieren möchten.
Hinter den Kulissen nimmt der pg_dump
Befehl das Speicherbild der ausgewählten Tabellen mit einer der folgenden Optionen vor:
-T
, um die Tabellennamen einzuschließen, die auf der Benutzeroberfläche ausgewählt sind-t
, um die Tabellennamen auszuschließen, die vom Benutzer nicht ausgewählt wurden.
Es können maximal 7.500 Zeichen als Teil des Befehls pg_dump
nach der Option „-t
“ oder „-T
“ eingegeben werden. Der Befehl pg_dump
verwendet die Anzahl der Zeichen für ausgewählte oder nicht ausgewählte Tabellen, je nachdem, welcher Wert niedriger ist. Wenn die Anzahl der Zeichen für die ausgewählten und nicht ausgewählten Tabellen 7500 überschreitet, führt der Befehl pg_dump
zu einem Fehler.
Für das vorherige Beispiel würde der Befehl „pg_dump
“ wie folgt lauten:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
Im vorherigen Befehl beträgt die Anzahl der Zeichen 55 (einschließlich doppelter Anführungszeichen, Leerzeichen, -T
und Schrägstrich)
Einschränkungen für Datentypen
Einschränkung: Wenn kein Primärschlüssel für Tabellen vorhanden ist, werden Änderungen möglicherweise nicht mit der Zieldatenbank synchronisiert.
Problemumgehung: Legen Sie vorübergehend einen Primärschlüssel für die Tabelle fest, damit die Migration fortgesetzt wird. Entfernen Sie den Primärschlüssel nach Abschluss der Datenmigration.
Einschränkungen bei der Onlinemigration von AWS RDS PostgreSQL
Bei der Onlinemigration von Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL zu Azure Database for PostgreSQL können die folgenden Fehler auftreten:
Fehler: Der Standardwert der Spalte „{column}“ in der Tabelle „{table}“ der Datenbank „{database}“ unterscheidet sich für den Quell- und Zielserver. Auf der Quelle lautet er „{value on source}“, und auf dem Ziel „{value on target}“.
Einschränkung: Dieser Fehler tritt auf, wenn sich der Standardwert für ein Spaltenschema in Quell- und Zieldatenbank unterscheidet.
Problemumgehung: Stellen Sie sicher, dass das Schema des Ziels mit dem Schema der Quelle übereinstimmt. Weitere Informationen zum Migrieren des Schemas finden Sie in der Dokumentation zur Azure Database for PostgreSQL-Onlinemigration.
Fehler: Die Zieldatenbank „{database}“ enthält „{number of tables}“ Tabellen, während die Quelldatenbank „{database}“ „{number of tables}“ Tabellen enthält. Die Anzahl von Tabellen in der Quell- und Zieldatenbank sollte jeweils übereinstimmen.
Einschränkung: Dieser Fehler tritt auf, wenn sich die Anzahl der Tabellen in Quell- und Zieldatenbank unterscheidet.
Problemumgehung: Stellen Sie sicher, dass das Schema des Ziels mit dem Schema der Quelle übereinstimmt. Weitere Informationen zum Migrieren des Schemas finden Sie in der Dokumentation zur Azure Database for PostgreSQL-Onlinemigration.
Fehler: Die Quelldatenbank {database} ist leer.
Einschränkung: Dieser Fehler tritt auf, wenn die Quelldatenbank leer ist. Wahrscheinlich haben Sie die falsche Datenbank als Quelle ausgewählt.
Problemumgehung: Überprüfen Sie erneut die Quelldatenbank, die Sie für die Migration ausgewählt haben, und wiederholen Sie den Vorgang.
Fehler: Die Zieldatenbank „{database}“ ist leer. Migrieren des Schemas
Einschränkung: Dieser Fehler tritt auf, wenn für die Zieldatenbank kein Schema vorhanden ist. Stellen Sie sicher, dass das Schema des Ziels mit dem Schema der Quelle übereinstimmt.
Problemumgehung: Stellen Sie sicher, dass das Schema des Ziels mit dem Schema der Quelle übereinstimmt. Weitere Informationen zum Migrieren des Schemas finden Sie in der Dokumentation zur Azure Database for PostgreSQL-Onlinemigration.
Weitere Einschränkungen
Der Name der Datenbank darf kein Semikolon (
;
) enthalten.Eine erfasste Tabelle muss über einen Primärschlüssel verfügen. Wenn eine Tabelle keinen Primärschlüssel besitzt, ist das Ergebnis der Vorgänge DELETE- und UPDATE für Datensätze unvorhersehbar.
Die Aktualisierung eines Primärschlüsselsegments wird ignoriert. Das Anwenden einer solchen Aktualisierung wird vom Ziel als eine Aktualisierung identifiziert, die keine Zeilen aktualisiert hat. Das Ergebnis ist ein Datensatz, der in die Ausnahmetabelle geschrieben wurde.
Wenn Ihre Tabelle über eine
JSON
-Spalte verfügt, können alle DELETE- oder UPDATE-Vorgänge in dieser Tabelle zu einer fehlgeschlagenen Migration führen.Die Migration mehrerer Tabellen mit demselben Namen und unterschiedlicher Groß-/Kleinschreibung kann zu unvorhersehbarem Verhalten führen und wird nicht unterstützt. Ein Beispiel ist die Verwendung von „table1“, „TABLE1“ und „Table1“.
Änderungsverarbeitung von [ CREATE | ALTER | DROP | TRUNCATE ]-Tabellen-DDLs wird nicht unterstützt.
In Database Migration Service kann eine einzelne Migrationsaktivität nur bis zu vier Datenbanken aufnehmen.
Die Migration der Tabelle „pg_largeobject“ wird nicht unterstützt.