CDC용 PostgreSQL용 Cloud SQL 데이터베이스 구성

Datastream을 사용하면 PostgreSQL용 Cloud SQL 데이터베이스에서 지원되는 대상(예: BigQuery 또는 Cloud Storage)으로 변경 데이터 캡처(CDC) 업데이트를 스트리밍할 수 있습니다. 소스 인스턴스를 준비하려면 cloudsql.logical_decoding 플래그를 사용 설정하고, 게시 및 복제 슬롯을 만들고, Datastream 사용자를 구성합니다.

논리 복제 사용 설정

  1. Google Cloud 콘솔에서 Cloud SQL로 이동합니다.

  2. Cloud SQL 인스턴스를 열고 수정 을 클릭합니다.

  3. 플래그 섹션으로 이동합니다.

  4. 플래그 추가를 클릭합니다.

  5. 드롭다운 메뉴에서 cloudsql.logical_decoding 플래그를 선택합니다.

  6. 플래그 값을 사용으로 설정합니다.

  7. 저장 을 클릭하여 변경사항을 저장합니다. 변경사항을 포함하여 인스턴스를 업데이트하려면 인스턴스를 다시 시작해야 합니다.

  8. 인스턴스가 다시 시작되면 개요 페이지의 데이터베이스 플래그 에서 변경사항을 확인합니다.

게시 및 복제 슬롯 만들기

  1. 복제 슬롯을 만들 수 있는 충분한 권한이 있는 사용자로 데이터베이스에 연결합니다. 그렇지 않으면 다음 명령어를 실행합니다.

    ALTER USER USER_NAME WITH REPLICATION;
    

    다음을 바꿉니다.

    • USER_NAME: 복제 권한을 부여하려는 사용자의 이름입니다.
  2. 게시 만들기. 복제할 테이블에 대해서만 게시를 만드는 것이 좋습니다. 이렇게 하면 Datastream이 관련 데이터만 읽을 수 있고 데이터베이스 및 Datastream의 부하가 줄어듭니다.

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;

    다음을 바꿉니다.

    • PUBLICATION_NAME: 게시의 이름입니다. Datastream 스트림 만들기 마법사에서 스트림을 만들 때 이 이름을 제공해야 합니다.
    • SCHEMA: 테이블이 포함된 스키마의 이름입니다.
    • TABLE: 복제할 테이블의 이름입니다.

    데이터베이스의 모든 테이블에 대한 게시를 만들 수도 있습니다. 이 경우 소스 데이터베이스와 Datastream의 부하가 증가합니다.

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  3. 다음 SQL 명령어를 입력하여 복제 슬롯을 만듭니다.

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');

    다음을 바꿉니다.

    • REPLICATION_SLOT_NAME: 복제 슬롯 이름입니다. Datastream 스트림 만들기 마법사에서 스트림을 만들 때 이 이름을 제공해야 합니다.

Datastream 사용자 만들기

  1. PostgreSQL 클라이언트를 사용하여 데이터베이스에 연결합니다.

  2. 다음 PostgreSQL 명령어를 입력합니다.

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';

    다음을 바꿉니다.

    • USER_NAME: 만들려는 Datastream 사용자의 이름입니다.
    • USER_PASSWORD: 만들려는 Datastream 사용자의 로그인 비밀번호입니다.
  3. 자신이 만든 사용자에게 다음 권한을 부여합니다.

    GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME;
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME;
    ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME
        GRANT SELECT ON TABLES TO USER_NAME;
    

    다음을 바꿉니다.

    • SCHEMA_NAME: 권한을 부여할 스키마의 이름입니다.
    • USER_NAME: 권한을 부여하려는 사용자입니다.

다음 단계

  • Datastream이 PostgreSQL 소스와 어떻게 작동하는지 자세히 알아보세요