Fehlerbehebung bei Replikationsjobs

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

Ausnahme: Staging-Bucket konnte nicht erstellt werden

Wenn die Bucket-Benennungskonvention nicht eingehalten wird, schlägt der Replikationsjob möglicherweise mit dem folgenden Fehler im Pipeline-Log 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. Wenn Sie keinen Namen angeben, wird vom Replikationsjob ein Name generiert, indem dem Jobnamen ein Suffix angehängt wird. 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 Set

Wenn Sie eine ältere Version von MySQL Connector/J verwenden, z. B. Version 5, schlägt der Replikationsjob mit dem folgenden 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 zwischen verschiedenen Versionen von MySQL Connector/J nicht kompatibel.

Verwenden Sie zur Behebung dieses Problems MySQL Connector/J Version 8 oder höher.

Replikation und SQL Server-AlwaysOn-Datenbanken

Eine Microsoft SQL Server-Quelle kann Änderungen aus Always On schreibgeschütztes Replikat. Für diese Einrichtung müssen Sie das Laufzeitargument übergeben source.connector.database.applicationIntent=ReadOnly in den Replikationsjob. Ohne dieses Laufzeitargument schlägt der Job mit folgenden Fehler:

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

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

Replikationsfehler in statischem Dataproc-Cluster

Wenn Sie einen Replikationsjob ausführen, Dataproc-Clusterknoten können mit folgendem Fehler fehlschlagen: java.lang.NullPointerException- oder Connection reset-Fehler:

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, weil der Conscrypt-SSL-Anbieter für die Verwendung in der in 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

Replikation von SQL Server repliziert nicht alle Spalten für geänderte Tabellen

Wenn Sie Daten aus einer Tabelle in SQL Server replizieren, Die Replikations-Quelltabelle hat eine neu hinzugefügte Spalte. automatisch zur Tabelle Change Data Capture (CDC) hinzugefügt. Sie müssen sie manuell der 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 bei Rollen und Berechtigungen

Die folgenden Probleme treten bei der Zugriffssteuerung auf.

Problem mit den Berechtigungen für das Cloud Data Fusion-Dienstkonto

Beim Ausführen eines Replikationsjobs mit Oracle Database das Abrufen kann eine 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 Backend. Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Datastream Admin (roles/datastream.admin) für das Cloud Data Fusion-Dienstkonto zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Verwendung des Datastream-Dienstes benötigen.

Keine Berechtigung zum Ansehen von Änderungen an Daten

Wenn Sie Daten aus SQL Server replizieren, wird möglicherweise der folgende Fehler im Pipelineprotokoll 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 Nutzer in den Eigenschaften der Quellverbindung angegeben ist ist nicht berechtigt, Change Data Capture (CDC) für die replizierten Tabelle. Dies wird über den Parameter role_name gesteuert, wenn CDC mit sys.sp_cdc_enable_table für die Tabelle aktivieren

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

Problem mit Berechtigungen für benutzerdefinierte Typen

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

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 ein 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, sehen Sie möglicherweise Folgendes: Fehler im Pipelinelog:

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 unter finden Sie je nach verwendetem Betriebssystem die folgenden Anleitungen:

Die SQL Server-Replikationspipeline ist nicht auf dem neuesten Stand

Wenn die Pipelineversion der SQL Server-Replikation nicht die Version angezeigt wird, 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 ältere Version des Quell-Plug-ins mit einer relativ neuen Version der Delta-App verwendet wird. In solchen Fällen ist die neue Benutzeroberfläche, die von der neuen Version der Delta-App definiert wird, nicht implementiert.

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

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

    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 Delta-App, die vom Replikationsjob verwendet werden.

  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 erstellt wurde unzureichenden Authentifizierungsbereichs angezeigt wird, sehen Sie möglicherweise den folgenden Fehler in der Pipeline-Log:

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.

So beheben Sie das Problem: Neuen statischen Dataproc-Cluster erstellen und aktivieren Sie den Bereich cloud-platform für diesen Cluster im selben Projekt.