PostgreSQL에서 Snowflake로 데이터 복제

OCI GoldenGate를 사용하여 PostgreSQL에서 Snowflake로 데이터를 복제하는 방법을 알아봅니다.

시작하기 전에

이 빠른 시작을 성공적으로 완료하려면 다음이 있어야 합니다.

환경 설정: PostgreSQL

이 Quickstart에 대한 환경을 설정하려면 다음을 수행합니다.

  1. 다음 명령을 실행하여 PostgreSQL 설치를 수행합니다.

    1. PostgreSQL 서버 설치:

      sudo yum install postgresql-server
    2. 이 SQL 예외를 방지하기 위해 postgresql-contrib 모듈을 설치합니다.

      sudo yum install postgresql-contrib
    3. 새 PostgreSQL 데이터베이스 클러스터 생성:

      sudo postgresql-setup --initdb
    4. postgresql.service를 활성화합니다.

      sudo systemctl enable postgresql.service
    5. postgresql.service를 시작합니다.

      sudo systemctl start postgresql.service
  2. 기본적으로 PostgreSQL은 로컬 연결만 허용합니다. PostgreSQL에 대한 원격 연결 허용.

    1. /var/lib/pgsql/data/postgresql.conf에서 복제용으로 데이터베이스 준비를 수행합니다.

    2. listen_addresses = 'localhost'를 찾아 주석 처리를 해제하고 localhost를 별표(`)로 변경합니다.

      listen_addresses = '*'
    3. 다음 매개변수를 다음과 같이 설정합니다.

      • wal_level = logical

      • max_replication_slots = 1

      • max_wal_senders = 1

      • track_commit_timestamp = on

      참고:

      Oracle GoldenGate 호스트에서의 접속을 허용하도록 클라이언트 인증이 설정되도록 /var/lib/pgsql/data/pg_hba.conf를 구성합니다. 예를 들어, 다음을 추가합니다.

      #Allow connections from remote hosts
      
      host all all 0.0.0.0/0 md5

      자세한 내용은 The pg_hba.conf File을 참조하십시오.

      1. PostgreSQL 서버 다시 시작:
      sudo systemctl restart postgresql.service
      1. Oracle Cloud Compute를 사용하여 PostgreSQL을 호스트하는 경우 포트 5432를 엽니다.
      sudo firewall-cmd --permanent --add-port=5432/tcp
      sudo firewall-cmd --reload
      sudo firewall-cmd --list-all
    4. VCN의 보안 목록에서 포트 5432를 엽니다.

    5. PostgreSQL에 접속합니다.

      > sudo su - postgres
      > psql

      주: 또는 위의 예가 작동하지 않을 경우 sudo su - postgres psql를 입력할 수 있습니다.

    6. PostgreSQL을 설정합니다.

      1. seedSRCOCIGGLL_PostgreSQL.sql을 다운로드 및 실행하여 데이터베이스를 설정하고 샘플 데이터를 로드합니다.

      2. 다음 명령을 실행하여 사용자를 설정합니다. <password>를 실제 비밀번호로 바꾸십시오.

      create user ggadmin with password '<password>';
      alter user ggadmin with SUPERUSER;
      GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin;

환경 설정: Snowflake

  1. 적절한 권한으로 Snowflake에서 GoldenGate 사용자를 생성합니다.

  2. 샘플 스키마를 사용하여 대상 테이블을 생성합니다.

테이블 및 유저가 성공적으로 생성되었는지 확인합니다.

작업 1: OCI GoldenGate 리소스 생성

이 빠른 시작 예에서는 소스 및 대상에 대한 배치 및 접속이 필요합니다.

  1. 소스 PostgreSQL 데이터베이스에 대한 배포를 생성합니다.

  2. 대상 Snowflake 데이터베이스에 대한 빅 데이터 배치를 생성합니다.

  3. 다음 값을 사용하여 PostgreSQL 접속을 생성합니다.

    1. 유형의 경우 드롭다운에서 PostgreSQL Server를 선택합니다.

    2. 데이터베이스 이름ociggll을 입력합니다.

    3. 호스트의 경우 PostgreSQL이 실행되는 컴퓨트 인스턴스의 퍼블릭 IP를 입력합니다.

    4. 포트5432을 입력합니다.

    5. 사용자 이름ggadmin을 입력합니다.

    6. 비밀번호에 암호를 입력합니다.

    7. 보안 프로토콜의 경우 드롭다운에서 일반을 선택합니다.

  4. 다음 값을 사용하여 Snowflake 연결을 생성합니다.

    1. Connection URL에 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL를 입력합니다.

      주: <account_identifier><warehouse name>를 적합한 값으로 바꿔야 합니다.

    2. 인증 유형의 경우 드롭다운에서 기본 인증을 선택합니다.

    3. 사용자 이름에 이름을 입력합니다.

    4. Password(비밀번호)에 비밀번호를 입력합니다.

  5. (선택 사항) Big Data 배치에 퍼블릭 끝점이 없는 경우 GoldenGate에 대한 접속을 생성한 다음 이 접속을 소스 PostgreSQL 배치에 지정합니다.

  6. PostgreSQL 배치에 소스 PostgreSQL 접속을 지정합니다.

  7. 대상 Big Data 배치에 Snowflake 접속을 지정합니다.

작업 2: 보완 로깅 활성화

보완 로깅을 사용으로 설정하려면 다음과 같이 하십시오.

  1. PostgreSQL GoldenGate 배치 콘솔을 실행합니다.

    1. [배치] 페이지에서 PostgreSQL 배치를 선택하여 세부정보를 봅니다.

    2. PostgreSQL 배치 세부정보 페이지에서 콘솔 실행을 선택합니다.

    3. 배치 콘솔 사인인 페이지에서 작업 1, 단계 1에 제공된 GoldenGate 관리 인증서를 입력합니다.

      주: 배치를 생성할 때 IAM이 인증서 저장소로 선택되지 않은 경우 사인인이 필요합니다.

  2. 배치 콘솔의 왼쪽 탐색에서 DB 접속, 소스 PostgreSQL 데이터베이스, Trandata 순으로 선택합니다.

  3. TRANDATA 페이지의 TRANDATA 정보 옆에 있는 트랜다타 추가(더하기 아이콘)를 선택합니다.

  4. Trandata 패널에서 스키마 이름에 대해 src_ociggll을 입력한 다음 제출을 선택합니다.

    주: 검색 필드를 사용하여 src_ociggll을 검색하고 테이블이 추가되었는지 확인하십시오.

작업 3: 추출 생성

  1. 변경 데이터 캡처 Extract 추가:

    1. 왼쪽 탐색에서 추출을 선택합니다.

    2. 추출 페이지에서 추출 추가(더하기 아이콘)를 선택한 후 다음과 같이 필드에 정보를 입력합니다.

      • 정보 추출 페이지에서 다음을 수행합니다.

        1. 추출 유형에 대해 데이터 캡처 추출 변경을 선택합니다.

        2. 프로세스 이름에 추출 이름(예: ECDC)을 입력합니다.

        3. 다음을 선택합니다.

      • 추출 옵션 페이지에서 다음을 수행합니다.

        1. 소스 인증서의 경우 도메인 드롭다운에서 Oracle GoldenGate를 선택합니다.

        2. 별칭 드롭다운에서 소스 PostgreSQL 데이터베이스를 선택합니다.

        3. 추출 추적 이름에 C1와 같은 2자의 추적 이름을 입력합니다.

        4. 다음을 선택합니다.

      • 추출 매개변수 페이지에서 MAP *.*, TARGET *.*;를 다음으로 바꿉니다.

        TABLE SRC_OCIGGLL.*;
    3. 생성 및 실행을 선택합니다.

  2. 초기 로드 추출 추가:

    1. 추출 페이지에서 추출 추가를 선택한 후 다음과 같이 추출 추가 양식을 완료합니다.

      • 정보 추출 페이지에서 다음을 수행합니다.

        1. 추출 유형의 경우 초기 로드 추출을 선택합니다.

        2. 프로세스 이름EIL과 같은 이름을 입력합니다.

        3. 다음을 선택합니다.

      • 추출 옵션 페이지에서 다음을 수행합니다.

        1. 소스 인증서의 경우 도메인 드롭다운에서 Oracle GoldenGate를 선택합니다.

        2. 별칭 드롭다운에서 PostgreSQL 데이터베이스를 선택합니다.

        3. 추출 추적 이름에 2자 추적 이름(예: I1)을 입력합니다.

        4. 다음을 선택합니다.

      • 추출 매개변수 페이지에서 텍스트 영역의 내용을 다음으로 바꿉니다.

        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        주: 계속하기 전에 USERIDALIAS 앞에 있는 SOURCEDB 매개변수를 제거해야 합니다.

    2. 생성 및 실행을 선택합니다.

Extracts 페이지로 돌아가서 Extract 시작을 확인할 수 있습니다.

작업 4: 초기 로드 추출에 대한 분배 경로 생성

초기 로드 추출에 대한 분배 경로를 생성하려면 다음을 수행합니다.

  1. Oracle Cloud 콘솔의 [배치] 페이지에서 대상 Big Data 배치를 선택합니다.

  2. 배치 세부정보 페이지에서 콘솔 실행을 선택한 다음 관리 사용자로 로그인합니다.

  3. IAM 인증서 저장소를 사용하는 경우 배포 경로 생성 단계를 진행합니다. GoldenGate 인증서 저장소를 사용하는 경우 소스 GoldenGate가 대상 GoldenGate에 접속하는 데 사용하는 사용자를 생성합니다.

    1. 탐색 메뉴에서 User Administration을 선택합니다.

    2. 새 사용자 추가(더하기 아이콘)를 선택하고 다음과 같이 필드에 정보를 입력한 다음 제출을 선택합니다.

      • 사용자 이름ggsnet을 입력합니다.

      • 역할에 대해 연산자를 선택합니다.

      • 확인을 위해 암호를 두 번 입력합니다.

  4. 소스 PostgreSQL 배치 콘솔에서 이전 단계에서 생성한 사용자에 대한 경로 접속을 생성합니다.

    1. 탐색 메뉴에서 경로 접속을 선택합니다.

    2. 경로 접속 추가(더하기 아이콘)를 선택하고 다음과 같이 필드에 정보를 입력한 다음 제출을 선택합니다.

      • Credential Alias에 dpuser를 입력합니다.

      • 사용자 ID에 ggsnet를 입력합니다.

      • 암호에 이전 단계에서 사용한 것과 동일한 암호를 입력합니다.

  5. 배포 경로를 만듭니다.

    1. 서비스 메뉴 표시줄에서 경로를 선택한 다음 배포 경로 추가(더하기 아이콘)를 선택합니다.

    2. Add Path Form을 다음과 같이 완성합니다.

      • Path Information 페이지에서 다음을 수행합니다.

        1. 경로 이름에 이 경로의 이름을 입력합니다.

        2. 다음을 선택합니다.

      • Source Options 페이지에서 다음을 수행합니다.

        1. 소스 추출의 경우 비워 둡니다.

        2. 트레일 이름에 초기 로드 추출 추적 이름(I1)을 입력합니다.

        3. 다음을 선택합니다.

      • Target Options 페이지에서 다음을 수행하십시오.

        1. 대상에서 wss를 선택합니다.

        2. 대상 호스트의 경우 https:// 또는 후행 슬래시 없이 대상 배치 URL을 입력합니다.

        3. 포트 번호에서 443을 입력합니다.

        4. 트레일 이름I1을 입력합니다.

        5. 대상 인증 방법의 경우 UserID 별칭을 선택합니다.

        6. 도메인에 대해 이전 단계에서 생성한 도메인 이름을 입력합니다.

        7. 별칭에 대해 이전 단계(dpuser)에서 생성된 별칭을 입력합니다.

        8. 다음을 선택합니다.

    3. 생성 및 실행을 선택합니다.

    생성된 경로를 검토할 수 있는 배포 서비스 페이지로 돌아갑니다.

  6. 대상 배치 콘솔에서 배포 경로의 결과로 생성된 수신기 경로를 검토합니다.

    1. 경로를 선택합니다.

    2. Path 세부 정보를 검토합니다.

작업 5: 초기 로드에 대한 Replicat 추가

  1. 대상 Big Data 배치 콘솔에서 초기 로드 Replicat를 추가합니다.

    1. 탐색 메뉴에서 복제를 선택한 다음 복제 추가(플러스 아이콘)를 선택합니다.

    2. [복제] 페이지에서 다음과 같이 [복제 추가] 필드에 정보를 입력합니다.

      1. Replication Information 페이지에서 다음을 수행합니다.

        1. 복제 유형에 대해 클래식 또는 조정됨을 선택합니다.

        2. 프로세스 이름RIL과 같은 이름을 입력합니다.

        3. 다음을 선택합니다.

      2. Replicat Options 페이지에서 다음을 수행합니다.

        1. 복제 추적 이름에 태스크 2의 추적 이름(I1)을 입력합니다.

        2. 대상 인증서의 경우 Snowflake 접속에 대한 도메인별칭을 선택합니다.

        3. 사용 가능한 별칭의 경우 드롭다운에서 별칭(예: Snowflake)을 선택합니다.

        4. (선택 사항) 외부 저장소를 사용으로 설정하여 드롭다운에서 사용 가능한 스테이지 위치를 선택합니다.

        5. 다음을 선택합니다.

      3. Parameter File 페이지에서 다음 매핑을 추가합니다.

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      4. [속성] 페이지에서 속성을 검토하고 생성 및 실행을 선택합니다.

        Replicat 세부 정보를 검토할 수 있는 Replicats 페이지로 돌아갑니다.

  2. 초기 로드를 확인하려면 Snowflake 데이터베이스에 연결하여 다음 질의를 실행합니다.

    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

출력은 초기 로드의 결과로 대상 데이터베이스 테이블에 로드된 데이터를 반환해야 합니다.

작업 6: 변경 데이터 캡처에 대한 분배 경로 생성

  1. 소스 PostgreSQL 배포 콘솔에서 배포 서비스를 선택합니다.

  2. 배포 경로 추가를 선택합니다.

  3. Add Path Form을 다음과 같이 완성합니다.

    1. Path Information 페이지에서 다음을 수행합니다.

      1. 경로 이름에 이름을 입력합니다.

      2. 다음을 선택합니다.

    2. Source Options 페이지에서 다음을 수행합니다.

      1. 소스 추출의 경우 변경 데이터 캡처 추출(ECDC)을 선택합니다.

      2. 트레일 이름에 대해 변경 데이터 캡처 추적 파일(C1)을 선택합니다.

      3. 다음을 선택합니다.

    3. Target Options 페이지에서 다음을 수행하십시오.

      1. 대상에서 wss를 선택합니다.

      2. 대상 호스트의 경우 대상 배치 콘솔 URL을 입력합니다. 이 URL은 배치 세부정보 페이지에서 https:// 또는 후행 슬래시 없이 찾을 수 있습니다.

      3. 포트 번호에서 443을 입력합니다.

      4. 트레일 이름C1을 입력합니다.

      5. 대상 인증 방법의 경우 UserID 별칭을 선택합니다.

      6. Domain(도메인)에 도메인 이름을 입력하십시오.

      7. 별칭에 대해 별칭을 입력합니다 .

    4. 경로 생성 및 실행을 선택합니다.

  4. 대상 Big Data 배치 콘솔에서 수신기 서비스를 선택한 다음 생성된 수신기 경로를 검토합니다.

작업 7: 변경 데이터 캡처에 대한 Replicat 추가

소스 PostgreSQL 데이터베이스에 대한 업데이트를 수행하여 Snowflake에 대한 복제를 확인합니다.

  1. Replicat를 추가합니다.

    1. 대상 Big Data 배치 콘솔에서 관리 서비스를 선택한 다음 탐색 메뉴에서 복제를 선택합니다.

    2. 복제 페이지에서 복제 항목 추가(더하기 아이콘)를 선택한 후 다음과 같이 [복제 항목 추가] 양식을 완성합니다.

      • Replicat Information 페이지에서 다음을 수행합니다.

        1. 복제 유형에 대해 클래식 또는 조정됨을 선택합니다.

        2. 프로세스 이름RCDC과 같은 이름을 입력합니다.

        3. 다음을 선택합니다.

      • Replicat Options 페이지에서 다음을 수행합니다.

        1. 복제 추적 이름에 태스크 3의 추적 이름(C1)을 입력합니다.

        2. 대상 인증서의 경우 Snowflake 접속에 대한 도메인 및 별칭을 선택합니다.

        3. (선택 사항) 외부 저장소를 사용으로 설정하여 드롭다운에서 사용 가능한 스테이지 위치를 선택합니다.

      • [매개변수 파일] 페이지에서 다음 매핑을 추가하고 다음을 선택합니다.

        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      • [속성] 페이지에서 속성을 검토하고 생성 및 실행을 선택합니다.

        Replicat 세부 정보를 검토할 수 있는 Replicats 페이지로 돌아갑니다.

  2. 변경 데이터 수집 확인:

    1. 소스 PostgreSQL 데이터베이스에 대한 업데이트를 수행하여 Snowflake에 대한 복제를 확인합니다. 다음 스크립트를 실행하여 PostgreSQL 데이터베이스에 삽입합니다.

      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
  3. 소스 PostgreSQL 배치 콘솔에서 RCDC을 선택한 다음 통계를 선택합니다. src_ociggll.src_city에 10개의 삽입이 있는지 확인합니다.

    주: Extract가 삽입을 캡처하지 않은 경우 ECDC Extract를 재시작합니다.

  4. 대상 Big Data 배치 콘솔에서 RCDC을 선택하고 세부정보통계를 검토하여 삽입 수를 확인합니다.

작업 8: 프로세스 모니터 및 유지 관리

  1. 복제 프로세스를 모니터합니다.

  2. 추적 파일 관리.