Migrationsfehler beheben
Im Migrationsjobprozess können während der Laufzeit Fehler auftreten.
- Einige Fehler, wie z. B. ein ungültiges Passwort in der Quelldatenbank, sind wiederherstellbar. Dies bedeutet, dass diese Fehler behoben werden können und der Migrationsjob anschließend automatisch fortgesetzt wird.
- Einige sind nicht behebbar, z. B. Fehler bei der Datenreplikation. In diesem Fall muss der Migrationsjob von Anfang an neu gestartet werden.
Wenn ein Fehler auftritt, ändert sich der Status des Migrationsjobs in Failed
und der Unterstatus gibt den letzten Status vor dem Fehler an.
Zum Beheben eines Fehlers rufen Sie den fehlgeschlagenen Migrationsjob auf, um den Fehler anzuzeigen, und folgen dann den Schritten in der Fehlermeldung.
Wenn Sie weitere Details zum Fehler aufrufen möchten, rufen Sie Cloud Monitoring über den Link im Migrationsjob auf. Die Logs werden nach dem jeweiligen Migrationsjob gefiltert.
In der folgenden Tabelle finden Sie einige Beispiele für Probleme und wie sie behoben werden können:
Symptom | Mögliche Ursachen | Lösungsvorschlag |
---|---|---|
Fehler beim Herstellen einer Verbindung zur Quelldatenbankinstanz. | Es gab ein Verbindungsproblem zwischen der Quelldatenbankinstanz und der Zielinstanz. | Folgen Sie der Anleitung unter Verbindungsprobleme beheben. |
Fehler beim Ausführen des Migrationsjobs aufgrund inkompatibler Versionen von Quell- und Zieldatenbank. | Die Versionen der Quell- und Zieldatenbank sind keine unterstützte Kombination. Die angegebene Quelldatenbankversion ist nicht mit der Zieldatenbankversion kompatibel. | Die Zieldatenbankversion muss mit der Quelldatenbankversion übereinstimmen oder eine Hauptversion höher sein. Erstellen Sie dann einen neuen Migrationsjob. |
Datendefinitionssprachen (DDLs) oder Datenbearbeitungssprachen (DMLs) sind in der Quelle blockiert. | DDLs, für die die ACCESS EXCLUSIVE -Sperre erforderlich ist und die während der Phase des vollständigen Dumps ausgeführt werden, werden blockiert. |
Während der ersten Synchronisierung (vollständiger Dump) sollten DDLs oder Programme, die Wenn sich eine Tabelle beispielsweise noch in der ersten Synchronisierung befindet und ein |
Fehlermeldung: No pglogical extension installed on databases (X)
|
Auf mindestens einer Quelldatenbank ist pglogical nicht installiert. |
Folgen Sie dieser Anleitung, um pglogical in den Datenbanken der Quellinstanz zu installieren. |
Fehlermeldung: Replication user 'x' doesn't have sufficient privileges.
|
Der Nutzer, der Database Migration Service verwendet, hat nicht die erforderlichen Berechtigungen für den vorgesehenen Vorgang. | Folgen Sie dieser Anleitung, um sicherzustellen, dass dieser Nutzer die erforderlichen Berechtigungen hat. |
Fehlermeldung: Unable to connect to source database server.
|
Database Migration Service kann keine Verbindung zum Quelldatenbankserver herstellen. | Prüfen Sie, ob die Quell- und Zielinstanzen der Datenbank miteinander kommunizieren können und ob Sie alle erforderlichen Voraussetzungen erfüllt haben, die beim Festlegen der Einstellungen für den Migrationsjob angezeigt wurden. |
Fehlermeldung: The source database 'wal_level' configuration must be equal to 'logical'.
|
Der Wert für wal_level für die Quelldatenbank ist auf einen anderen Wert als logical festgelegt. |
Legen Sie den Wert wal_level auf logical fest. |
Fehlermeldung: The source database 'max_replication_slots' configuration is not sufficient.
|
Der Parameter max_replication_slots wurde nicht richtig konfiguriert. |
Hier finden Sie eine Anleitung zum Festlegen dieses Parameters. |
Fehlermeldung: The source database 'max_wal_senders' configuration is not sufficient.
|
Der Parameter max_wal_senders wurde nicht richtig konfiguriert. |
Hier finden Sie eine Anleitung zum Festlegen dieses Parameters. |
Fehlermeldung: The source database 'max_worker_processes' configuration is not sufficient.
|
Der Parameter max_worker_processes wurde nicht richtig konfiguriert. |
Hier finden Sie eine Anleitung zum Festlegen dieses Parameters. |
Fehlermeldung: ODER
Fehlermeldung: |
Die für die Replikation erforderlichen Einstellungen können während der Promotion eines Migrationsjobs nicht bereinigt werden. | Führen Sie für jede Datenbank Befehle als Nutzer mit der Berechtigung Weitere Informationen dazu, welche Befehle ausgeführt werden müssen, finden Sie unter Replikations-Slots bereinigen. |
Fehlermeldung: |
Das für Database Migration Service bereitgestellte CA-Zertifikat der Quelle enthält möglicherweise nur das Root-Zertifikat. Für das Quellzertifikat sind jedoch sowohl das Root-Zertifikat als auch alle Zwischenzertifikate erforderlich. Wenn Sie beispielsweise den Amazon Relational Database Service verwenden, kann dieses Problem auftreten, wenn Sie das Zertifikat rds-ca-2019-root.pem verwenden. |
Erstellen Sie ein kombiniertes Quell-CA-Zertifikat, das sowohl das Root-Zertifikat als auch alle erforderlichen Zwischenzertifikate enthält. Verwenden Sie für den Amazon Relational Database Service anstelle des Zertifikats rds-ca-2019-root.pem das Zertifikat rds-combined-ca-bundle.pem. |
Fehlermeldung: |
Der für den Parameter max_locks_per_transaction festgelegte Wert ist nicht ausreichend. |
Legen Sie für diesen Parameter einen Wert fest, der mindestens {max_number_of_tables_per_database }/(max_connections + max_prepared_transactions ) beträgt. |
Fehlermeldung: |
Das pglogical-Paket ist auf der Quellinstanz nicht richtig installiert. | Weitere Informationen zur korrekten Installation dieses Pakets finden Sie unter pglogical-Paket auf der Quellinstanz installieren. |
Fehlermeldung: |
Die konfigurierte Quelle befindet sich im Wiederherstellungsmodus. | Konfigurieren Sie eine Quelle, die sich nicht im Wiederherstellungsmodus befindet. |
Der vollständige Dump dauert lange. | Der Import großer Datenmengen aus der Quelldatenbank in das AlloyDB-Ziel kann langsam sein. |
|
Fehlermeldung: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again |
Der Migrationsjob ist während der Phase des vollständigen Dumps fehlgeschlagen und kann nicht wiederhergestellt werden. Die Quelldatenbankinstanz wurde neu gestartet oder befindet sich im Wiederherstellungsmodus. Die Replikationsverbindungen wurden beendet, weil für den Parameter So ermitteln Sie die Ursache des Problems:
|
|
Fehlermeldung: ERROR: unknown column name {column_name} |
Eine Spalte wurde einer replizierten Tabelle auf dem primären Knoten, aber nicht auf dem Replikatknoten hinzugefügt. |
Bei kontinuierlichen Migrationen werden nur Änderungen der Datenbearbeitungssprache (Data Manipulation Language, DML) automatisch aktualisiert. Sie sind dafür verantwortlich, Änderungen an der Datendefinitionssprache (DDL) so zu verwalten, dass die Quell- und Zieldatenbanken kompatibel bleiben. Dies können Sie auf zwei Arten erreichen:
Beispiele für die Verwendung von |
Fehlermeldung: ERROR: cannot truncate a table referenced in a foreign key constraint |
Der Nutzer hat versucht, eine Tabelle zu kürzen, die eine Fremdschlüsseleinschränkung hat. |
Entfernen Sie zuerst die Fremdschlüsseleinschränkung und kürzen Sie dann die Tabelle. |
Fehlermeldung: ERROR: connection to other side has died |
Die Replikationsverbindung wurde aufgrund eines unzureichenden Werts für |
Erhöhen Sie den Parameterwert |
Wenn Sie ausgewählte Datenbanken migrieren und Daten nicht in eine oder mehrere Datenbanken repliziert werden können, wird in der Liste der Datenbanken der Status Fehler angezeigt. | Verschiedene Fehler bei Migrationsjobs. | Klicken Sie in der Spalte Fehler auf Fehler ansehen und beheben Sie die Fehler. Sie können die fehlgeschlagenen Datenbanken auch aus dem Migrationsjob entfernen. Weitere Informationen zum Entfernen einer fehlgeschlagenen Datenbank aus einem Migrationsjob finden Sie unter Migrationsjobs verwalten. |
Replikationsslots bereinigen
Sie sehen eine der folgenden Meldungen:
Cleanup may have failed on source due to error: generic::unknown: failed to connect to on-premises database.
Error promoting EM replica: finished drop replication with errors.
Mögliche Ursachen
Wenn Sie eine AlloyDB-Instanz hochstufen und die Quellinstanz nicht von der AlloyDB-Instanz aus erreichbar ist (z. B. wenn die Quellinstanz nicht ausgeführt wird oder Sie die AlloyDB-Instanz aus der Zulassungsliste der Quellinstanzen entfernt haben), können die für die Replikation erforderlichen Einstellungen während der Hochstufung eines Migrationsjobs nicht bereinigt werden. Sie müssen die Replikations-Slots manuell bereinigen.
Lösungsvorschlag
Führen Sie für jede Datenbank die folgenden Befehle als Nutzer mit der Berechtigung superuser
aus:
Rufen Sie die Namen der Replikationsslots aus der Fehlermeldung ab und führen Sie dann den folgenden Befehl aus, um die Slots einzeln zu löschen:
select pg_drop_replication_slot({slot_name});
-
Wenn die Namen der Replikations-Slots nicht in der Fehlermeldung enthalten sind, führen Sie den folgenden Befehl aus, um die vorhandenen Replikations-Slots abzufragen:
select pg_drop_replication_slot(slot_name) from pg_replication_slots where slot_name like '%alloydb%' and active = 'f';
-
Wenn keine AlloyDB-Repliken die Quellinstanz verwenden, führen Sie den folgenden Befehl aus, um die
pglogical
-Einstellungen zu bereinigen:select pglogical.drop_node(node_name) from pglogical.node where node_name like
'alloydb';
-
Wenn die
pglogical
-Erweiterung nicht mehr benötigt wird, führen Sie den folgenden Befehl aus, um sie zu deinstallieren:DROP EXTENSION IF EXISTS pglogical;
Verwaiste AlloyDB-Cluster im Bootstrapping-Modus löschen
In seltenen Fällen kann es vorkommen, dass Ihr Migrationsjob gelöscht wurde, der zugehörige AlloyDB-Cluster jedoch nicht und sich weiterhin im Bootstrapping-Modus befindet. Es ist möglich, den Cluster mit dem gcloud-Befehl von AlloyDB zum Löschen eines Clusters in Kombination mit der Option --force
zu löschen.
Wenn Sie einen Bootstrapping-Cluster löschen, während er von einem Migrationsjob verwendet wird, führt dies zu einem nicht definierten Verhalten.
Nutzer und Rollen verwalten
Vorhandene Nutzer migrieren
Derzeit unterstützt Database Migration Service nicht die Migration vorhandener Nutzer von einer Quellinstanz in eine AlloyDB-Zielinstanz. Sie können diese Migration verwalten, indem Sie die Nutzer manuell in AlloyDB erstellen.
Über den Nutzer alloydbexternalsync
Während der Migration gehören alle Objekte auf dem AlloyDB-Primärserver dem Nutzer alloydbexternalsync
. Nach der Datenmigration können Sie die Eigentümerschaft der Objekte auf andere Nutzer übertragen. Gehen Sie dazu so vor:
- Führen Sie den Befehl
GRANT alloydbexternalsync to {USER}
aus: - Führen Sie in jeder Datenbank den Befehl
reassign owned by alloydbexternalsync to {USER};
aus. - Führen Sie den Befehl
drop role alloydbexternalsync
aus, um den Nutzeralloydbexternalsync
zu entfernen.