pg_dump 및 pg_restore를 사용하여 Managed Postgres로 마이그레이션하기
이 가이드는 pg_dump 및 pg_restore 유틸리티를 사용하여 PostgreSQL 데이터베이스를 ClickHouse Managed Postgres로 마이그레이션하는 단계별 안내를 제공합니다.
선행 조건
- 소스 PostgreSQL 데이터베이스에 대한 접근 권한.
- 로컬 머신에
pg_dump및pg_restore가 설치되어 있어야 합니다. 일반적으로 PostgreSQL을 설치하면 함께 포함됩니다. 포함되어 있지 않다면 PostgreSQL 공식 웹사이트에서 다운로드할 수 있습니다.
설정
단계를 따라가기 위해 예제로 RDS Postgres 데이터베이스를 소스 데이터베이스로 사용하겠습니다. 구성은 다음과 같습니다:

다음과 같은 구성을 사용합니다:
- 두 개의 테이블 -
events와users.events에는 백만 행이 있고,users에는 천 행이 있습니다. events에는 인덱스가 있습니다.events테이블 위에 뷰가 하나 있습니다.- 시퀀스가 두 개 있습니다.
소스 데이터베이스 덤프 생성
이제 pg_dump를 사용하여 위의 객체 덤프 파일을 생성합니다. 다음과 같은 간단한 명령입니다:
여기에서는 다음과 같이 합니다:
<user>,<password>,<host>,<port>,<database>를 소스 데이터베이스 자격 증명으로 바꿉니다. 대부분의 Postgres 제공업체는 바로 사용할 수 있는 연결 문자열을 제공합니다.--format directory는 덤프를 디렉터리 형식으로 생성하도록 지정하며, 이는pg_restore에 적합합니다.-f rds-dump는 덤프 파일의 출력 디렉터리를 지정합니다. 이 디렉터리는 자동으로 생성되며, 미리 존재하지 않아야 합니다.--jobs플래그 뒤에 실행할 병렬 작업 개수를 지정해 덤프 작업을 병렬화할 수도 있습니다. 자세한 내용은 pg_dump 문서를 참고하십시오.
이 과정을 한 번 실행해 보면 소요 시간과 덤프 파일 크기를 미리 파악할 수 있습니다.
이 명령을 실행하면 다음과 같이 출력됩니다:

덤프를 ClickHouse Managed Postgres로 마이그레이션하기
이제 덤프 파일이 준비되었으므로 pg_restore를 사용하여 ClickHouse Managed Postgres 인스턴스에 복원할 수 있습니다.
Managed Postgres 인스턴스 생성
먼저 Managed Postgres 인스턴스가, 가능하면 소스와 동일한 리전에 준비되어 있는지 확인합니다. 여기에 있는 빠른 가이드를 참고할 수 있습니다. 이 가이드에서는 다음과 같은 인스턴스를 실행합니다:

덤프 복원하기
이제 로컬 머신으로 돌아와 pg_restore 명령을 사용해 덤프를 Managed Postgres 인스턴스로 복원합니다:
Managed Postgres 인스턴스에 대한 연결 문자열은 ClickHouse Cloud 콘솔에서 확인할 수 있습니다. 이에 대해서는 여기에서 아주 간단히 설명합니다.
여기에서도 확인해야 할 플래그가 몇 가지 있습니다:
--verbose는 복원 과정에서 자세한 출력을 제공합니다.--jobs플래그를 사용하여 복원 작업을 병렬로 실행할 수도 있습니다. 자세한 내용은 pg_restore 문서를 참고하십시오.
이 경우 명령은 다음과 같습니다:

마이그레이션 검증
복원 프로세스가 완료되면 Managed Postgres 인스턴스에 연결하여 모든 데이터와 객체가 성공적으로 마이그레이션되었는지 확인할 수 있습니다. PostgreSQL 클라이언트를 사용해 연결한 뒤 쿼리를 실행하면 됩니다. 다음은 마이그레이션 후 Managed Postgres 설정의 모습입니다:

모든 테이블, 인덱스, 뷰, 시퀀스가 온전히 존재하며, 데이터 건수도 일치함을 확인할 수 있습니다.
고려 사항
- 소스 및 대상 데이터베이스의 PostgreSQL 버전이 호환되는지 확인합니다. 소스 서버보다 오래된 버전의 pg_dump를 사용하면 기능 누락이나 복원 문제로 이어질 수 있습니다. 이상적으로는 소스 데이터베이스와 동일하거나 더 최신의 메이저 버전의 pg_dump를 사용합니다.
- 대규모 데이터베이스는 덤프 및 복원에 상당한 시간이 소요될 수 있습니다.
다운타임을 최소화할 수 있도록 사전에 계획하고, 지원되는 경우 병렬 덤프/복원(
--jobs) 사용을 고려합니다. - pg_dump / pg_restore는 모든 데이터베이스 관련 객체나 런타임 상태를 그대로 가져오지 않는다는 점에 유의하십시오. 여기에는 역할 및 역할 멤버십, 복제 슬롯, 서버 수준 설정(예: postgresql.conf, pg_hba.conf), 테이블스페이스, 런타임 통계 등이 포함됩니다.
다음 단계
축하합니다! pg_dump과 pg_restore를 사용하여 PostgreSQL 데이터베이스를 ClickHouse Managed Postgres로 성공적으로 마이그레이션했습니다. 이제 Managed Postgres 기능과 ClickHouse와의 통합을 살펴볼 준비가 되었습니다. 시작에 도움이 되는 10분 분량의 퀵스타트 가이드를 참고하십시오: