이 페이지에서는 Cloud Data Fusion 복제 작업과 관련된 문제를 해결하는 방법을 보여줍니다.
예외: 스테이징 버킷을 만들 수 없음
버킷 이름 지정 규칙을 위반하면 복제 작업이 실패하고 파이프라인 로그에 다음과 같은 오류가 표시될 수 있습니다.
Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.
필요한 경우 스테이징 버킷 이름을 지정할 수 있습니다. 지정하지 않으면 복제 작업이 작업 이름에 서픽스를 추가하여 생성합니다. 경우에 따라 더 짧은 작업 이름을 사용하여 이 문제를 해결할 수 있습니다. 자세한 내용은 버킷 이름을 참조하세요.
MySQL CONVERT_TO_NULL
값이 설정되지 않음
이전 버전의 MySQL 커넥터/J(예: 버전 5)를 사용하는 경우 복제 작업이 실패하고 다음 오류가 발생합니다.
The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.
zeroDateTimeBehavior
에 허용되는 값은 서로 다른 버전의 MySQL 커넥터/J 간에 호환되지 않습니다.
이 문제를 해결하려면 MySQL 커넥터/J 버전 8 이상을 사용하세요.
복제 및 SQL Server Always On 데이터베이스
Microsoft SQL Server 소스는 Always On 읽기 전용 복제본에서 변경사항을 캡처할 수 있습니다. 이 설정에서는 런타임 인수 source.connector.database.applicationIntent=ReadOnly
를 복제 작업에 전달해야 합니다. 이 런타임 인수가 없으면 작업이 실패하고 다음 오류가 발생합니다.
Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.
이 문제를 해결하려면 source.connector.database.applicationIntent=ReadOnly
를 런타임 인수로 설정합니다.
이는 내부적으로 snapshot.isolation.mode
를 snapshot
으로 설정합니다.
Dataproc 정적 클러스터의 복제 오류
복제 작업을 실행할 때 Dataproc 클러스터 노드에서 SSL 연결이 실패하고 java.lang.NullPointerException
또는 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"
이 오류는 Dataproc에 설치된 JDK 버전에서 사용하도록 구성된 Conscrypt SSL 제공업체로 인해 발생합니다.
이 문제를 해결하려면 Conscrypt SSL 제공업체를 사용 중지하여 Java JDK용 기본 SSL 제공업체를 사용합니다. Conscrypt SSL 제공업체를 사용 중지하려면 Dataproc 클러스터를 시작할 때 다음 클러스터 속성을 설정합니다.
--properties dataproc:dataproc.conscrypt.provider.enable=false
SQL Server용 복제가 변경된 테이블의 모든 열을 복제하지 않음
SQL Server의 테이블에서 데이터를 복제할 때 복제 소스 테이블에 새로 추가된 열이 있는 경우 변경 데이터 캡처(CDC) 테이블에 자동으로 추가되지 않습니다. 기본 CDC 테이블에 수동으로 추가해야 합니다.
이 문제를 해결하려면 다음 단계를 따르세요.
CDC 인스턴스를 사용 중지합니다.
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
CDC 인스턴스를 다시 사용 설정합니다.
EXEC sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'myTable', @role_name = NULL, @capture_instance = 'dbo_myTable' GO
새 복제 작업을 만듭니다.
자세한 내용은 소스 테이블 변경사항 처리를 참조하세요.
역할 및 권한 오류
액세스 제어에 다음 문제가 발생합니다.
Cloud Data Fusion 서비스 계정 권한 문제
Oracle Database를 사용하여 복제 작업을 실행할 때 테이블 목록이 실패하고 다음 오류가 발생할 수 있습니다.
Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'
Oracle 데이터베이스로 복제 작업을 실행하면 Cloud Data Fusion이 백엔드에서 Datastream 서비스를 사용합니다.
Datastream 서비스를 사용하는 데 필요한 권한을 얻으려면 관리자에게 Cloud Data Fusion 서비스 계정에 대한 Datastream 관리자(roles/datastream.admin
) IAM 역할을 부여해 달라고 요청하세요.
변경 데이터 캡처를 볼 수 있는 권한이 부여되지 않음
SQL Server에서 데이터를 복제할 때 파이프라인 로그에 다음 오류가 표시될 수 있습니다.
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)
이 문제는 소스 연결 속성에 지정된 사용자에게 복제된 테이블의 변경 데이터 캡처(CDC)를 볼 권한이 없는 경우에 발생합니다. 이는 sys.sp_cdc_enable_table
을 사용하여 테이블에 CDC를 사용 설정할 때 role_name
매개변수에 의해 제어됩니다.
CDC를 보는 데 필요한 권한을 부여하는 방법에 대한 자세한 내용은 테이블에서 CDC 사용 설정 및 sys.sp_cdc_enable_table을 참조하세요.
사용자 정의 유형 권한 문제
복제 작업에서 사용하는 데이터베이스 사용자에게 사용자 정의 유형(UDT)에 대한 권한이 없으면 파이프라인 로그에 다음 오류가 표시될 수 있습니다.
java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME
이 오류 메시지에서 oid
열은 UDT일 수 있습니다.
이 문제를 해결하려면 데이터베이스에서 다음 명령어를 실행하여 사용자에게 액세스 권한을 부여합니다.
GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER
SQL Server 에이전트가 실행되고 있지 않음
SQL Server 에이전트가 실행되고 있지 않으면 파이프라인 로그에 다음과 같은 오류가 표시될 수 있습니다.
No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]
이 문제를 해결하려면 SQL Server 에이전트를 시작하세요. 자세한 내용은 사용 중인 운영체제에 따라 다음 문서를 참조하세요.
- Windows: SQL Server 브라우저 또는 SQL Server 에이전트 인스턴스 시작
- Linux: SQL Server 에이전트 사용 설정
SQL Server Replication 파이프라인 버전이 최신 버전이 아님
SQL Server Replication 파이프라인 버전이 최신 버전이 아니면 파이프라인 로그에 다음과 같은 오류가 표시됩니다.
Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract
이 오류는 이전 버전의 소스 플러그인이 상대적으로 최신 버전의 델타 앱에서 작동하는 경우에 발생합니다. 이러한 경우 새 버전의 델타 앱으로 정의된 새 인터페이스가 구현되지 않습니다.
이 문제를 해결하려면 다음 단계를 따르세요.
HTTP GET 요청을 제출하여 복제 작업에 대한 정보를 검색합니다.
GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
자세한 내용은 복제 작업 세부정보 보기를 참조하세요.
복제 작업에서 사용하는 플러그인 및 델타 앱의 버전을 확인합니다.
HTTP GET 요청을 제출하여 사용 가능한 아티팩트 목록을 검색합니다.
GET /v3/namespaces/NAMESPACE_ID/artifacts
자세한 내용은 사용 가능한 아티팩트 나열을 참조하세요.
인증 범위가 불충분한 정적 Dataproc 클러스터
불충분한 인증 범위를 사용하여 생성된 정적 Dataproc 클러스터를 사용하는 경우 파이프라인 로그에 다음과 같은 오류가 표시될 수 있습니다.
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.
이 문제를 해결하려면 새 정적 Dataproc 클러스터를 생성하고 동일한 프로젝트에서 이 클러스터의 cloud-platform
범위를 사용 설정합니다.