사전 요구 사항
- 원본 PostgreSQL 데이터베이스에 대한 접근 권한.
- 데이터를 마이그레이션할 ClickHouse Managed Postgres 인스턴스.
- 머신에 설치된 PeerDB. PeerDB GitHub 리포지토리의 설치 지침을 따르면 됩니다. 리포지토리를 클론한 후
docker-compose up만 실행하면 됩니다. 이 가이드에서는 PeerDB UI를 사용하며, PeerDB가 실행되면http://localhost:3000에서 접속할 수 있습니다.
마이그레이션 전 고려 사항
- 데이터베이스 객체: PeerDB는 소스 스키마를 기준으로 대상 데이터베이스에 테이블을 자동으로 생성합니다. 하지만 인덱스, 제약 조건, 트리거와 같은 일부 데이터베이스 객체는 자동으로 마이그레이션되지 않습니다. 이러한 객체는 마이그레이션 후 대상 데이터베이스에서 수동으로 다시 생성해야 합니다.
- DDL 변경: 지속적 복제를 활성화하면 PeerDB는 DML 작업(INSERT, UPDATE, DELETE)에 대해 대상 데이터베이스를 소스와 동기화된 상태로 유지하고, ADD COLUMN 작업도 전파합니다. 하지만 다른 DDL 변경(예: DROP COLUMN, ALTER COLUMN)은 자동으로 전파되지 않습니다. 스키마 변경 지원에 대한 자세한 내용은 여기를 참조하십시오.
- 네트워크 연결: PeerDB가 실행되는 머신에서 소스 데이터베이스와 대상 데이터베이스 모두에 연결할 수 있어야 합니다. 연결을 허용하려면 방화벽 규칙이나 Security Group 설정을 구성해야 할 수 있습니다.
피어 생성
+ New peer 버튼을 클릭합니다.
원본 피어 생성
Create peer 버튼을 클릭하여 피어를 저장하세요.
대상 피어 생성
Create peer 버튼을 클릭하여 대상 피어를 저장합니다.
이제 “Peers” 섹션에 소스 피어와 대상 피어가 모두 표시되는 것을 확인할 수 있습니다.
원본 스키마 덤프 확보하기
pg_dump를 사용하면 원본 PostgreSQL 데이터베이스의 스키마만 포함된 dump를 생성할 수 있습니다:
pg_dump 설치
pg_dump 설치
Ubuntu:패키지 목록을 업데이트합니다:PostgreSQL 클라이언트를 설치합니다:macOS:방법 1: Homebrew 사용(권장)아직 설치되어 있지 않다면 Homebrew를 설치합니다:PostgreSQL을 설치합니다:설치를 확인합니다:
스키마 덤프에서 고유 제약 조건 및 인덱스 제거
스키마 덤프를 대상 데이터베이스에 적용
psql로 접속한 다음 스키마 덤프 파일을 실행하여 대상 ClickHouse Managed Postgres 데이터베이스에 적용할 수 있습니다.
session_replication_role이 replica로 설정되도록 할 수 있습니다:
미러 생성
+ New mirror 버튼을 클릭하십시오.
- 마이그레이션 내용을 설명하는 이름을 미러에 지정하십시오.
- 드롭다운 메뉴에서 앞서 생성한 원본 피어와 대상 피어를 선택하십시오.
- 다음 사항을 확인하십시오:
- 소프트 삭제가 OFF로 설정되어 있어야 합니다.
Advanced settings를 펼치십시오. Postgres type system is enabled는 활성화되어 있고 PeerDB columns are disabled는 비활성화되어 있는지 확인하십시오.
- 마이그레이션할 테이블을 선택하십시오. 특정 테이블만 선택하거나 원본 DB의 모든 테이블을 선택할 수 있습니다.
테이블 선택앞선 단계에서 스키마를 그대로 마이그레이션했으므로, 대상 DB의 대상 테이블 이름이 원본 테이블 이름과 동일한지 확인하십시오.
- 미러 설정을 완료했으면
Create mirror버튼을 클릭하십시오.
초기 적재가 완료될 때까지 기다리기
초기 적재 및 복제 모니터링
- 먼저 각 테이블의 행 수를 추정하기 위해 COUNT 쿼리를 실행합니다.
- 그런 다음 NTILE을 사용하는 파티셔닝 쿼리를 실행하여 대용량 테이블을 더 작은 청크로 나눠 데이터 전송 효율을 높입니다.
- 이후 FETCH 명령을 실행해 소스 데이터베이스에서 데이터를 가져온 다음, PeerDB가 이를 대상 데이터베이스에 동기화합니다.
마이그레이션 후 작업
이러한 단계는 구체적인 사용 사례와 애플리케이션 요구 사항에 따라 달라질 수 있습니다. 중요한 점은 새 시스템으로 완전히 전환하기 전에 데이터 일관성을 보장하고, 다운타임을 최소화하며, 마이그레이션된 데이터의 무결성을 검증하는 것입니다.
- 컷오버 전 검증 확인 실행
- 원본 시스템의 쓰기 작업 중지
- 복제가 완전히 동기화되었는지 확인하세요
- 제약 조건, 인덱스, 트리거를 다시 생성하고 활성화
replica로 설정했다면 이를 재설정하십시오:
- 대상 테이블의 시퀀스 재설정
- 애플리케이션 트래픽 전환
- 읽기 트래픽을 ClickHouse Managed Postgres로 전환합니다.
- 쓰기 트래픽을 ClickHouse Managed Postgres로 전환합니다.
- 애플리케이션 오류, 제약 조건 위반, 데이터베이스 상태를 모니터링합니다.
- 리소스 정리
Replication slots지속적 복제를 활성화한 경우 PeerDB는 원본 PostgreSQL 데이터베이스에 replication slot을 생성합니다. 불필요한 리소스 사용을 방지하려면 마이그레이션을 마친 후 원본 데이터베이스에서 replication slot을 수동으로 삭제하십시오.
참고 자료
다음 단계
pg_dump 및 pg_restore를 사용해 PostgreSQL 데이터베이스를 ClickHouse Managed Postgres로 성공적으로 마이그레이션했습니다. 이제 Managed Postgres의 기능과 ClickHouse 통합을 살펴볼 준비가 되었습니다. 시작하는 데 도움이 되는 10분 분량의 퀵스타트 가이드는 다음과 같습니다.