Fehler bei Replikationsjobs beheben

Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit Cloud Data Fusion-Replikationsjobs beheben.

Ausnahme: Staging-Bucket kann nicht erstellt werden

Wenn die Bucket-Namenskonvention verletzt wird, schlägt der Replikationsjob möglicherweise mit dem folgenden Fehler im Pipelinelog fehl:

Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.

Optional können Sie den Namen des Staging-Buckets angeben. Falls nicht angegeben, generiert der Replikationsjob einen Job, indem er ein Suffix an den Jobnamen anhängt. In einigen Fällen können Sie einen kürzeren Jobnamen verwenden, um dieses Problem zu beheben. Weitere Informationen finden Sie unter Bucket-Namen.

MySQL-CONVERT_TO_NULL-Wert nicht im Satz

Wenn Sie eine frühere Version von MySQL Connector/J verwenden, z. B. Version 5, schlägt der Replikationsjob mit folgendem Fehler fehl:

The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.

Die zulässigen Werte für zeroDateTimeBehavior sind bei verschiedenen Versionen von MySQL Connector/J nicht kompatibel.

Verwenden Sie MySQL Connector/J Version 8 oder höher, um dieses Problem zu beheben.

Replikation und SQL Server-AlwaysOn-Datenbanken

Eine Microsoft SQL Server-Quelle kann Änderungen von einem schreibgeschützten Always On-Replikat erfassen. Für diese Einrichtung müssen Sie das Laufzeitargument source.connector.database.applicationIntent=ReadOnly an den Replikationsjob übergeben. Ohne dieses Laufzeitargument schlägt der Job mit folgendem Fehler fehl:

Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.

Legen Sie source.connector.database.applicationIntent=ReadOnly als Laufzeitargument fest, um dieses Problem zu beheben. Dadurch wird snapshot.isolation.mode intern auf snapshot gesetzt.

Replikationsfehler in statischem Dataproc-Cluster

Wenn Sie einen Replikationsjob ausführen, schlägt die SSL-Verbindung von Dataproc-Clusterknoten möglicherweise mit dem Fehler java.lang.NullPointerException oder Connection reset fehl:

ERROR [SparkRunnerphase-1:i.c.c.i.a.r.ProgramControllerServiceAdapter@93] -
Spark program 'phase-1' failed with error: The driver could not establish a
secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "Connection reset ClientConnectionId:ID"

Dieser Fehler tritt auf, wenn der Conscrypt-SSL-Anbieter für die Verwendung in der auf Dataproc installierten JDK-Version konfiguriert ist.

Verwenden Sie zum Beheben dieses Problems den Standard-SSL-Anbieter für Java JDK, indem Sie den Conscrypt-SSL-Anbieter deaktivieren. Wenn Sie den Conscrypt-SSL-Anbieter deaktivieren möchten, legen Sie beim Starten des Dataproc-Clusters das folgende Clusterattribut fest:

--properties dataproc:dataproc.conscrypt.provider.enable=false

Bei der Replikation für SQL Server werden nicht alle Spalten für geänderte Tabellen repliziert

Wenn Sie Daten aus einer Tabelle in SQL Server replizieren und die Replikations-Quelltabelle eine neu hinzugefügte Spalte hat, wird diese nicht automatisch der CDC-Tabelle (Change Data Capture) hinzugefügt. Sie müssen ihn manuell zur zugrunde liegenden CDC-Tabelle hinzufügen.

Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  1. Deaktivieren Sie die CDC-Instanz:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. Aktivieren Sie die CDC-Instanz wieder:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. Erstellen Sie einen neuen Replikationsjob.

Weitere Informationen finden Sie unter Änderungen an Quelltabellen verarbeiten.

Fehler in Bezug auf Rollen und Berechtigungen

Die folgenden Probleme treten bei der Zugriffssteuerung auf.

Problem mit Berechtigungen des Cloud Data Fusion-Dienstkontos

Beim Ausführen eines Replikationsjobs mit Oracle Database kann das Abrufen einer Tabellenliste mit dem folgenden Fehler fehlschlagen:

Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'

