Postgres ClickPipe의 동기화 제어
Postgres ClickPipe의 동기화를 제어하는 문서
이 문서에서는 ClickPipe가 CDC (실행 중) 모드에 있을 때 Postgres ClickPipe의 동기화를 제어하는 방법을 설명합니다.
데이터베이스용 ClickPipes의 아키텍처는 두 개의 병렬 프로세스로 구성됩니다. 하나는 원본 데이터베이스에서 데이터를 가져오는 프로세스이고, 다른 하나는 대상 데이터베이스로 데이터를 전송하는 프로세스입니다. 가져오기 프로세스는 데이터를 얼마나 자주 가져올지와 한 번에 얼마나 많은 데이터를 가져올지를 정의하는 동기화 구성에 의해 제어됩니다. 여기서 “한 번에”란 하나의 배치를 의미합니다. ClickPipe는 데이터를 배치 단위로 가져오고 전송하기 때문입니다.
Postgres ClickPipe의 동기화를 제어하는 주요 방법은 두 가지입니다. 아래 설정 중 하나가 적용되면 ClickPipe가 데이터 전송을 시작합니다.
파이프의 동기화 간격은 ClickPipe가 원본 데이터베이스에서 레코드를 가져오는 시간(초 단위)을 의미합니다. 현재까지 가져온 내용을 ClickHouse로 푸시하는 데 걸리는 시간은 이 간격에 포함되지 않습니다.
기본값은 1분입니다.
동기화 간격은 임의의 양의 정수로 설정할 수 있지만, 10초를 초과하는 값으로 유지하는 것이 좋습니다.
가져오기 배치 크기는 ClickPipe가 한 번의 배치에서 원본 데이터베이스로부터 가져오는 레코드 수를 의미합니다. 여기서 레코드는 파이프에 포함된 테이블에서 수행된 삽입, 업데이트, 삭제를 뜻합니다.
기본값은 100,000개 레코드입니다.
안전한 최대값은 1,000만 개입니다.
원본 데이터베이스에서 트랜잭션이 실행되면 ClickPipe는 해당 트랜잭션의 COMMIT을 받을 때까지 기다렸다가 그다음으로 진행합니다. 이 동작은 동기화 간격과 가져오기 배치 크기를 모두 무시합니다.
ClickPipe를 생성하거나 기존 ClickPipe를 편집할 때 동기화 간격과 가져오기 배치 크기를 설정할 수 있습니다.
ClickPipe를 생성할 때는 아래와 같이 생성 마법사의 두 번째 단계에 이 설정이 표시됩니다:
기존 ClickPipe를 편집할 때는 파이프의 설정 탭으로 이동하여 파이프를 일시 중지한 다음, 여기에서 구성을 클릭합니다:
그러면 동기화 설정이 포함된 플라이아웃 패널이 열리며, 여기서 동기화 간격과 가져오기 배치 크기를 변경할 수 있습니다:
이 설정을 사용해 CDC 파이프의 큰 replication slot 문제를 처리하는 방법을 살펴보겠습니다.
원본 데이터베이스에서 데이터를 가져오는 시간에 비해 ClickHouse로 푸시하는 시간은 선형적으로 늘어나지 않습니다. 이 특성을 활용하면 큰 replication slot의 크기를 줄일 수 있습니다.
동기화 간격과 가져오기 배치 크기를 모두 늘리면 ClickPipe가 원본 데이터베이스에서 많은 데이터를 한 번에 가져온 뒤 ClickHouse로 푸시합니다.
ClickPipe의 메트릭 탭에 있는 CDC Syncs 테이블에서 각 배치에 소요되는 시간을 확인할 수 있습니다. 여기서의 소요 시간에는 푸시 시간도 포함되며, 유입되는 행이 없을 경우 ClickPipe가 대기하는 시간 역시 포함된다는 점에 유의하십시오.
마지막 수정일 2026년 6월 10일