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
DB 이름 product_inventory 대상 DB
User 주문 관리자 admin
스키마 data_analyze data_analyze
DB 버전 15.12 15.6

목표

  1. PostgreSQL 데이터베이스 시스템으로 OCI 데이터베이스를 생성합니다.

  2. OCI GoldenGate 배포를 프로비저닝합니다.

  3. 배포 시 온프레미스 데이터베이스 및 OCI 데이터베이스 연결을 생성하고 연결을 할당합니다.

  4. 원본 데이터베이스 서버 및 데이터베이스를 준비합니다.

  5. 초기 부하 Extract를 생성합니다.

  6. pg_dump 유틸리티를 사용하여 소스 데이터베이스 메타데이터를 백업합니다.

  7. PostgreSQL를 사용하여 메타데이터를 OCI 데이터베이스로 임포트합니다.

  8. 추적 파일을 사용하여 초기 로드 Replicat를 생성합니다.

  9. 캡처를 위해 온라인 또는 CDC(변경 데이터 캡처) 추출을 생성하여 시작 LSN(로그 시퀀스 번호)으로 변경합니다.

  10. CDC Extract 트레일 파일을 제공하는 온라인 Replicat를 생성합니다.

작업 1: PostgreSQL 데이터베이스 시스템으로 OCI 데이터베이스 프로비전

이 작업에서는 데이터베이스 시스템을 만드는 방법을 설명하고 프로비전하기 전에 다음 정책이 필요합니다. 자세한 내용은 데이터베이스 시스템 관리를 참조하십시오.

  1. 다음 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
    
  2. 데이터베이스 관리자 비밀번호에 대한 저장소를 생성하거나 선택합니다. 자세한 내용은 저장소 관리를 참조하십시오..

  3. 데이터베이스 비밀번호에 대한 키를 생성합니다. 자세한 내용은 Managing Keys를 참조하십시오.

  4. 데이터베이스 비밀번호에 대한 암호를 생성합니다. 자세한 내용은 저장소 암호 관리를 참조하십시오.

  5. OCI 콘솔에 로그인하고 데이터베이스, PostgreSQL, DB 시스템, 새 데이터베이스 시스템 생성으로 이동한 후 다음을 누릅니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  6. 하드웨어 구성을 선택합니다.

    여기에 이미지 설명 입력

  7. 가상 클라우드 네트워크서브넷을 선택하고 데이터베이스 시스템 관리자 인증서를 입력합니다. 이 예에서 Usernameadmin입니다.

    여기에 이미지 설명 입력

    만들기가 완료되면 데이터베이스 시스템에 Active 상태가 표시됩니다.

    여기에 이미지 설명 입력

  8. 다음 명령을 실행하여 컴퓨트 노드에서 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 배치 생성

  1. OCI 콘솔로 이동하고 Oracle Database, GoldenGate, 배포로 이동한 다음 배포 생성을 누릅니다.

  2. 다음 이미지에 지정된 필수 정보를 입력하고 PostgreSQLSelect a Technology로 선택합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  3. 배포 구성에서 oggadmin사용자 이름으로 사용하여 OCI GoldenGate 콘솔에 관리자로 로그인합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  4. 생성을 눌러 생성 및 배치를 시작합니다. 성공적으로 완료되면 Active 상태가 표시됩니다.

    여기에 이미지 설명 입력

작업 3: 배치 시 온프레미스 데이터베이스 접속, OCI 데이터베이스 접속 생성 및 접속 지정

OCI GoldenGate에는 소스 및 대상 데이터베이스 접속이 모두 필요하며 두 접속을 모두 배치에 지정합니다.

  1. 소스 데이터베이스 접속을 생성합니다.

    1. 배치 이름(PG_Mig_deployment)을 누르고 접속을 선택한 다음 접속 생성을 누릅니다. 다음 이미지와 같이 필요한 정보를 입력합니다.

      여기에 이미지 설명 입력

    2. 유형PostgreSQL 서버로 선택하고 보안 프로토콜일반으로 선택한 다음 생성을 누릅니다.

      여기에 이미지 설명 입력

  2. 대상 데이터베이스 접속을 생성합니다.

    1. 배치 이름을 누르고 접속을 선택한 다음 접속 생성을 누릅니다. 다음 이미지와 같이 필요한 정보를 입력합니다.

      여기에 이미지 설명 입력

    2. 유형OCI PostgreSQL로 선택합니다.

      여기에 이미지 설명 입력

    3. 보안 프로토콜TLS로 선택하고 SSL 모드필수로 선택합니다.

      여기에 이미지 설명 입력

  3. 배치에 데이터베이스 접속을 지정합니다.

    1. 배포로 이동하여 배포 이름(PG_Mig_deployment)을 누르고 접속 지정을 선택한 다음 접속 지정을 누릅니다.

      여기에 이미지 설명 입력

    2. 다음 이미지와 같이 필요한 정보를 입력합니다.

      여기에 이미지 설명 입력

      연결 지정이 완료된 후 Active 상태가 표시됩니다.

      여기에 이미지 설명 입력

