Auf dieser Seite wird beschrieben, wie Sie Probleme mit Cloud Data Fusion-Replikationsjobs beheben.
Ausnahme: Staging-Bucket kann nicht erstellt werden
Wenn die Benennungskonvention für Buckets nicht eingehalten wird, kann der Replikationsjob mit dem folgenden Fehler im Pipeline-Log fehlschlagen:
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 einer generiert, indem dem Jobnamen ein Suffix angehängt wird. In einigen Fällen können Sie dieses Problem beheben, indem Sie einen kürzeren Jobnamen verwenden. Weitere Informationen finden Sie unter Bucket-Namen.
MySQL-Wert CONVERT_TO_NULL nicht im Set
Wenn Sie eine frühere 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 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 aus
einem Always On
schreibgeschützten 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 dem folgenden 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 einem statischen Managed Service for Apache Spark-Cluster
Wenn Sie einen Replikationsjob ausführen, schlägt die SSL-Verbindung von Managed Service for Apache Spark-Clusterknoten möglicherweise mit einem java.lang.NullPointerException- oder Connection reset-Fehler 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 aufgrund des Conscrypt-SSL-Anbieters auf, der für die Verwendung in der JDK-Version konfiguriert ist, die in Managed Service for Apache Spark installiert ist.
Verwenden Sie den Standard-SSL-Anbieter für Java JDK, indem Sie den Conscrypt-SSL-Anbieter deaktivieren, um dieses Problem zu beheben. Wenn Sie den Conscrypt-SSL-Anbieter deaktivieren möchten, legen Sie beim Starten des Managed Service for Apache Spark-Clusters die folgende Clustereigenschaft 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 Ihre Replikationsquelltabelle eine neu hinzugefügte Spalte enthält, wird diese nicht automatisch der Change Data Capture-Tabelle (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:
Deaktivieren Sie die CDC-Instanz:
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
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
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.
Berechtigungsproblem mit dem Cloud Data Fusion-Dienstkonto
Wenn Sie einen Replikationsjob mit Oracle Database ausführen, 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 im Backend den Datastream-Dienst.
Bitten Sie Ihren Administrator, Ihnen die
Datastream-Administrator
(roles/datastream.admin) IAM-Rolle für das Cloud Data Fusion-Dienstkonto zuzuweisen,
um die Berechtigungen zu erhalten, die Sie zum Verwenden des Datastream-Dienstes benötigen.
Berechtigung zum Anzeigen von Change Data Capture nicht erteilt
Wenn Sie Daten aus SQL Server replizieren, wird im Pipeline-Log möglicherweise der folgende Fehler 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 Eigenschaften der Quellverbindung angegebene Nutzer keine Berechtigung zum Anzeigen von Change Data Capture (CDC) für die replizierte Tabelle hat. 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 Erteilen der erforderlichen Berechtigungen zum Anzeigen von CDC finden Sie unter CDC für die Tabelle aktivieren und sys.sp_cdc_enable_table.
Berechtigungsproblem mit benutzerdefinierten Typen
Wenn der vom Replikationsjob verwendete Datenbanknutzer keine Berechtigungen für den benutzerdefinierten Typ (User Defined Type, UDT) hat, wird im Pipeline-Log möglicherweise der folgende Fehler angezeigt:
java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME
In dieser Fehlermeldung kann die Spalte oid ein UDT sein.
Gewähren Sie dem Nutzer Zugriff, indem Sie den folgenden Befehl in der Datenbank ausführen, um dieses Problem zu beheben:
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 im Pipeline-Log möglicherweise der folgende Fehler 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 in der folgenden Dokumentation, je nach verwendetem Betriebssystem:
- Windows: SQL Server-Browser oder eine Instanz des SQL Server-Agents starten
- Linux: SQL Server-Agent aktivieren
Die Version der SQL Server-Replikationspipeline ist nicht die neueste
Wenn die Version der SQL Server-Replikationspipeline nicht die neueste ist, wird im Pipeline-Log der folgende Fehler 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 verwendet wird. In solchen Fällen wird die neue Schnittstelle, die von der neuen Version der Delta-App definiert wird, nicht implementiert.
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Rufen Sie Informationen zum Replikationsjob ab, indem Sie eine HTTP-GET-Anfrage senden:
GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAMEWeitere Informationen finden Sie unter Details zum Replikationsjob ansehen.
Prüfen Sie die Versionen des Plug-ins und der Delta-App, die vom Replikationsjob verwendet werden.
Rufen Sie die Liste der verfügbaren Artefakte ab, indem Sie eine HTTP-GET-Anfrage senden:
GET /v3/namespaces/NAMESPACE_ID/artifactsWeitere Informationen finden Sie unter Verfügbare Artefakte auflisten.
Statischer Managed Service for Apache Spark-Cluster mit unzureichendem Authentifizierungsbereich
Wenn Sie einen statischen Managed Service for Apache Spark-Cluster verwenden, der mit einem unzureichenden Authentifizierungsbereich erstellt wurde, wird im Pipeline-Log möglicherweise der folgende Fehler 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.
Erstellen Sie einen neuen statischen Managed Service for Apache Spark-Cluster
und aktivieren Sie den Bereich cloud-platform für diesen Cluster im selben Projekt, um dieses Problem zu beheben.