Esta página mostra como resolver problemas relacionados a jobs de replicação do Cloud Data Fusion.
Exceção: não é possível criar o bucket de preparo
Quando a convenção de nomenclatura do bucket é violada, o job de replicação pode falhar com o seguinte erro no registro do pipeline:
Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.
Você pode fornecer o nome do bucket de preparo. Se não for fornecido, o job de replicação vai gerar um, anexando um sufixo ao nome do job. Em alguns casos, você pode usar um nome mais curto para resolver esse problema. Para mais informações, consulte Nomes de bucket.
O valor CONVERT_TO_NULL
do MySQL não foi definido
Se você estiver usando uma versão anterior do MySQL Connector/J, como a versão 5, o job de replicação falha com o seguinte erro:
The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.
Os valores aceitos para zeroDateTimeBehavior
são incompatíveis entre
diferentes versões do MySQL Connector/J.
Para resolver esse problema, use o MySQL Connector/J versão 8 ou posterior.
Replicação e bancos de dados sempre ativados do SQL Server
Uma fonte do Microsoft SQL Server pode capturar alterações
um Sempre ativado
réplica somente leitura. Para essa configuração, você precisa transmitir o argumento de tempo de execução
source.connector.database.applicationIntent=ReadOnly
para o
de replicação do job. Sem esse argumento de ambiente de execução, o job falha com
o seguinte erro:
Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.
Para resolver esse problema, defina
source.connector.database.applicationIntent=ReadOnly
como um argumento de ambiente de execução.
Isso define internamente snapshot.isolation.mode
como snapshot
.
Erro de replicação no cluster estático do Dataproc
Quando você executa um job de replicação, a conexão SSL
nós do cluster do Dataproc podem falhar
Erro java.lang.NullPointerException
ou 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"
Esse erro ocorre devido ao provedor SSL do Conscrypt configurado para uso na versão do JDK instalada no Dataproc.
Para resolver esse problema, use o provedor de SSL padrão para o Java JDK desativando provedor de SSL do Conscrypt. Para desativar o provedor de SSL do Conscrypt, defina o propriedade do cluster a seguir ao iniciar o cluster do Dataproc:
--properties dataproc:dataproc.conscrypt.provider.enable=false
A replicação do SQL Server não replica todas as colunas das tabelas alteradas
Ao replicar dados de uma tabela no SQL Server, se a tabela de origem da replicação tiver uma coluna recém-adicionada, ela não será adicionada automaticamente à tabela de captura de dados de alterações (CDC). É preciso adicioná-lo manualmente à tabela de CDC subjacente.
Para resolver o problema, siga estas etapas:
Desative a instância do CDC:
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
Ative a instância do CDC novamente:
EXEC sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'myTable', @role_name = NULL, @capture_instance = 'dbo_myTable' GO
Crie um novo job de replicação.
Para mais informações, consulte Como processar alterações em tabelas de origem.
Erros de papéis e permissões
Os problemas a seguir ocorrem com o controle de acesso.
Problema de permissão da conta de serviço do Cloud Data Fusion
Ao executar um job de replicação com o Oracle Database, recuperar uma lista de tabelas pode falhar com o seguinte erro:
Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'
Quando você executa um job de replicação com um banco de dados Oracle, o Cloud Data Fusion usa o serviço Datastream no back-end.
Para receber as permissões necessárias para usar o serviço do Datastream,
peça ao administrador para conceder a você
Administrador do Datastream
(roles/datastream.admin
) Papel do IAM na conta de serviço do Cloud Data Fusion.
Não foi concedida permissão para acessar a captura de dados de mudanças
Ao replicar dados do SQL Server, talvez você veja o seguinte erro no registro do 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)
Esse problema ocorre se o usuário informado nas propriedades da conexão de origem
não tem permissão para acessar a captura de dados alterados (CDC) da
tabela replicada. Isso é controlado pelo parâmetro role_name
ao
ativar a CDC na tabela usando sys.sp_cdc_enable_table
.
Para mais informações sobre como conceder as permissões necessárias para acessar o CDC, consulte Ativar a CDC na tabela e sys.sp_cdc_enable_table.
Problema de permissão de tipo definido pelo usuário
Se o usuário do banco de dados usado pelo job de replicação não tiver permissões no tipo definido pelo usuário (UDT, na sigla em inglês), talvez você veja o seguinte erro no registro do pipeline:
java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME
Nesta mensagem de erro, a coluna oid
pode ser um UDT.
Para resolver esse problema, conceda acesso ao usuário executando o seguinte comando no banco de dados:
GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER
O SQL Server Agent não está em execução
Se o agente do SQL Server não estiver em execução, talvez você encontre o seguinte erro no registro do pipeline:
No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]
Para resolver esse problema, inicie o agente do SQL Server. Para mais informações, consulte a documentação a seguir, dependendo do sistema operacional que você estiver usando:
- Windows: iniciar o SQL Server Browser ou uma instância do agente SQL Server
- Linux: Ativar o agente do SQL Server
A versão do pipeline de replicação do SQL Server não é a mais recente
Se a versão do pipeline de replicação do SQL Server não for mais recente, o seguinte erro aparecerá no registro do pipeline:
Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract
Esse erro ocorre se uma versão anterior do plug-in de origem estiver trabalhando com uma versão relativamente nova do app delta. Nesses casos, a nova interface definida pela nova versão do app delta não é implementada.
Para resolver o problema, siga estas etapas:
Para extrair informações sobre o job de replicação, envie uma solicitação HTTP GET:
GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
Para mais informações, consulte Visualizar detalhes do job de replicação.
Verifique as versões do plug-in e o aplicativo delta usado pelo de replicação do job.
Extraia a lista de artefatos disponíveis enviando uma solicitação HTTP GET:
GET /v3/namespaces/NAMESPACE_ID/artifacts
Para mais informações, consulte Listar artefatos disponíveis.
Cluster estático do Dataproc com escopo de autenticação insuficiente
Se você estiver usando um cluster estático do Dataproc criado com escopo de autenticação insuficiente, talvez veja o seguinte erro no registro do 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.
Para resolver esse problema,
criar um novo cluster estático do Dataproc
e ativar o escopo cloud-platform
para este cluster no mesmo projeto.