PostgreSQL에서 Snowflake로 데이터 복제
OCI GoldenGate를 사용하여 PostgreSQL에서 Snowflake로 데이터를 복제하는 방법을 알아봅니다.
시작하기 전에
이 빠른 시작을 성공적으로 완료하려면 다음이 있어야 합니다.
-
소스 데이터베이스로 사용할 PostgreSQL 설치(환경 설정 참조)
-
VCN 보안 목록에서 포트 5432를 엽니다.
-
대상 데이터베이스로 사용할 Snowflake 데이터베이스입니다.
환경 설정: PostgreSQL
이 Quickstart에 대한 환경을 설정하려면 다음을 수행합니다.
-
다음 명령을 실행하여 PostgreSQL 설치를 수행합니다.
-
PostgreSQL 서버 설치:
sudo yum install postgresql-server -
이 SQL 예외를 방지하기 위해 postgresql-contrib 모듈을 설치합니다.
sudo yum install postgresql-contrib -
새 PostgreSQL 데이터베이스 클러스터 생성:
sudo postgresql-setup --initdb -
postgresql.service를 활성화합니다.
sudo systemctl enable postgresql.service -
postgresql.service를 시작합니다.
sudo systemctl start postgresql.service
-
-
기본적으로 PostgreSQL은 로컬 연결만 허용합니다. PostgreSQL에 대한 원격 연결 허용.
-
/var/lib/pgsql/data/postgresql.conf에서 복제용으로 데이터베이스 준비를 수행합니다. -
listen_addresses = 'localhost'를 찾아 주석 처리를 해제하고 localhost를 별표(`)로 변경합니다.listen_addresses = '*' -
다음 매개변수를 다음과 같이 설정합니다.
-
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을 참조하십시오.
- PostgreSQL 서버 다시 시작:
sudo systemctl restart postgresql.service- Oracle Cloud Compute를 사용하여 PostgreSQL을 호스트하는 경우 포트 5432를 엽니다.
sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-all -
-
VCN의 보안 목록에서 포트 5432를 엽니다.
-
> sudo su - postgres > psql주: 또는 위의 예가 작동하지 않을 경우
sudo su - postgres psql를 입력할 수 있습니다. -
PostgreSQL을 설정합니다.
-
seedSRCOCIGGLL_PostgreSQL.sql을 다운로드 및 실행하여 데이터베이스를 설정하고 샘플 데이터를 로드합니다.
-
다음 명령을 실행하여 사용자를 설정합니다.
<password>를 실제 비밀번호로 바꾸십시오.
create user ggadmin with password '<password>'; alter user ggadmin with SUPERUSER; GRANT ALL PRIVILEGES ON DATABASE ociggll TO ggadmin; -
-
환경 설정: Snowflake
-
샘플 스키마를 사용하여 대상 테이블을 생성합니다.
테이블 및 유저가 성공적으로 생성되었는지 확인합니다.
작업 1: OCI GoldenGate 리소스 생성
이 빠른 시작 예에서는 소스 및 대상에 대한 배치 및 접속이 필요합니다.
-
소스 PostgreSQL 데이터베이스에 대한 배포를 생성합니다.
-
대상 Snowflake 데이터베이스에 대한 빅 데이터 배치를 생성합니다.
-
다음 값을 사용하여 PostgreSQL 접속을 생성합니다.
-
유형의 경우 드롭다운에서 PostgreSQL Server를 선택합니다.
-
데이터베이스 이름에
ociggll을 입력합니다. -
호스트의 경우 PostgreSQL이 실행되는 컴퓨트 인스턴스의 퍼블릭 IP를 입력합니다.
-
포트에
5432을 입력합니다. -
사용자 이름에
ggadmin을 입력합니다. -
비밀번호에 암호를 입력합니다.
-
보안 프로토콜의 경우 드롭다운에서 일반을 선택합니다.
-
-
다음 값을 사용하여 Snowflake 연결을 생성합니다.
-
Connection URL에
jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL를 입력합니다.주:
<account_identifier>및<warehouse name>를 적합한 값으로 바꿔야 합니다. -
인증 유형의 경우 드롭다운에서 기본 인증을 선택합니다.
-
사용자 이름에 이름을 입력합니다.
-
Password(비밀번호)에 비밀번호를 입력합니다.
-
-
(선택 사항) Big Data 배치에 퍼블릭 끝점이 없는 경우 GoldenGate에 대한 접속을 생성한 다음 이 접속을 소스 PostgreSQL 배치에 지정합니다.
작업 2: 보완 로깅 활성화
보완 로깅을 사용으로 설정하려면 다음과 같이 하십시오.
-
PostgreSQL GoldenGate 배치 콘솔을 실행합니다.
-
[배치] 페이지에서 PostgreSQL 배치를 선택하여 세부정보를 봅니다.
-
PostgreSQL 배치 세부정보 페이지에서 콘솔 실행을 선택합니다.
-
배치 콘솔 사인인 페이지에서 작업 1, 단계 1에 제공된 GoldenGate 관리 인증서를 입력합니다.
주: 배치를 생성할 때 IAM이 인증서 저장소로 선택되지 않은 경우 사인인이 필요합니다.
-
-
배치 콘솔의 왼쪽 탐색에서 DB 접속, 소스 PostgreSQL 데이터베이스, Trandata 순으로 선택합니다.
-
TRANDATA 페이지의 TRANDATA 정보 옆에 있는 트랜다타 추가(더하기 아이콘)를 선택합니다.
-
Trandata 패널에서 스키마 이름에 대해
src_ociggll을 입력한 다음 제출을 선택합니다.주: 검색 필드를 사용하여
src_ociggll을 검색하고 테이블이 추가되었는지 확인하십시오.
작업 3: 추출 생성
-
변경 데이터 캡처 Extract 추가:
-
왼쪽 탐색에서 추출을 선택합니다.
-
추출 페이지에서 추출 추가(더하기 아이콘)를 선택한 후 다음과 같이 필드에 정보를 입력합니다.
-
정보 추출 페이지에서 다음을 수행합니다.
-
추출 유형에 대해 데이터 캡처 추출 변경을 선택합니다.
-
프로세스 이름에 추출 이름(예:
ECDC)을 입력합니다. -
다음을 선택합니다.
-
-
추출 옵션 페이지에서 다음을 수행합니다.
-
소스 인증서의 경우 도메인 드롭다운에서 Oracle GoldenGate를 선택합니다.
-
별칭 드롭다운에서 소스 PostgreSQL 데이터베이스를 선택합니다.
-
추출 추적 이름에
C1와 같은 2자의 추적 이름을 입력합니다. -
다음을 선택합니다.
-
-
추출 매개변수 페이지에서
MAP *.*, TARGET *.*;를 다음으로 바꿉니다.TABLE SRC_OCIGGLL.*;
-
-
생성 및 실행을 선택합니다.
-
-
초기 로드 추출 추가:
-
추출 페이지에서 추출 추가를 선택한 후 다음과 같이 추출 추가 양식을 완료합니다.
-
정보 추출 페이지에서 다음을 수행합니다.
-
추출 유형의 경우 초기 로드 추출을 선택합니다.
-
프로세스 이름에
EIL과 같은 이름을 입력합니다. -
다음을 선택합니다.
-
-
추출 옵션 페이지에서 다음을 수행합니다.
-
소스 인증서의 경우 도메인 드롭다운에서 Oracle GoldenGate를 선택합니다.
-
별칭 드롭다운에서 PostgreSQL 데이터베이스를 선택합니다.
-
추출 추적 이름에 2자 추적 이름(예:
I1)을 입력합니다. -
다음을 선택합니다.
-
-
추출 매개변수 페이지에서 텍스트 영역의 내용을 다음으로 바꿉니다.
EXTRACT EIL USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate EXTFILE I1, PURGE TABLE src_ociggll.*;주: 계속하기 전에
USERIDALIAS앞에 있는SOURCEDB매개변수를 제거해야 합니다.
-
-
생성 및 실행을 선택합니다.
-
Extracts 페이지로 돌아가서 Extract 시작을 확인할 수 있습니다.
작업 4: 초기 로드 추출에 대한 분배 경로 생성
초기 로드 추출에 대한 분배 경로를 생성하려면 다음을 수행합니다.
-
Oracle Cloud 콘솔의 [배치] 페이지에서 대상 Big Data 배치를 선택합니다.
-
배치 세부정보 페이지에서 콘솔 실행을 선택한 다음 관리 사용자로 로그인합니다.
-
IAM 인증서 저장소를 사용하는 경우 배포 경로 생성 단계를 진행합니다. GoldenGate 인증서 저장소를 사용하는 경우 소스 GoldenGate가 대상 GoldenGate에 접속하는 데 사용하는 사용자를 생성합니다.
-
탐색 메뉴에서 User Administration을 선택합니다.
-
새 사용자 추가(더하기 아이콘)를 선택하고 다음과 같이 필드에 정보를 입력한 다음 제출을 선택합니다.
-
사용자 이름에
ggsnet을 입력합니다. -
역할에 대해 연산자를 선택합니다.
-
확인을 위해 암호를 두 번 입력합니다.
-
-
-
소스 PostgreSQL 배치 콘솔에서 이전 단계에서 생성한 사용자에 대한 경로 접속을 생성합니다.
-
탐색 메뉴에서 경로 접속을 선택합니다.
-
경로 접속 추가(더하기 아이콘)를 선택하고 다음과 같이 필드에 정보를 입력한 다음 제출을 선택합니다.
-
Credential Alias에
dpuser를 입력합니다. -
사용자 ID에
ggsnet를 입력합니다. -
암호에 이전 단계에서 사용한 것과 동일한 암호를 입력합니다.
-
-
-
배포 경로를 만듭니다.
-
서비스 메뉴 표시줄에서 경로를 선택한 다음 배포 경로 추가(더하기 아이콘)를 선택합니다.
-
Add Path Form을 다음과 같이 완성합니다.
-
Path Information 페이지에서 다음을 수행합니다.
-
경로 이름에 이 경로의 이름을 입력합니다.
-
다음을 선택합니다.
-
-
Source Options 페이지에서 다음을 수행합니다.
-
소스 추출의 경우 비워 둡니다.
-
트레일 이름에 초기 로드 추출 추적 이름(
I1)을 입력합니다. -
다음을 선택합니다.
-
-
Target Options 페이지에서 다음을 수행하십시오.
-
대상에서 wss를 선택합니다.
-
대상 호스트의 경우 https:// 또는 후행 슬래시 없이 대상 배치 URL을 입력합니다.
-
포트 번호에서
443을 입력합니다. -
트레일 이름에
I1을 입력합니다. -
대상 인증 방법의 경우 UserID 별칭을 선택합니다.
-
도메인에 대해 이전 단계에서 생성한 도메인 이름을 입력합니다.
-
별칭에 대해 이전 단계(
dpuser)에서 생성된 별칭을 입력합니다. -
다음을 선택합니다.
-
-
-
생성 및 실행을 선택합니다.
생성된 경로를 검토할 수 있는 배포 서비스 페이지로 돌아갑니다.
-
-
대상 배치 콘솔에서 배포 경로의 결과로 생성된 수신기 경로를 검토합니다.
-
경로를 선택합니다.
-
Path 세부 정보를 검토합니다.
-
작업 5: 초기 로드에 대한 Replicat 추가
-
대상 Big Data 배치 콘솔에서 초기 로드 Replicat를 추가합니다.
-
탐색 메뉴에서 복제를 선택한 다음 복제 추가(플러스 아이콘)를 선택합니다.
-
[복제] 페이지에서 다음과 같이 [복제 추가] 필드에 정보를 입력합니다.
-
Replication Information 페이지에서 다음을 수행합니다.
-
복제 유형에 대해 클래식 또는 조정됨을 선택합니다.
-
프로세스 이름에
RIL과 같은 이름을 입력합니다. -
다음을 선택합니다.
-
-
Replicat Options 페이지에서 다음을 수행합니다.
-
복제 추적 이름에 태스크 2의 추적 이름(
I1)을 입력합니다. -
대상 인증서의 경우 Snowflake 접속에 대한 도메인 및 별칭을 선택합니다.
-
사용 가능한 별칭의 경우 드롭다운에서 별칭(예: Snowflake)을 선택합니다.
-
(선택 사항) 외부 저장소를 사용으로 설정하여 드롭다운에서 사용 가능한 스테이지 위치를 선택합니다.
-
다음을 선택합니다.
-
-
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; -
[속성] 페이지에서 속성을 검토하고 생성 및 실행을 선택합니다.
Replicat 세부 정보를 검토할 수 있는 Replicats 페이지로 돌아갑니다.
-
-
-
초기 로드를 확인하려면 Snowflake 데이터베이스에 연결하여 다음 질의를 실행합니다.
select * from SRCMIRROR_OCIGGLL.SRC_CITY; select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
출력은 초기 로드의 결과로 대상 데이터베이스 테이블에 로드된 데이터를 반환해야 합니다.
작업 6: 변경 데이터 캡처에 대한 분배 경로 생성
-
소스 PostgreSQL 배포 콘솔에서 배포 서비스를 선택합니다.
-
배포 경로 추가를 선택합니다.
-
Add Path Form을 다음과 같이 완성합니다.
-
Path Information 페이지에서 다음을 수행합니다.
-
경로 이름에 이름을 입력합니다.
-
다음을 선택합니다.
-
-
Source Options 페이지에서 다음을 수행합니다.
-
소스 추출의 경우 변경 데이터 캡처 추출(
ECDC)을 선택합니다. -
트레일 이름에 대해 변경 데이터 캡처 추적 파일(
C1)을 선택합니다. -
다음을 선택합니다.
-
-
Target Options 페이지에서 다음을 수행하십시오.
-
대상에서 wss를 선택합니다.
-
대상 호스트의 경우 대상 배치 콘솔 URL을 입력합니다. 이 URL은 배치 세부정보 페이지에서 https:// 또는 후행 슬래시 없이 찾을 수 있습니다.
-
포트 번호에서
443을 입력합니다. -
트레일 이름에
C1을 입력합니다. -
대상 인증 방법의 경우 UserID 별칭을 선택합니다.
-
Domain(도메인)에 도메인 이름을 입력하십시오.
-
별칭에 대해 별칭을 입력합니다 .
-
-
경로 생성 및 실행을 선택합니다.
-
-
대상 Big Data 배치 콘솔에서 수신기 서비스를 선택한 다음 생성된 수신기 경로를 검토합니다.
작업 7: 변경 데이터 캡처에 대한 Replicat 추가
소스 PostgreSQL 데이터베이스에 대한 업데이트를 수행하여 Snowflake에 대한 복제를 확인합니다.
-
Replicat를 추가합니다.
-
대상 Big Data 배치 콘솔에서 관리 서비스를 선택한 다음 탐색 메뉴에서 복제를 선택합니다.
-
복제 페이지에서 복제 항목 추가(더하기 아이콘)를 선택한 후 다음과 같이 [복제 항목 추가] 양식을 완성합니다.
-
Replicat Information 페이지에서 다음을 수행합니다.
-
복제 유형에 대해 클래식 또는 조정됨을 선택합니다.
-
프로세스 이름에
RCDC과 같은 이름을 입력합니다. -
다음을 선택합니다.
-
-
Replicat Options 페이지에서 다음을 수행합니다.
-
복제 추적 이름에 태스크 3의 추적 이름(
C1)을 입력합니다. -
대상 인증서의 경우 Snowflake 접속에 대한 도메인 및 별칭을 선택합니다.
-
(선택 사항) 외부 저장소를 사용으로 설정하여 드롭다운에서 사용 가능한 스테이지 위치를 선택합니다.
-
-
[매개변수 파일] 페이지에서 다음 매핑을 추가하고 다음을 선택합니다.
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 페이지로 돌아갑니다.
-
-
-
변경 데이터 수집 확인:
-
소스 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);
-
-
소스 PostgreSQL 배치 콘솔에서
RCDC을 선택한 다음 통계를 선택합니다.src_ociggll.src_city에 10개의 삽입이 있는지 확인합니다.주: Extract가 삽입을 캡처하지 않은 경우
ECDCExtract를 재시작합니다. -
대상 Big Data 배치 콘솔에서
RCDC을 선택하고 세부정보 및 통계를 검토하여 삽입 수를 확인합니다.