작업 4: 소스 데이터베이스 서버 및 데이터베이스 준비

  1. postgresql15-contrib 패키지를 설치합니다.

    OCI GoldenGate는 PostgreSQL 서버 데이터베이스에서 추출하기 위해 소스 데이터베이스 서버에 postgresql14-contrib 패키지가 필요합니다. 패키지는 sudo yum install postgresql15-contrib 명령을 사용하여 설치할 수 있습니다(소스 데이터베이스 버전은 15).

    주: 클라이언트 라이브러리의 버전은 PostgreSQL 데이터베이스 버전과 일치해야 합니다. 10 미만의 클라이언트 버전은 지원되지 않습니다.

  2. 소스 데이터베이스 및 필요한 권한에 대한 데이터베이스 사용자 생성을 준비합니다.

    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에 대한 데이터베이스 사용자 및 권한 준비를 참조하십시오.

  3. 다음은 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이 제공됩니다.

  1. OCI 콘솔로 이동하여 데이터베이스, GoldenGate, 배치로 이동하고 태스크 2에서 생성된 배치 이름을 누릅니다.

    여기에 이미지 설명 입력

  2. 콘솔 실행을 누르고 로그인 인증서를 입력합니다.

    여기에 이미지 설명 입력

  3. DB 접속으로 이동하면 PostgreSQL 데이터베이스 접속이 있는 지정된 소스 및 OCI 데이터베이스가 표시되고 접속 검사를 확인해야 합니다.

    여기에 이미지 설명 입력

    성공한 연결은 이 단계에서 초기 로드를 시작하는 것이 좋습니다.

  4. 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 생성

  1. OCI GoldenGate 콘솔로 이동하고 Replicats로 이동한 다음 +를 눌러 Replicat를 생성합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  2. 초기 로드 복제를 시작하려면 생성 및 실행을 누르고, 완료되면 테이블 행 수를 확인합니다.

  3. Reports로 이동하여 초기 로드 복제 보고서를 확인합니다. 두 데이터베이스에서 몇 개의 테이블 행 수를 확인하는 중입니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

작업 9: 캡처를 위해 LSN 시작으로 변경하는 CDC 추출 생성

CDC Extract는 기존 데이터베이스에서 진행 중인 변경사항을 캡처하는 데 사용되는 온라인 추출이며, CDC Extract는 수집된 LSN 번호에서 캡처를 시작합니다.

  1. OCI GoldenGate 콘솔로 이동하고 추출로 이동한 후 +를 누르고 다음 이미지에 표시된 대로 필요한 정보를 입력합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  2. CDC가 등록 및 생성되면 옵션으로 시작을 눌러 작업 5에서 수집된 특정 LSN에서 읽도록 지시합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

    잠시 후 CDC Extract에서 0초 지연을 확인할 수 있습니다.

    여기에 이미지 설명 입력

작업 10: CDC 추출 추적 파일을 제공하는 온라인 복제 생성

  1. OCI GoldenGate 콘솔로 이동하여 복제로 이동하고 +를 누른 후 다음 이미지에 표시된 대로 필요한 정보를 입력합니다.

    여기에 이미지 설명 입력

    여기에 이미지 설명 입력

  2. MAP 명령을 수정한 후 생성 및 실행을 누릅니다.

    여기에 이미지 설명 입력

    잠시 후 Online Replicat에서 0초 지연을 확인할 수 있습니다.

    여기에 이미지 설명 입력

검증

다음 질의를 실행하여 소스 테이블 data_analyze.table3에 대상 데이터베이스 data_analyze.table3 테이블에 복제하여 삽입합니다.

여기에 이미지 설명 입력

대상측 확인 테이블 수 및 데이터입니다.

여기에 이미지 설명 입력

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.