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