Bekannte Probleme/Einschränkungen bei Onlinemigrationen von PostgreSQL zu Azure Database for PostgreSQL

In den folgenden Abschnitten werden bekannte Probleme und Einschränkungen in Bezug auf Onlinemigrationen von PostgreSQL zu Azure Database for PostgreSQL beschrieben.

Konfiguration der Onlinemigration

  • Auf dem PostgreSQL-Quellserver muss Version 9.4, 9.5, 9.6, 10 oder 11 ausgeführt werden. Weitere Informationen finden Sie unter Unterstützte PostgreSQL-Datenbankversionen.

  • 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.config zu aktivieren, legen Sie die folgenden Parameter fest:

    • wal_level: Legen Sie „logical“ fest.
    • 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: Legen Sie die Anzahl gleichzeitig ausgeführter Datenbanken fest. Der empfohlene Wert ist 10.
  • Fügen Sie die IP-Adresse des DMS-Agents zur PostgreSQL-Quelldatei pg_hba.conf hinzu.

    1. Notieren Sie sich die DMS-IP-Adresse, nachdem Sie die Bereitstellung einer Instanz von Azure Database Migration Service abgeschlossen haben.

    2. 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ößenbeschrä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. Screenshot des DMS-Bildschirms mit der Option zum Auswählen von Tabellen

Im Hintergrund gibt es einen pg_dump-Befehl, der verwendet wird, um das Speicherabbild der ausgewählten Tabellen mithilfe einer der folgenden Optionen zu erstellen:

  • -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 gibt eine Obergrenze von 7.500 Zeichen, die als Teil des Befehls „pg_dump“ nach der Option -t oder -T eingegeben werden können. 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 7.500 überschreitet, tritt bei dem Befehl „pg_dump“ ein Fehler auf.

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 bei 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 DELETE- oder UPDATE-Vorgänge für diese Tabelle zu einem Fehler bei der 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.