Wenn Sie einen Replikationsjob mit einer Oracle-Datenbank ausführen, verwendet Cloud Data Fusion den Datastream-Dienst im Back-End. Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Datastream Admin (roles/datastream.admin) für das Cloud Data Fusion-Dienstkonto zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zur Verwendung des Datastream-Dienstes benötigen.

Berechtigung zum Ansehen von Change Data Capture nicht gewährt

Beim Replizieren von Daten aus SQL Server wird möglicherweise der folgende Fehler im Pipelinelog angezeigt:

No whitelisted table has enabled CDC, whitelisted table list does not contain any
table with CDC enabled or no table match the white/blacklist filter(s)

Dieses Problem tritt auf, wenn der in den Attributen der Quellverbindung angegebene Nutzer nicht berechtigt ist, Change Data Capture (CDC) für die replizierte Tabelle anzusehen. Dies wird durch den Parameter role_name gesteuert, wenn CDC für die Tabelle mit sys.sp_cdc_enable_table aktiviert wird.

Weitere Informationen zum Gewähren der erforderlichen Berechtigungen zum Anzeigen von CDC finden Sie unter CDC für Tabelle aktivieren und sys.sp_cdc_enable_table.

Problem mit der Berechtigung „Benutzerdefinierter Typ“

Wenn der vom Replikationsjob verwendete Datenbanknutzer keine Berechtigungen für den benutzerdefinierten Typ (UDT) hat, wird möglicherweise der folgende Fehler im Pipelinelog angezeigt:

java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME

In dieser Fehlermeldung ist die Spalte oid möglicherweise eine UDT.

Um dieses Problem zu beheben, gewähren Sie dem Nutzer Zugriff, indem Sie den folgenden Befehl in der Datenbank ausführen:

GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER

SQL Server-Agent wird nicht ausgeführt

Wenn der SQL Server-Agent nicht ausgeführt wird, wird möglicherweise der folgende Fehler im Pipelinelog angezeigt:

No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]

Starten Sie den SQL Server-Agent, um dieses Problem zu beheben. Weitere Informationen finden Sie je nach verwendetem Betriebssystem in der folgenden Dokumentation:

Version der SQL Server Replikation-Pipeline ist nicht die neueste

Wenn die SQL Server Replikations-Pipelineversion nicht die neueste ist, wird der folgende Fehler im Pipelinelog angezeigt:

Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract

Dieser Fehler tritt auf, wenn eine frühere Version des Quell-Plug-ins mit einer relativ neuen Version der Delta-App funktioniert. In diesen Fällen wird die durch die neue Version der Delta-App definierte neue Schnittstelle nicht implementiert.

Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  1. Rufen Sie Informationen zum Replikationsjob ab, indem Sie eine HTTP-GET-Anfrage senden:

    GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
    

    Weitere Informationen finden Sie unter Details zum Replikationsjob ansehen.

  2. Prüfen Sie die Versionen des Plug-ins und der vom Replikationsjob verwendeten Delta-App.

  3. Rufen Sie die Liste der verfügbaren Artefakte ab, indem Sie eine HTTP-GET-Anfrage senden:

    GET /v3/namespaces/NAMESPACE_ID/artifacts
    

    Weitere Informationen finden Sie unter Verfügbare Artefakte auflisten.

Statischer Dataproc-Cluster mit unzureichendem Authentifizierungsbereich

Wenn Sie einen statischen Dataproc-Cluster verwenden, der mit einem unzureichenden Authentifizierungsbereich erstellt wurde, wird möglicherweise der folgende Fehler im Pipeline-Log angezeigt:

ERROR [worker-DeltaWorker-0:i.c.c.i.a.r.ProgramControllerServiceAdapter@92] - Worker
Program 'DeltaWorker' failed.
Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had
insufficient authentication scopes.

Zum Beheben dieses Problems erstellen Sie einen neuen statischen Dataproc-Cluster und aktivieren den Bereich cloud-platform für diesen Cluster im selben Projekt.