In diesem Abschnitt finden Sie eine Anleitung zur Fehlerbehebung bei häufigen Problemen, die bei der Verwendung eines Debezium PostgreSQL-Quellconnectors auftreten, einschließlich der folgenden Connectortypen:
Snapshot konnte nicht erstellt werden
Wenn der Nutzer nicht über die Berechtigung USAGE für das Schema der Tabelle verfügt, kann der Connector den ersten Snapshot nicht erstellen und es tritt der folgende Fehler auf:
Snapshotting of table SCHEMA.TABLE failed
Verwenden Sie den SQL-Befehl GRANT, um das USAGE-Attribut für das Schema zu gewähren, um dieses Problem zu beheben:
GRANT USAGE ON SCHEMA SCHEMA_NAME TO ROLE_NAME;
Replikations-Slot konnte nicht erstellt werden
Wenn Sie mehrere Connectors für denselben PostgreSQL-Datenbankserver erstellen, müssen die Connectors unterschiedliche Replikations-Slots verwenden. Andernfalls tritt der folgende Fehler auf:
io.debezium.DebeziumException: Creation of replication slot failed; when setting up multiple connectors
for the same database host, please make sure to use a distinct replication slot name for each.
at io.debezium.connector.postgresql.PostgresConnectorTask.tryToCreateSlot(PostgresConnectorTask.java:282)
Möglicherweise wird auch ein Fehler wie der folgende angezeigt:
io.debezium.DebeziumException: Failed to start replication stream at LSN{0/80002808}; when setting
up multiple connectors for the same database host, please make sure to use a distinct replication
slot name for each.
Um dieses Problem zu beheben, legen Sie für slot.name einen eindeutigen Wert fest. Weitere Informationen finden Sie in der Debezium-Dokumentation unter Setting up multiple connectors for same database server.
Fehler beim Erstellen oder Aktualisieren der Publikation
Ein Debezium-PostgreSQL-Connector liest Änderungsereignisse aus einer Publikation in der Datenbank. Wenn der Connector nicht auf die Publikation zugreifen oder sie nicht erstellen kann, werden in den Connector-Logs möglicherweise die in den folgenden Abschnitten aufgeführten Fehler angezeigt.
Die Publikation ist nicht vorhanden
Wenn publication.autocreate.mode=disabled und die Publikation nicht vorhanden sind, tritt der folgende Fehler auf:
org.apache.kafka.connect.errors.ConnectException: Publication PUBLICATION autocreation is disabled, please
create one and restart the connector.
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.initPublication(PostgresReplicationConnection.java:163)
Um diesen Fehler zu beheben, erstellen Sie die Publikation manuell oder legen Sie publication.autocreate.mode auf all_tables oder filtered fest.
Gefilterte Publikation kann nicht aktualisiert werden
Wenn publication.autocreate.mode=filtered und der Connector eine vorhandene Publikation nicht aktualisieren können, tritt der folgende Fehler auf:
org.apache.kafka.connect.errors.ConnectException: Unable to update filtered publication PUBLICATION for
"SCHEMA"."TABLE"
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.createOrUpdatePublicationModeFilterted(PostgresReplicationConnection.java:227)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.initPublication(PostgresReplicationConnection.java:191)
Um dieses Problem zu beheben, muss der Datenbanknutzer der Inhaber der Publikation sein.
Gefilterte Publikation kann nicht erstellt werden
Wenn publication.autocreate.mode=filtered und der Connector keine neue Publikation erstellen können, tritt der folgende Fehler auf:
org.apache.kafka.connect.errors.ConnectException: Unable to create filtered publication PUBLICATION for
"SCHEMA"."TABLE"
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.createOrUpdatePublicationModeFilterted(PostgresReplicationConnection.java:227)
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.initPublication(PostgresReplicationConnection.java:171)
Prüfen Sie, ob der Datenbanknutzer die Berechtigung CREATE für die Datenbank hat und Eigentümer der enthaltenen Tabellen ist.
Eine Publikation für alle Tabellen ist bereits aktiv
Wenn publication.autocreate.mode=filtered und die Publikation bereits mit FOR ALL TABLES erstellt wurde, tritt der folgende Fehler auf:
io.debezium.DebeziumException: A logical publication for all tables named 'PUBLICATION' for plugin
'PGOUTPUT' and database 'DATABASE' is already active on the server and can not be altered. If you need to
exclude some tables or include only specific subset, please recreate the publication with necessary
configuration or let plugin recreate it by dropping existing publication. Otherwise please change the
'publication.autocreate.mode' property to 'all_tables'.
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.initPublication(PostgresReplicationConnection.java:181)
Dieser Fehler tritt auf, weil der Connector versucht, die Tabellen in einer Publikation für alle Tabellen zu ändern. Löschen Sie die vorhandene Publikation und starten Sie den Connector neu, um dieses Problem zu beheben. Alternativ können Sie „publication.autocreate.mode“ auf all_tables aktualisieren.
Sie müssen Superuser sein, um eine Publikation für alle Tabellen zu erstellen.
Wenn publication.autocreate.mode=all_tables und der Connector versuchen, eine neue Publikation zu erstellen, kann der folgende Fehler auftreten:
io.debezium.jdbc.JdbcConnectionException: ERROR: must be superuser to create FOR ALL TABLES publication
at io.debezium.connector.postgresql.connection.PostgresReplicationConnection.initPublication(PostgresReplicationConnection.java:207)
Dieser Fehler tritt auf, wenn der Datenbanknutzer kein Superuser ist (oder nicht die Rolle cloudsqlsuperuser in Cloud SQL hat), die zum Erstellen einer Publikation mit FOR ALL TABLES erforderlich ist. Führen Sie einen der folgenden Schritte aus, um diesen Fehler zu beheben:
- Erstellen Sie die Publikation manuell.
- Aktualisieren Sie
publication.autocreate.modeauf einen anderen Wert. - Gewähren Sie dem Datenbanknutzer
SUPERUSER(odercloudsqlsuperuserin Cloud SQL). Im Allgemeinen wird diese Option jedoch nicht empfohlen, da diese Rollen Berechtigungsprüfungen in der Datenbank umgehen.
Nächste Schritte
- Fehlerbehebung bei Connect-Clustern und ‑Connectors
- Cloud SQL for PostgreSQL-Quellconnector erstellen
- Allgemeinen PostgreSQL-Quellconnector erstellen