PostgreSQL로 OCI 데이터베이스를 프로비저닝하고 OCI를 사용하여 최소 다운타임으로 온프레미스에서 마이그레이션 GoldenGate
소개
Oracle Cloud Infrastructure Database with PostgreSQL(OCI Database with PostgreSQL)는 데이터베이스 최적화 스토리지를 통해 3배 더 높은 성능을 제공하는 완전 관리형 PostgreSQL 호환 서비스로, AWS(Amazon Web Service) 대비 절반 비용으로 자동화된 백업, 고가용성, 정기적인 유지보수, 동적으로 스토리지 규모, 수직 확장 등을 제공합니다.
예: 비즈니스 연속성
OCI Database with PostgreSQL 서비스는 99.99% 가동 시간 SLA(서비스 수준 계약), 다중 노드 데이터베이스 시스템의 경우 2분 미만의 RTO(복구 시간 목표) 및 데이터 손실 없이 0의 RPO(복구 지점 목표)를 제공합니다. 단일 AD(가용성 도메인) 지역의 단일 노드 데이터베이스 시스템의 경우 이 서비스는 99.9% 가동 시간 SLA, 20분 미만의 RTO 및 0의 RPO를 제공합니다.
PostgreSQL을 사용하는 OCI 데이터베이스는 OCI 블록 볼륨을 활용하여 사용자 데이터를 저장합니다. 따라서 동일한 내구성, 보안 및 성능 보장이 적용됩니다. 자세한 내용은 OCI Database with PostgreSQL 개요 및 First Principles: Optimizing PostgreSQL for the cloud를 참조하십시오.
이 사용지침서에서는 다운타임을 최소화하면서 OCI GoldenGate를 사용하여 PostgreSQL를 통해 온프레미스 PostgreSQL 데이터베이스에서 OCI 데이터베이스로 마이그레이션하는 방법에 대해 중점적으로 다룹니다.
환경 세부 정보:
- OCI GoldenGate 콘솔 사용자 이름:
oggadmin
. - OCI GoldenGate 버전:
23ai
. - PostgreSQL 관리 이름을 사용하는 OCI 데이터베이스:
admin
.
소스 온프레미스 | 대상 OCI | |
---|---|---|
DB 이름 | product_inventory | 대상 DB |
User | 주문 관리자 | admin |
스키마 | data_analyze | data_analyze |
DB 버전 | 15.12 | 15.6 |
목표
-
PostgreSQL 데이터베이스 시스템으로 OCI 데이터베이스를 생성합니다.
-
OCI GoldenGate 배포를 프로비저닝합니다.
-
배포 시 온프레미스 데이터베이스 및 OCI 데이터베이스 연결을 생성하고 연결을 할당합니다.
-
원본 데이터베이스 서버 및 데이터베이스를 준비합니다.
-
초기 부하 Extract를 생성합니다.
-
pg_dump
유틸리티를 사용하여 소스 데이터베이스 메타데이터를 백업합니다. -
PostgreSQL를 사용하여 메타데이터를 OCI 데이터베이스로 임포트합니다.
-
추적 파일을 사용하여 초기 로드 Replicat를 생성합니다.
-
캡처를 위해 온라인 또는 CDC(변경 데이터 캡처) 추출을 생성하여 시작 LSN(로그 시퀀스 번호)으로 변경합니다.
-
CDC Extract 트레일 파일을 제공하는 온라인 Replicat를 생성합니다.
작업 1: PostgreSQL 데이터베이스 시스템으로 OCI 데이터베이스 프로비전
이 작업에서는 데이터베이스 시스템을 만드는 방법을 설명하고 프로비전하기 전에 다음 정책이 필요합니다. 자세한 내용은 데이터베이스 시스템 관리를 참조하십시오.
-
다음 Oracle Cloud Infrastructure Identity and Access Management(IAM) 정책을 추가합니다.
Allow group <postgresql-admin-group> to read compartments in tenancy Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
-
데이터베이스 관리자 비밀번호에 대한 저장소를 생성하거나 선택합니다. 자세한 내용은 저장소 관리를 참조하십시오..
-
데이터베이스 비밀번호에 대한 키를 생성합니다. 자세한 내용은 Managing Keys를 참조하십시오.
-
데이터베이스 비밀번호에 대한 암호를 생성합니다. 자세한 내용은 저장소 암호 관리를 참조하십시오.
-
OCI 콘솔에 로그인하고 데이터베이스, PostgreSQL, DB 시스템, 새 데이터베이스 시스템 생성으로 이동한 후 다음을 누릅니다.
-
하드웨어 구성을 선택합니다.
-
가상 클라우드 네트워크 및 서브넷을 선택하고 데이터베이스 시스템 관리자 인증서를 입력합니다. 이 예에서 Username은 admin입니다.
만들기가 완료되면 데이터베이스 시스템에 Active 상태가 표시됩니다.
-
다음 명령을 실행하여 컴퓨트 노드에서 PostgreSQL를 사용하여 OCI 데이터베이스에 대한 접속을 확인합니다.
-bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address> user=admin dbname=postgres" Password for user admin: psql (15.12, server 15.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off) Type "help" for help. postgres=>
작업 2: 이전을 위한 OCI GoldenGate 배치 생성
-
OCI 콘솔로 이동하고 Oracle Database, GoldenGate, 배포로 이동한 다음 배포 생성을 누릅니다.
-
다음 이미지에 지정된 필수 정보를 입력하고 PostgreSQL를 Select a Technology로 선택합니다.
-
배포 구성에서
oggadmin
을 사용자 이름으로 사용하여 OCI GoldenGate 콘솔에 관리자로 로그인합니다. -
생성을 눌러 생성 및 배치를 시작합니다. 성공적으로 완료되면 Active 상태가 표시됩니다.
작업 3: 배치 시 온프레미스 데이터베이스 접속, OCI 데이터베이스 접속 생성 및 접속 지정
OCI GoldenGate에는 소스 및 대상 데이터베이스 접속이 모두 필요하며 두 접속을 모두 배치에 지정합니다.
-
소스 데이터베이스 접속을 생성합니다.
-
배치 이름(
PG_Mig_deployment
)을 누르고 접속을 선택한 다음 접속 생성을 누릅니다. 다음 이미지와 같이 필요한 정보를 입력합니다. -
유형을 PostgreSQL 서버로 선택하고 보안 프로토콜을 일반으로 선택한 다음 생성을 누릅니다.
-
-
대상 데이터베이스 접속을 생성합니다.
-
배치 이름을 누르고 접속을 선택한 다음 접속 생성을 누릅니다. 다음 이미지와 같이 필요한 정보를 입력합니다.
-
유형을 OCI PostgreSQL로 선택합니다.
-
보안 프로토콜을 TLS로 선택하고 SSL 모드를 필수로 선택합니다.
-
-
배치에 데이터베이스 접속을 지정합니다.
-
배포로 이동하여 배포 이름(
PG_Mig_deployment
)을 누르고 접속 지정을 선택한 다음 접속 지정을 누릅니다. -
다음 이미지와 같이 필요한 정보를 입력합니다.
연결 지정이 완료된 후 Active 상태가 표시됩니다.
-
작업 4: 소스 데이터베이스 서버 및 데이터베이스 준비
-
postgresql15-contrib
패키지를 설치합니다.OCI GoldenGate는 PostgreSQL 서버 데이터베이스에서 추출하기 위해 소스 데이터베이스 서버에
postgresql14-contrib
패키지가 필요합니다. 패키지는sudo yum install postgresql15-contrib
명령을 사용하여 설치할 수 있습니다(소스 데이터베이스 버전은 15).주: 클라이언트 라이브러리의 버전은 PostgreSQL 데이터베이스 버전과 일치해야 합니다. 10 미만의 클라이언트 버전은 지원되지 않습니다.
-
소스 데이터베이스 및 필요한 권한에 대한 데이터베이스 사용자 생성을 준비합니다.
product_inventory=# create user ggreplication with password 'abc1234'; ERROR: role "ggreplication" already exists product_inventory=# product_inventory=# select current_database(); current_database ------------------- product_inventory (1 row) product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# ALTER USER ggreplication WITH REPLICATION; ALTER ROLE product_inventory=# ALTER USER ggreplication WITH SUPERUSER; ALTER ROLE product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT CREATE ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=#
각 권한의 특정 목적에 대한 자세한 내용은 PostgreSQL에 대한 데이터베이스 사용자 및 권한 준비를 참조하십시오.
-
다음은 PostgreSQL 데이터베이스 구성 파일의 매개변수입니다. 구성 파일의 위치는
$PGDATA/postgresql.conf
입니다.wal_level = logical **# set to logical for Capture** max_replication_slots = 1 **# max number of replication and one slot for Extract/Client** max_wal_senders = 1 **# one sender per max repl slot** track_commit_timestamp = on **# optional, correlates tx commit time** with begin tx log record (useful for # timestamp- based positioning)
참고:
- 앞의 사항을 변경한 후 데이터베이스를 재시작합니다.
- OCI GoldenGate 복제는 PostgreSQL 데이터 유형을 지원했으며 지원되는 데이터 유형에 대한 제한, 지원되는 객체 및 작업은 설명서에서 확인할 수 있습니다. 자세한 내용은 데이터베이스 준비를 참조하십시오.
태스크 5: 초기 로드 추출 생성
초기 로드 Extract를 생성해야 합니다. 그러면 OCI GoldenGate Extract 보고서 섹션에 LSN이 제공됩니다.
-
OCI 콘솔로 이동하여 데이터베이스, GoldenGate, 배치로 이동하고 태스크 2에서 생성된 배치 이름을 누릅니다.
-
콘솔 실행을 누르고 로그인 인증서를 입력합니다.
-
DB 접속으로 이동하면 PostgreSQL 데이터베이스 접속이 있는 지정된 소스 및 OCI 데이터베이스가 표시되고 접속 검사를 확인해야 합니다.
성공한 연결은 이 단계에서 초기 로드를 시작하는 것이 좋습니다.
-
OCI GoldenGate 콘솔로 이동하여 추출로 이동하고 +를 누릅니다.
초기 로드 Extract가 정지되면 OCI GoldenGate 보고서 파일을 확인하고 LSN 세부정보를 기록한 후 작업 9에서 사용하기에 편리하게 유지합니다.
작업 6: pg_dump
명령을 사용하여 소스 데이터베이스 메타데이터 백업
pg_dump
명령은 소스 데이터베이스 product_inventory
메타데이터만 덤프하는 데 사용됩니다.
pg_dump -h localhost -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump
작업 7: PostgreSQL를 사용하여 OCI 데이터베이스로 메타데이터 임포트
pg_restore 바이너리를 사용하여 PostgreSQL를 사용하는 대상 OCI 데이터베이스로 임포트합니다. 여기서 OCI 데이터베이스 이름은 targetdb
입니다.
태스크 1.8에서 연결 명령을 성공적으로 실행한 OCI 컴퓨트 노드에서 복원 명령을 실행합니다.
pg_restore -h <OCI IP address> -U admin -d targetdb -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
List of schemas
Name | Owner
--------------+-------------------
data_analyze | admin
ordermanager | admin
public | pg_database_owner
(3 rows)
주:
select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name;
질의를 사용하여 대상에서 메타데이터를 임포트한 후 테이블 이름을 확인합니다.
작업 8: 추적 파일을 사용하여 초기 로드 Replicat 생성
-
OCI GoldenGate 콘솔로 이동하고 Replicats로 이동한 다음 +를 눌러 Replicat를 생성합니다.
-
초기 로드 복제를 시작하려면 생성 및 실행을 누르고, 완료되면 테이블 행 수를 확인합니다.
-
Reports로 이동하여 초기 로드 복제 보고서를 확인합니다. 두 데이터베이스에서 몇 개의 테이블 행 수를 확인하는 중입니다.
작업 9: 캡처를 위해 LSN 시작으로 변경하는 CDC 추출 생성
CDC Extract는 기존 데이터베이스에서 진행 중인 변경사항을 캡처하는 데 사용되는 온라인 추출이며, CDC Extract는 수집된 LSN 번호에서 캡처를 시작합니다.
-
OCI GoldenGate 콘솔로 이동하고 추출로 이동한 후 +를 누르고 다음 이미지에 표시된 대로 필요한 정보를 입력합니다.
-
CDC가 등록 및 생성되면 옵션으로 시작을 눌러 작업 5에서 수집된 특정 LSN에서 읽도록 지시합니다.
잠시 후 CDC Extract에서 0초 지연을 확인할 수 있습니다.
작업 10: CDC 추출 추적 파일을 제공하는 온라인 복제 생성
-
OCI GoldenGate 콘솔로 이동하여 복제로 이동하고 +를 누른 후 다음 이미지에 표시된 대로 필요한 정보를 입력합니다.
-
MAP
명령을 수정한 후 생성 및 실행을 누릅니다.잠시 후 Online Replicat에서 0초 지연을 확인할 수 있습니다.
검증
다음 질의를 실행하여 소스 테이블 data_analyze.table3
에 대상 데이터베이스 data_analyze.table3
테이블에 복제하여 삽입합니다.
대상측 확인 테이블 수 및 데이터입니다.
관련 링크
-
OCI를 사용하여 PostgreSQL를 통해 온프레미스 PostgreSQL 데이터베이스를 OCI 데이터베이스로 원활하게 마이그레이션 GoldenGate
-
OCI를 사용하여 PostgreSQL를 통해 온프레미스 PostgreSQL 데이터베이스를 OCI 데이터베이스로 마이그레이션 GoldenGate
확인
- 작성자 - Sivakrishna Burle(Oracle North America Cloud Services - NACIE 수석 클라우드 엔지니어)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39918-02
Copyright ©2025, Oracle and/or its affiliates.