Questa pagina mostra come risolvere i problemi relativi a Cloud Data Fusion in altri job di replica.
Eccezione: impossibile creare un bucket gestione temporanea
Se la convenzione di denominazione dei bucket viene violata, il job di replica potrebbe non riuscire con il seguente errore nel log della pipeline:
Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.
Facoltativamente, puoi fornire il nome del bucket di gestione temporanea. Se non viene specificato, il valore il job di replica ne genera uno aggiungendo un suffisso al job nome. In alcuni casi, per risolvere questo problema puoi utilizzare un nome job più breve. Per ulteriori informazioni, consulta Nomi dei bucket.
Valore CONVERT_TO_NULL
MySQL non impostato
Se utilizzi una versione precedente di MySQL Connector/J, ad esempio la versione 5, il job di replica non va a buon fine e restituisce il seguente errore:
The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.
I valori accettati per zeroDateTimeBehavior
non sono compatibili tra
diverse versioni di MySQL Connector/J.
Per risolvere questo problema, utilizza MySQL Connector/J versione 8 o successive.
Replica e database SQL Server sempre attivi
Un'origine Microsoft SQL Server può acquisire modifiche
un'opzione Sempre accesa
di sola lettura. Per questa configurazione, devi passare l'argomento runtime
source.connector.database.applicationIntent=ReadOnly
alla
un job di replica. Senza questo argomento di runtime, il job ha esito negativo con
il seguente errore:
Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.
Per risolvere il problema, imposta
source.connector.database.applicationIntent=ReadOnly
come argomento di runtime.
Questa operazione imposta internamente il valore snapshot.isolation.mode
su snapshot
.
Errore di replica su cluster statico Dataproc
Quando esegui un job di replica, la connessione SSL
I nodi del cluster Dataproc potrebbero generare errori
java.lang.NullPointerException
o Connection reset
errore:
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"
Questo errore si verifica a causa del provider SSL criptato configurato per l'utilizzo nella versione JDK installata su Dataproc.
Per risolvere il problema, utilizza il provider SSL predefinito per Java JDK disabilitando il provider SSL Conscrypt. Per disattivare il provider SSL Conscrypt, imposta il metodo seguendo la proprietà cluster all'avvio del cluster Dataproc:
--properties dataproc:dataproc.conscrypt.provider.enable=false
La replica per SQL Server non replica tutte le colonne per le tabelle modificate
Quando replichi i dati da una tabella in SQL Server, se La tabella di origine della replica ha una colonna appena aggiunta, non è aggiunti automaticamente alla tabella Change Data Capture (CDC). Devi aggiungerla manualmente alla tabella CDC sottostante.
Per risolvere il problema:
Disabilita l'istanza CDC:
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
Abilita di nuovo l'istanza CDC:
EXEC sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'myTable', @role_name = NULL, @capture_instance = 'dbo_myTable' GO
Crea un nuovo job di replica.
Per saperne di più, consulta Gestire le modifiche alle tabelle di origine.
Errori relativi a ruoli ed autorizzazioni
Si verificano i seguenti problemi relativi al controllo dell'accesso.
Problema di autorizzazione per l'account di servizio Cloud Data Fusion
Durante l'esecuzione di un job di replica utilizzando il database Oracle, il recupero un elenco di tabelle potrebbe non riuscire e restituire il seguente errore:
Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'
Quando esegui un job di replica con un database Oracle,
Cloud Data Fusion utilizza il servizio Datastream nel backend.
Per ottenere le autorizzazioni necessarie per utilizzare il servizio Datastream,
chiedi all'amministratore di concederti
Amministratore Datastream
(roles/datastream.admin
) Ruolo IAM nell'account di servizio Cloud Data Fusion.
Autorizzazione non concessa per visualizzare Change Data Capture
Durante la replica dei dati da SQL Server, potresti visualizzare il seguente errore nel log della pipeline:
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)
Questo problema si verifica se l'utente ha fornito nelle proprietà di connessione sorgente
non dispone delle autorizzazioni per visualizzare Change Data Capture (CDC) per il
e la tabella replicata. Questo è controllato dal parametro role_name
quando
abilitare CDC nella tabella, utilizzando sys.sp_cdc_enable_table
.
Per ulteriori informazioni sulla concessione delle autorizzazioni necessarie per visualizzare la CDC, consulta Abilita CDC nella tabella e sys.sp_cdc_enable_table.
Problema di autorizzazione per Tipo definito dall'utente
Se l'utente del database utilizzato dal job di replica non ha autorizzazioni per l'opzione definita dall'utente (UDT), potrebbe essere visualizzato il seguente errore nel log della pipeline:
java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME
In questo messaggio di errore, la colonna oid
potrebbe essere una funzione definita dall'utente (UDT).
Per risolvere il problema, concedi l'accesso all'utente eseguendo questo comando nel database:
GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER
L'agente SQL Server non è in esecuzione
Se l'agente SQL Server non è in esecuzione, potresti vedere quanto segue nel log della pipeline:
No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]
Per risolvere il problema, avvia l'agente SQL Server. Per ulteriori informazioni, consulta alla seguente documentazione, a seconda del sistema operativo in uso:
- Windows: avvia il browser SQL Server o un'istanza dell'agente SQL Server
- Linux: Abilita l'agente SQL Server
La versione della pipeline di replica SQL Server non è la più recente
Se la versione della pipeline di replica SQL Server non è più recente, nel log della pipeline viene visualizzato il seguente errore:
Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract
Questo errore si verifica se una versione precedente del plug-in del codice sorgente lavorare con una versione relativamente nuova dell'app delta. In questi casi, il nuovo definita dalla nuova versione dell'app delta non sia implementata.
Per risolvere il problema:
Recupera le informazioni sul job di replica inviando un Richiesta HTTP GET:
GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
Per ulteriori informazioni, consulta Visualizzare i dettagli del job di replica.
Verifica le versioni del plug-in e l'app delta utilizzata dalla un job di replica.
Recupera l'elenco degli artefatti disponibili inviando una richiesta HTTP GET:
GET /v3/namespaces/NAMESPACE_ID/artifacts
Per ulteriori informazioni, consulta la sezione Elenco degli artefatti disponibili.
Cluster Dataproc statico con ambito di autenticazione insufficiente
Se utilizzi un cluster Dataproc statico creato con un ambito di autenticazione insufficiente, potresti visualizzare il seguente errore nella log della pipeline:
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.
Per risolvere il problema,
crea un nuovo cluster Dataproc statico
e abilita l'ambito cloud-platform
per questo cluster nello stesso progetto.