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

다음 섹션에서는 PostgreSQL용 Cloud SQL 데이터베이스를 구성하는 방법을 설명합니다.

논리 복제 사용 설정

  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: 복제할 테이블의 이름입니다.

    스키마의 모든 테이블에 대한 게시를 만들 수 있습니다. 이 방식을 사용하면 이후에 만들 테이블을 포함하여 지정된 스키마 목록에 있는 테이블의 변경사항을 복제할 수 있습니다.

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    데이터베이스의 모든 테이블에 대한 게시를 만들 수도 있습니다. 이 경우 소스 데이터베이스와 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: 권한을 부여하려는 사용자입니다.