Postgres용 PlanetScale은 현재 조기 액세스 상태입니다.
지원되는 Postgres 버전
논리적 복제 활성화
-
Postgres 인스턴스에서 복제를 활성화하려면 먼저 다음 설정이 적용되어 있는지 확인해야 합니다.
이를 확인하려면 다음 SQL 명령을 실행하십시오.출력 결과는 기본적으로
logical이어야 합니다. 그렇지 않다면 PlanetScale 콘솔에 로그인한 뒤Cluster configuration->Parameters로 이동하고,Write-ahead log항목까지 스크롤하여 값을 변경하십시오.
- 또한
max_slot_wal_keep_size설정을 기본값인 4GB보다 더 크게 늘리는 것을 권장합니다. 이 역시 PlanetScale 콘솔에서Cluster configuration->Parameters로 이동한 다음Write-ahead log항목까지 스크롤하여 변경할 수 있습니다. 새 값을 정하는 데 도움이 필요하면 여기를 참조하십시오.
권한 및 publication이 있는 사용자 생성
postgres.<...> 사용자를 사용해 PlanetScale Postgres 인스턴스에 연결한 다음, 아래 명령을 실행합니다:
-
ClickPipes 전용 사용자를 생성합니다:
-
이전 단계에서 생성한 사용자에게 스키마 수준의 읽기 전용 액세스 권한을 부여합니다. 다음 예시는
public스키마에 대한 권한을 보여줍니다. 복제하려는 테이블이 포함된 각 스키마에 대해 이 명령을 반복하십시오: -
사용자에게 복제 권한을 부여합니다:
- 복제하려는 테이블을 포함하는 publication을 생성합니다. 성능 오버헤드를 피하려면 publication에는 필요한 테이블만 포함하는 것을 강력히 권장합니다.
-
특정 테이블에 대한 publication을 생성하려면:
-
특정 스키마의 모든 테이블에 대한 publication을 생성하려면:
-
특정 스키마의 모든 테이블에 대한 publication을 생성하려면:
clickpipes publication은 변경 이벤트가 ClickPipes로 스트리밍될 테이블 집합을 정의합니다. 모든 테이블을 복제할 의도가 없다면 FOR ALL TABLES 사용은 권장하지 않습니다. 불필요한 테이블이 포함되면 Postgres에서 ClickPipes로 전달되는 WAL 트래픽이 증가하고 전체 복제 효율이 낮아지기 때문입니다.
주의 사항
- PlanetScale Postgres에 연결하려면 현재 브랜치 정보를 앞서 생성한 사용자 이름 뒤에 붙여야 합니다. 예를 들어 생성한 사용자 이름이
clickpipes_user인 경우, ClickPipe 생성 시 입력하는 실제 사용자 이름은clickpipes_user.branch여야 합니다. 여기서branch는 현재 PlanetScale Postgres 브랜치의 “id”를 의미합니다. 이를 빠르게 확인하려면 앞서 사용자 생성에 사용한postgres사용자의 사용자 이름을 참고하면 됩니다. 마침표(.) 뒤에 오는 부분이 브랜치 id입니다. - PlanetScale Postgres에 연결하는 CDC 파이프에는
PSBouncer포트(현재6432)를 사용하지 마십시오. 일반 포트5432를 사용해야 합니다. 초기 로드 전용 파이프의 경우에는 두 포트 모두 사용할 수 있습니다. - 반드시 프라이머리 인스턴스에만 연결하십시오. 현재 레플리카 인스턴스 연결은 지원되지 않습니다.