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 incumple la convención de nombres de bucket, el trabajo de replicación puede 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 preparación. 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á en el conjunto

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 una posterior.

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

Una fuente de Microsoft SQL Server puede capturar cambios de una réplica de solo lectura Always On. 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, usa el proveedor de SSL predeterminado para Java JDK inhabilitando el proveedor de SSL de Conscrypt. Para inhabilitar el proveedor de SSL de Conscrypt, establece la siguiente propiedad de clúster cuando inicies el clúster de Dataproc:

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

La replicación para 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 manualmente 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 trabajo de replicación nuevo.

Para obtener más información, consulta Cómo controlar los cambios en las tablas de origen.

Errores de funciones y permisos

Los siguientes problemas ocurren 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 Oracle Database, es posible que la recuperación de una lista de tablas falle 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ó permiso para ver la Captura de datos de cambios

Cuando se replican datos de SQL Server, es posible que veas el siguiente error en el registro de la 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 se produce si el usuario proporcionado en las propiedades de conexión de origen no tiene permisos para ver la Captura de datos de cambios (CDC) de la tabla replicada. Esto se controla con el parámetro role_name cuando habilitando la CDC en la tabla con sys.sp_cdc_enable_table.

Para obtener más información sobre cómo otorgar los permisos necesarios para ver la CDC, consulta Habilita la CDC en una 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 un 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 el siguiente error 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. Para recuperar información sobre el trabajo de replicación, envía una 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 la app delta que usa 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 estático de Dataproc con un permiso de autenticación insuficiente

Si usas un clúster de Dataproc estático que se creó con un alcance de autenticación insuficiente, es posible que veas el siguiente error en el registro de la 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 resolver 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.