Soluciona problemas de trabajos de replicación

En esta página, se muestra cómo resolver problemas relacionados con Cloud Data Fusion trabajos de replicación.

Excepción: No se pudo crear un bucket de etapa de pruebas

Cuando se infringe la convención de nomenclatura del bucket, el trabajo de replicación podría fallar con el siguiente error en el registro de la canalización:

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

De forma opcional, puedes proporcionar el nombre del bucket de etapa de pruebas. Si no se proporciona, el que el trabajo de replicación genera una agregando un sufijo al trabajo de la fuente de datos. En algunos casos, puedes usar un nombre de trabajo más corto para resolver este problema. Para obtener más información, consulta Nombres de buckets.

El valor CONVERT_TO_NULL de MySQL no está configurado

Si usas una versión anterior de MySQL Connector/J, como la versión 5, el trabajo de replicación falla con el siguiente error:

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

Los valores aceptados para zeroDateTimeBehavior no son compatibles entre para diferentes versiones de MySQL Connector/J.

Para resolver este problema, usa MySQL Connector/J versión 8 o posterior.

Bases de datos Always On de SQL Server y replicación

Una fuente de Microsoft SQL Server puede capturar cambios una función siempre activa con una réplica de solo lectura. Para esta configuración, debes pasar el argumento runtime source.connector.database.applicationIntent=ReadOnly al el trabajo de replicación. Sin este argumento de entorno de ejecución, el trabajo falla con el siguiente error:

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

Para resolver el problema, configura source.connector.database.applicationIntent=ReadOnly como un argumento de entorno de ejecución Esto establece internamente snapshot.isolation.mode como snapshot.

Error de replicación en el clúster estático de Dataproc

Cuando ejecutas un trabajo de replicación, la conexión SSL desde Los nodos del clúster de Dataproc pueden fallar con un Errores java.lang.NullPointerException o Connection reset:

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"

Este error se produce debido al proveedor de SSL de Conscrypt. configurado para usarse en la versión de JDK instalada en Dataproc.

Para resolver este problema, inhabilita el proveedor de SSL predeterminado para el JDK de Java el proveedor de SSL de Conscrypt. Para inhabilitar el proveedor de SSL de Conscrypt, establece la siguiente propiedad del clúster cuando inicias el clúster de Dataproc:

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

La replicación de SQL Server no replica todas las columnas de las tablas modificadas

Cuando replicas datos de una tabla en SQL Server, si los La tabla de origen de replicación tiene una columna recién agregada, no es automáticamente a la tabla de captura de datos modificados (CDC). Debes agregarlo de forma manual a la tabla de CDC subyacente.

Para resolver el problema, sigue estos pasos:

  1. Inhabilita la instancia de CDC:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. Vuelve a habilitar la instancia de CDC:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. Crea un nuevo trabajo de replicación.

Para obtener más información, consulta Controla cambios en las tablas fuente.

Errores de funciones y permisos

Ocurren los siguientes problemas con el control de acceso.

Problema de permisos de la cuenta de servicio de Cloud Data Fusion

Cuando se ejecuta un trabajo de replicación con la base de datos de Oracle, recuperar una lista de tablas puede fallar con el siguiente error:

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

Cuando ejecutas un trabajo de replicación con una base de datos de Oracle, Cloud Data Fusion usa el servicio de Datastream en el backend. A fin de obtener los permisos que necesitas para usar el servicio de Datastream, haz lo siguiente: solicita a tu administrador que te otorgue el Administrador de Datastream (roles/datastream.admin) Rol de IAM en la cuenta de servicio de Cloud Data Fusion.

No se otorgó el permiso para ver la captura de datos modificados

Cuando repliques datos desde SQL Server, es posible que veas el siguiente error en el registro de canalización:

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)

Este problema ocurre si el usuario proporcionado en las propiedades de conexión fuente no tiene permisos para ver la captura de datos modificados (CDC) del tabla replicada. Esto se controla con el parámetro role_name cuando habilitando la CDC en la tabla con sys.sp_cdc_enable_table.

Si quieres obtener más información para otorgar los permisos necesarios para ver las CDC, consulta Habilita la CDC en la tabla y sys.sp_cdc_enable_table.

Problema de permisos de tipo definido por el usuario

Si el usuario de la base de datos que usa el trabajo de replicación no tiene en el tipo definido por el usuario (UDT), es posible que veas el siguiente error en el registro de la canalización:

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

En este mensaje de error, la columna oid podría ser una UDT.

Para resolver este problema, ejecuta el siguiente comando para otorgar acceso al usuario: en la base de datos:

GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER

El agente de SQL Server no se está ejecutando

Si el agente de SQL Server no se está ejecutando, es posible que veas lo siguiente en el registro de la canalización:

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

Para resolver este problema, inicia el agente de SQL Server. Para obtener más información, consulta la siguiente documentación, según el sistema operativo que utilices:

La versión de la canalización de replicación de SQL Server no es la más reciente

Si la versión de la canalización de replicación de SQL Server no es la más reciente, aparece el siguiente error en el registro de la canalización:

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

Este error ocurre si se ejecuta una versión anterior del complemento de origen. que trabaja con una versión relativamente nueva de la app delta. En tales casos, el nuevo de la app definida por la nueva versión de la app delta.

Para resolver el problema, sigue estos pasos:

  1. Recupera información sobre el trabajo de replicación mediante el envío de un Solicitud HTTP GET:

    GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
    

    Para obtener más información, consulta Visualiza los detalles del trabajo de replicación.

  2. Verifica las versiones del complemento y de la app delta que usa el el trabajo de replicación.

  3. Para recuperar la lista de artefactos disponibles, envía una solicitud GET de HTTP:

    GET /v3/namespaces/NAMESPACE_ID/artifacts
    

    Para obtener más información, consulta Enumera los artefactos disponibles.

Clúster de Dataproc estático con permiso de autenticación insuficiente

Si usas un clúster de Dataproc estático que se creó con un permiso de autenticación insuficiente, es posible que veas el siguiente error en el registro de canalización:

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.

Para solucionar este problema, crear un nuevo clúster estático de Dataproc y habilitar el permiso cloud-platform para este clúster en el mismo proyecto.