SQL Server
SQL Server (CDC)용 Openflow Connector: 스냅샷 없이 증분 복제 설정
이 페이지에서는 새로 추가된 테이블에 대해 스냅샷을 건너뛰고 증분 변경을 즉시 복제하도록 SQL Server (CDC)용 Openflow Connector를 구성하는 방법을 설명해요. 이미 복제된 데이터 위에 커넥터를 다시 설치할 때 모든 테이블을 다시 스냅샷하지 않고 증분 로드를 계속하고 싶을 때 유용합니다.
출처: Snowflake 문서
본문
Note
이 커넥터는 Snowflake Connector Terms에 의해 규율됩니다.
SQL Server (CDC)용 Openflow Connector는 새로 추가된 테이블에 대해 스냅샷을 건너뛰고 증분 변경을 즉시 복제하도록 구성할 수 있습니다. 이전에 복제한 데이터 위에 커넥터를 다시 설치할 때 모든 테이블을 다시 스냅샷하지 않고 증분 로드로 복제를 계속하려면 증분 로드를 사용하세요.
새 커넥터 인스턴스에서 증분 복제를 활성화하려면:
-
Set up the Openflow Connector for SQL Server (CDC)에 설명된 대로 커넥터를 설정합니다.
-
SQLServer Ingestion Parameters컨텍스트에서Ingestion Type파라미터를incremental로 설정합니다.
스냅샷 없이 증분 복제 활성화
기존 커넥터에서 증분 복제를 활성화하려면:
-
Snowsight에 로그인합니다.
-
내비게이션 메뉴에서 Ingestion » Openflow를 선택합니다.
-
Openflow 창에서 Runtimes 탭을 선택합니다.
-
커넥터가 있는 런타임을 선택합니다.
-
커넥터를 선택합니다.
-
Ingestion Parameters컨텍스트에서Ingestion Type=incremental로 지정합니다. -
새 복제 테이블을 추가합니다. 이 테이블들은 즉시 증분 로드로 전환됩니다.
Note
스냅샷 로드로 테이블을 다시 복제하려면 Ingestion Type을 incremental에서 full로 변경하세요.
-
Ingestion Type 값을 변경해도 데이터 복제를 시작한 테이블에는 영향이 없습니다. 현재 스냅샷 단계에 있는 테이블은 스냅샷 로드가 완료될 때까지 계속됩니다.
-
Ingestion Type이
incremental으로 설정된 동안 복제 테이블 목록에 추가된 새 테이블은 스냅샷 단계를 건너뜁니다. 여기에는Included Table Regex파라미터와 일치하는 소스 데이터베이스에 새로 추가된 테이블도 포함됩니다. 스냅샷 단계를 건너뛰려면 수집 유형이incremental로 설정되어 있는지 확인하세요.
Note
커넥터는 스냅샷을 건너뛰므로 incremental 모드에 필요한 만큼만 두어야 합니다. 증분 업데이트 필요가 충족되면 커넥터를 full 모드로 되돌려야 합니다.
- 스냅샷 로드를 건너뛰는 테이블의 경우, 커넥터는 대상 테이블이 아직 존재하지 않을 때만
CREATE TABLE IF NOT EXISTS를 실행해 Snowflake에 대상 테이블을 만듭니다. 스냅샷을 거치는 테이블은 대상 테이블이 존재하지 않아야 합니다.
증분 전용 모드로 테이블 복구
테이블의 스냅샷이 성공적으로 완료되었지만 이후 증분 복제가 실패했다면, 테이블을 제거하고 다시 스냅샷할 필요가 없습니다. 대신 소스 CDC 변경 테이블에 여전히 남아 있는 변경 사항을 재생(재연산)하고 기존 대상 테이블에 병합해 테이블을 복구할 수 있습니다.
증분 복제는 여러 이유로 실패할 수 있습니다. 예:
-
소스 데이터베이스의 레코드가 잘못되었거나 지원되지 않는 형식이어서 읽을 수 없음.
-
행이 최대 지원 크기를 초과.
-
병합 작업이 완료될 수 없음.
-
일시적 오류가 너무 많은 재시도를 거치며 지속되어 테이블이 FAILED 상태로 진입.
새 스냅샷 없이 테이블을 복구하려면 테이블을 복제에서 제거하고, 커넥터를 사용 가능한 가장 이른 위치에서 읽는 증분 전용 모드로 전환한 뒤, 테이블을 다시 추가하세요. 커넥터는 가장 오래된 사용 가능한 CDC 위치에서 모든 사용 가능한 변경을 읽은 뒤 재생·재적용하여 대상 테이블에 반영합니다.
Important
테이블을 복구하기 전에 실패의 근본 원인을 해결하세요. 그렇지 않으면 커넥터가 변경을 재생할 때 같은 오류를 다시 만납니다. 예를 들어 값별 한도를 올리거나( Increase the oversized value limit 참고), 소스 데이터베이스의 문제 레코드를 고치세요.
테이블을 복구하려면:
- 테이블을 복제에서 제거합니다.
Ingestion Parameters컨텍스트에서 Included Table Names에서 테이블을 제거하거나, 테이블이 더 이상 일치하지 않도록 Included Table Regex를 수정합니다. 계속하기 전에 Table State Store 컨트롤러 서비스에서 테이블 상태가 완전히 제거될 때까지 기다립니다.
Important
대상 테이블을 드롭하지 마세요. 이 절차는 기존 대상 테이블을 재사용하고 그 위에 증분 변경을 재생합니다.
-
구성을 변경할 수 있도록 커넥터의 프로세스 그룹을 중지합니다. 커넥터 캔버스에서 커넥터의 프로세스 그룹을 우클릭하고 Stop을 선택합니다.
-
Ingestion Parameters컨텍스트에서Ingestion Type파라미터를incremental로 설정합니다. -
Starting CDC Position파라미터를Earliest로 설정합니다. 커넥터는 가장 오래된 사용 가능한 CDC 위치에서 모든 사용 가능한 변경을 다시 읽은 뒤 대상 테이블에 재생·재적용합니다. 자세한 내용은 Specify load from CDC position를 참고하세요.
Re-read Tables in State는 기본값 New로 두어, 다시 추가한 테이블만 가장 이른 위치에서 읽도록 하세요. 이미 복제 중인 테이블은 마지막 위치에서 계속합니다.
-
1단계의 변경을 되돌려 테이블을 복제에 다시 추가합니다.
-
커넥터의 프로세스 그룹을 시작합니다. 커넥터의 프로세스 그룹을 우클릭하고 Start를 선택합니다.
-
테이블이 증분 복제로 돌아올 때까지 기다립니다. Table State Store 컨트롤러 서비스 상태에서 복구가 완료되면 테이블이 INCREMENTAL_REPLICATION으로 전환됩니다.
-
3단계와 4단계의 변경을 되돌립니다:
Ingestion Type과Starting CDC Position을 이전 값으로 다시 설정합니다.
Warning
이 절차는 소스 CDC 변경 테이블에 여전히 보존된 변경만 복구합니다. CDC 보존 기간이 만료되어 일부 변경이 제거되었다면 복구된 테이블에 간극이 있을 수 있습니다. 그런 경우 테이블을 완전히 재동기화하려면 새 스냅샷을 찍어야 합니다.