Während der Laufzeit des Migrationsjobs können Fehler auftreten.
- Einige Fehler, z. B. ein ungültiges Passwort in der Quelldatenbank, sind wiederherstellbar. Dies bedeutet, dass diese Fehler behoben werden können und der Migrationsauftrag anschließend automatisch fortgesetzt wird.
- Einige sind nicht wiederherstellbar, z. B. Fehler bei der Datenreplizierung. In diesem Fall muss der Migrationsjob von vorn gestartet werden.
Wenn ein Fehler auftritt, ändert sich der Status des Migrationsjobs in Failed
und der Unterstatus entspricht dem letzten Status vor dem Fehler.
Wenn Sie einen Fehler beheben möchten, rufen Sie den fehlgeschlagenen Migrationsjob auf, um den Fehler anzuzeigen, und folgen Sie der Anleitung in der Fehlermeldung.
Weitere Informationen zum Fehler finden Sie in Cloud Monitoring. Klicken Sie dazu auf den Link zum Migrationsjob. Die Protokolle werden nach dem jeweiligen Migrationsjob gefiltert.
In der folgenden Tabelle finden Sie einige Beispiele für Probleme und wie sie behoben werden können:
Problem | Mögliche Ursache | Lösungsvorschlag |
---|---|---|
Wenn Sie zu einer
bestehenden Zielinstanz migrieren, erhalten Sie die folgende Fehlermeldung:
The destination instance contains existing data or user defined
entities (for example databases, tables, or functions). You can only
migrate to empty instances. Clear your destination instance and retry
the migration job.
|
Ihre Cloud SQL-Zielinstanz enthält zusätzliche Daten. Sie können nur zu vorhandenen Instanzen migrieren, die leer sind. Weitere Informationen finden Sie unter Bekannte Einschränkungen. | Stellen Sie die Zielinstanz als Lese-/Schreibinstanz bereit, entfernen Sie die zusätzlichen Daten und versuchen Sie den Migrationsjob noch einmal. Weitere Informationen finden Sie unter Zusätzliche Daten aus Ihrer vorhandenen Zielinstanz löschen. |
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 Kombination der Quell- und Zieldatenbankversionen wird nicht unterstützt. Insbesondere ist die angegebene Quelldatenbankversion nicht mit der Zieldatenbankversion kompatibel. | Die Version der Zieldatenbank muss mit der Version der Quelldatenbank identisch sein oder eine Hauptversion darüber liegen. Erstellen Sie dann einen neuen Migrationsjob. |
Datendefinitionssprachen (DDLs) oder Datenbearbeitungssprachen (DMLs) sind an der Quelle blockiert. | DDLs, für die die ACCESS EXCLUSIVE Sperre erforderlich ist und die während der vollständigen Dump-Phase ausgeführt werden, werden blockiert. |
Während der anfänglichen Synchronisierung (Full Dump) sollten DDLs oder Programme, die Wenn sich eine Tabelle beispielsweise noch in der anfänglichen Synchronisierung befindet und ein |
Fehlermeldung: No pglogical extension installed on databases (X)
|
In mindestens einer Quelldatenbank ist pglogical nicht installiert. |
Folgen Sie diesen Richtlinien, um pglogical in den Datenbanken der Quellinstanz zu installieren. |
Bei der Migration zu PostgreSQL 15 tritt nach mehreren nachfolgenden Verbindungsversuchen eines der folgenden Symptome auf:
|
Dieses Problem wird oft auf das Deadlock-Problem in der pglogical -Erweiterung zurückgeführt. Weitere Informationen finden Sie im
pglogical -Issue-Tracker auf GitHub.
|
Wiederholen Sie den Migrationsjob oder migrieren Sie zuerst zu einer Zwischenversion von PostgreSQL. Weitere Informationen finden Sie unter
Fehlermeldung: Cannot connect to invalid database .
|
Fehlermeldung: Replication user 'x' doesn't have sufficient privileges.
|
Der Nutzer, der Database Migration Service verwendet, hat nicht die erforderlichen Berechtigungen, um den angegebenen Vorgang auszuführen. | Folgen Sie diesen Richtlinien, 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. | Achten Sie darauf, dass die Quell- und Zieldatenbankinstanzen miteinander kommunizieren können und dass Sie alle erforderlichen Voraussetzungen erfüllt haben, die beim Definieren der Einstellungen für den Migrationsjob angezeigt wurden. |
Fehlermeldung: The source database 'wal_level' configuration must be equal to 'logical'.
|
Für die Quelldatenbank ist ein anderer Wert als logical für wal_level 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. |
Folgen Sie dieser Anleitung, um diesen Parameter richtig festzulegen. |
Fehlermeldung: The source database 'max_wal_senders' configuration is not sufficient.
|
Der Parameter max_wal_senders wurde nicht richtig konfiguriert. |
Folgen Sie dieser Anleitung, um diesen Parameter richtig festzulegen. |
Fehlermeldung: The source database 'max_worker_processes' configuration is not sufficient.
|
Der Parameter max_worker_processes wurde nicht richtig konfiguriert. |
Folgen Sie dieser Anleitung, um diesen Parameter richtig festzulegen. |
Fehlermeldung: ODER
Fehlermeldung: |
Die für die Replikation erforderlichen Einstellungen können beim Promoten eines Migrationsjobs nicht beseitigt werden. | Führen Sie für jede Datenbank Befehle als Nutzer mit der Berechtigung Weitere Informationen zu den auszuführen Befehlen finden Sie unter Replikationsslots bereinigen. |
Fehlermeldung: |
Das für Database Migration Service bereitgestellte CA-Zertifikat der Quelle enthält möglicherweise nur das Stammzertifikat. Für das Quellzertifikat sind jedoch sowohl das Stamm- als auch alle Zwischenzertifikate erforderlich. Bei Amazon Relational Database Service kann beispielsweise die Verwendung des Zertifikats rds-ca-2019-root.pem zu diesem Problem führen. |
Erstellen Sie ein kombiniertes Zertifikat der Zertifizierungsstelle der Quelle, das sowohl das Stammzertifikat als auch alle erforderlichen Zwischenzertifikate enthält. Verwenden Sie für den Anwendungsfall des 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 von mindestens {max_number_of_tables_per_database }/(max_connections + max_prepared_transactions ) fest. |
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 ist langsam. | Der Import großer Datenmengen aus der Quelldatenbank in die Cloud SQL-Zieldatenbank 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 oder die Replikationsverbindungen wurden aufgrund eines unzureichenden Werts für den Parameter So ermitteln Sie die Grundursache des Problems:
|
|
Fehlermeldung: ERROR: unknown column name {column_name} |
Einer replizierten Tabelle wurde auf dem primären Knoten eine Spalte hinzugefügt, aber nicht auf dem Replikationsknoten. |
Bei kontinuierlichen Migrationen werden nur DML-Änderungen (Data Manipulation Language, Datenbearbeitungssprache) automatisch aktualisiert. Die Verwaltung von Änderungen an der Datendefinitionssprache (DDL), damit die Quell- und Zieldatenbanken kompatibel bleiben, liegt in der Verantwortung des Nutzers. Dies kann auf zwei Arten erfolgen:
Beispiele für die Verwendung von |
Fehlermeldung: ERROR: cannot truncate a table referenced in a foreign key constraint |
Der Nutzer hat versucht, eine Tabelle mit einer Fremdschlüsseleinschränkung zu kürzen. |
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 |
Warnung: migration job test configuration has returned the following warnings: Some table(s) have limited support. |
Die Quelle enthält Tabellen mit eingeschränkter Unterstützung, z. B. Tabellen ohne Primärschlüssel. |
Dies ist eine Warnung. Sie können mit der Migration fortfahren. Beachten Sie jedoch, dass nicht unterstützte Entitäten (z. B. Tabellen ohne Primärschlüssel) nicht migriert werden. Weitere Informationen finden Sie unter Quelldatenbanken konfigurieren. |
Zusätzliche Daten aus der vorhandenen Zielinstanz löschen
Wenn Sie zu einer
bestehenden Zielinstanz migrieren, erhalten Sie die folgende Fehlermeldung:
The destination instance contains existing data or user defined
entities (for example databases, tables, or functions). You can only
migrate to empty instances. Clear your destination instance and retry
the migration job.
Dieses Problem kann auftreten, wenn Ihre Zielinstanz zusätzliche Daten enthält. Sie können nur zu vorhandenen Instanzen migrieren, die leer sind. Weitere Informationen finden Sie unter Bekannte Einschränkungen.
Lösungsvorschlag
Löschen Sie zusätzliche Daten aus der Zielinstanz und starten Sie den Migrationsjob noch einmal. Gehen Sie dazu so vor:
- Migrationsjob beenden
- Die Ziel-Cloud SQL-Instanz befindet sich derzeit im Lesemodus. Zielinstanz hochstufen, um Schreibzugriff zu erhalten.
- Verbindung zur Cloud SQL-Zielinstanz herstellen
- Entfernen Sie zusätzliche Daten aus den Datenbanken der Zielinstanz. Das Ziel kann nur Systemkonfigurationsdaten enthalten. Zieldatenbanken dürfen keine Nutzerdaten (z. B. Tabellen) enthalten. Es gibt verschiedene SQL-Anweisungen, die Sie in Ihren Datenbanken ausführen können, um nicht systemeigene Daten zu finden, z. B.:
Beispiel für eine SQL-Anweisung zum Abrufen nicht systemeigener Datenbanken (zum Maximieren klicken)
SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('cloudsqladmin', 'template1', 'template0', 'postgres');
Beispiel für eine SQL-Anweisung zum Abrufen nicht systemspezifischer Daten in der
postgres
-Datenbank (zum Vergrößern anklicken)Die
postgres
-Datenbank ist eine Systemdatenbank, kann aber auch nicht systembezogene Daten enthalten. Führen Sie diese Anweisungen in der Datenbankpostgres
aus. Wenn Sie denpsql
-Client verwenden, um eine Verbindung zur Zielinstanz herzustellen, können Sie mit dem Befehl\connect {database_name_here}
zu einer anderen Datenbank wechseln, ohne die Verbindung zurückzusetzen.SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema != 'information_schema' AND table_schema not like 'pg\_%'; SELECT routine_schema, routine_name FROM information_schema.routines WHERE routine_schema != 'information_schema' AND routine_schema not like 'pg\_%'; SELECT extname FROM pg_extension WHERE extname != 'plpgsql';
- Starten Sie den Migrationsjob.
Replikationsslots bereinigen
Es wird eine der folgenden Meldungen angezeigt:
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 Ursache
Wenn die Quellinstanz beim Hochstufen einer Cloud SQL-Instanz nicht von der Cloud SQL-Instanz aus erreichbar ist (z. B. weil die Quellinstanz nicht ausgeführt wird oder Sie die Cloud SQL-Instanz aus der Zulassungsliste der Quellinstanzen entfernt haben), können die für die Replikation erforderlichen Einstellungen beim Hochstufen eines Migrationsjobs nicht bereinigt werden. Sie müssen die Replikationsslots 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 Replikationsslots nicht in der Fehlermeldung enthalten sind, führen Sie den folgenden Befehl aus, um nach den vorhandenen Replikationsslots zu suchen:
select pg_drop_replication_slot(slot_name) from pg_replication_slots where slot_name like '%cloudsql%' and active = 'f';
-
Wenn es keine Cloud SQL-Replikate gibt, die 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
'cloudsql';
-
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;
Fehlermeldung:
Cannot connect to invalid database
Bei der Migration zu PostgreSQL-Version 15 treten nach mehreren nachfolgenden Verbindungsversuchen eines der folgenden Symptome auf:
-
Sie erhalten die Fehlermeldung
Cannot connect to invalid database
. - Der Messwert Speichernutzung des Migrationsjobs zeigt nach langer Zeit keinen Fortschritt, wenn der Migrationsjob den vollständigen Datenbankdump ausführt.
Mögliche Ursache
Dieses Problem wird häufig auf das Deadlock-Problem in der pglogical
-Erweiterung zurückgeführt. Weitere Informationen finden Sie im
pglogical
-Issue-Tracker auf GitHub.
Lösungsvorschlag
Migrationsjob noch einmal mit einer neuen Zielinstanz ausführen
Löschen Sie die Zieldatenbank, in der das Problem aufgetreten ist, und erstellen Sie den Migrationsjob neu. Gehen Sie so vor:
- Löschen Sie die Zielinstanz, bei der die Probleme aufgetreten sind. Weitere Informationen finden Sie in der Cloud SQL for PostgreSQL-Dokumentation unter Instanzen löschen.
- Löschen Sie den fehlgeschlagenen Migrationsjob. Weitere Informationen finden Sie unter Migrationsjob prüfen.
- Erstellen Sie den Migrationsjob noch einmal. Weitere Informationen finden Sie unter Migrationsjob erstellen.
Zu einer Zwischenversion migrieren
Sie können zu einer früheren PostgreSQL-Version migrieren, z. B. PostgreSQL 14. Nach einer erfolgreichen Migration können Sie versuchen, auf die gewünschte PostgreSQL 15-Instanz umzustellen. Weitere Informationen finden Sie in der Cloud SQL for PostgreSQL-Dokumentation unter Datenbankhauptversion durch Migrieren von Daten aktualisieren.
Nutzer und Rollen verwalten
Vorhandene Nutzer migrieren
Derzeit unterstützt der Database Migration Service nicht die Migration vorhandener Nutzer von einer Quellinstanz in eine Cloud SQL-Ziel-Instanz. Sie können diese Migration verwalten, indem Sie die Nutzer manuell in Cloud SQL erstellen.
Nutzer von cloudsqlexternalsync
Während der Migration sind alle Objekte im Cloud SQL-Replikat dem Nutzer cloudsqlexternalsync
zugewiesen. Nach der Migration können Sie die Inhaberschaft der Objekte auf andere Nutzer übertragen. Gehen Sie dazu so vor:
- Führen Sie den Befehl
GRANT cloudsqlexternalsync to {USER}
aus: - Führen Sie in jeder Datenbank den Befehl
reassign owned by cloudsqlexternalsync to {USER};
aus. - Wenn Sie den Nutzer
cloudsqlexternalsync
entfernen möchten, führen Sie den Befehldrop role cloudsqlexternalsync
aus.
Daten in eine neue Cloud SQL-Instanz importieren
Wenn Sie zuerst Daten aus einer Cloud SQL-Instanz exportieren, die mit dem Database Migration Service in Cloud Storage migriert wurde, und sie dann aus Cloud Storage in eine eigenständige Cloud SQL-Instanz importieren, schlägt der Import möglicherweise fehl, weil der Nutzer cloudsqlexternalsync
in der Zielinstanz nicht vorhanden ist.
Um das Problem zu beheben, können Sie entweder den Nutzer cloudsqlexternalsync
in der Zielinstanz erstellen oder den Nutzer aus der migrierten Instanz entfernen.