pg_dump 유틸리티를 사용하여 PostgreSQL 환경 간 정확한 인스턴스화

Oracle GoldenGate를 사용하여 둘 이상의 PostgreSQL 호환 데이터베이스 간에 복제하는 경우 PostgreSQL에 포함된 pg_dump(pg_dumpall)/pg_restore 백업 유틸리티를 사용할 수 있습니다. 그러면 대상 시스템에서 복원될 소스 데이터베이스의 백업 또는 스냅샷이 생성됩니다.

pg_dump(pg_dumpall) 및 pg_restore(PostgreSQL 설명서)를 참조하십시오.

다음 단계에서는 Oracle GoldenGate와 함께 이 백업을 사용하여 소스를 오프라인으로 전환하거나 HANDLECOLLISIONS를 사용할 필요가 없는 정확한 초기 인스턴스화를 보장하는 방법에 대해 설명합니다.

이 단계에서는 관리 클라이언트를 사용하지만 Oracle GoldenGate Microservices 웹 인터페이스 및 REST API 서비스 끝점에서 동일한 단계를 수행할 수 있습니다.

이 단계를 시작하기 전에 Oracle GoldenGate에 대한 PostgreSQL 준비를 완료했는지 확인하십시오. 자세한 내용은 PostgreSQL 준비 섹션을 참조하십시오.

  1. 관리 클라이언트에서 배치에 접속:

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. DBLOGIN 명령을 사용하여 소스 PostgreSQL 데이터베이스에 연결합니다. 소스 데이터베이스에 대한 데이터베이스 접속을 설정하지 않은 경우 데이터베이스 접속 추가의 단계를 사용하거나 관리 클라이언트에서 ALTER CREDENTIALSTORE 명령을 사용하여 설정할 수 있습니다.

    DBLOGIN USERIDALIAS *alias*

    예를 들어, 별칭이 ggeast이면 명령은 다음과 같습니다.

    DBLOGIN USERIDALIAS ggeast
  3. 소스 데이터베이스에 체크포인트 테이블을 추가합니다.

    ADD CHECKPOINTTABLE *owner.table_name*

    예:

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. Extract 매개변수 파일을 생성하여 복제할 테이블을 캡처하고 REGISTER EXTRACT 명령을 사용하여 소스 PostgreSQL 데이터베이스에 새 Extract를 등록합니다. 단, Extract는 추가하지 마십시오.

    REGISTER EXTRACT *extract_name*

    예:

    REGISTER EXTRACT extcdc
  5. Extract 프로세스의 시작점을 생성하고 PostgreSQL 스냅샷을 배치하는 데 사용할 임시 복제 슬롯을 생성합니다. 이 작업은 CREATE_REPLICATION_SLOT 명령을 사용하여 수행할 수 있습니다. 다음은 임시 복제 슬롯을 구성하는 단계입니다.

    1. psql을 사용하여 replication 롤을 가진 사용자로 PostgreSQL 데이터베이스에 로그인합니다.

    2. replication=database 옵션을 사용합니다. 2단계에서 만든 사용자와 동일합니다.

      예:

      $ psql "dbname=pgsource replication=database user=ggeast"
      Password for user ggadmin: psql (16.3)
      
      Type "help" for help.
      pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT;
      
      slot_name | consistent_point | snapshot_name | output_plugin
      
      ----------+------------------+---------------------+---------------
      tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding
      (1 row)
    3. `snapshot_name` 및 `consistent_point`를 기록해 둡니다.
  6. 다음 예와 같이 pg_dump(또는 클러스터화된 데이터베이스의 경우 pg_dumpall)을 사용하여 스냅샷을 만듭니다.

    참고:

    이 명령은 실행하는 데 시간이 걸릴 수 있습니다. 세션을 닫을 경우 명령이 중지되지 않도록 하려면 nohup 옵션을 사용하여 이 명령을 실행하는 것이 좋습니다.

    $ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast -snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &

    pg_dump /pg_dumpall는 5c단계의 출력에서 수신된 snapshot_name를 사용합니다. 주어진 예에서 pg_dump 옵션은 전체 데이터베이스를 복제한다고 가정합니다. 그러나 데이터베이스의 하위 세트를 복제하는 경우 해당 객체만 덤프할 수 있습니다.

  7. ADD EXTRACT 명령을 사용하여 Extract를 추가합니다. Extract는 5c단계에서 추적되는 consistent_point에 배치되어야 합니다.

    ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*

    예:

    ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0

    이 LSN 값에 Extract를 배치하면 Extract가 덤프에 포함된 데이터를 캡처하지 않는지 확인합니다.

  8. ADD EXTTRAIL 명령을 사용하여 Extract 트레일을 추가합니다.

    ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*

    예:

    ADD EXTTRAIL *east/ea*, EXTRACT *extecdc*
  9. Extract를 시작합니다.

    START EXTRACT *extract_name*
  10. (선택 사항) 트레일 파일을 다른 서버로 전송하도록 배포 경로를 구성해야 하는 경우 ADD DISTPATH 명령을 사용합니다.

    ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*

    예:

    ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea*
  11. pg_restore 명령을 사용하여 대상 서버에서 데이터베이스를 복원합니다. pg_dump에서와 마찬가지로 세션이 손실된 경우 복원이 실패하므로 nohup 옵션을 사용하는 것이 좋습니다. 이 예에서는 다음 옵션이 사용되었습니다.

    $ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v
    latestdump.db &
  12. (선택 사항) 다른 배포에서 수신기 서비스에 대한 배포 경로를 만든 경우 관리 클라이언트 CONNECT 명령을 사용하여 대상 배포에 연결해야 할 수 있습니다.

    CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  13. DBLOGIN USERIDALIAS 명령을 사용하여 대상 PostgreSQL 데이터베이스에 연결합니다. 소스 데이터베이스에 대한 데이터베이스 접속을 설정하지 않은 경우 데이터베이스 접속 추가의 단계를 사용하여 설정하거나 관리 클라이언트에서 ALTER CREDENTIALSTORE 명령을 사용할 수 있습니다.

  14. Target Database에 체크포인트 테이블을 추가합니다.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. 데이터베이스 복원이 완료된 후 대상 데이터베이스에 변경 사항을 적용할 Replicat를 추가합니다.

    ADD REPLICAT *replicat_name*

    예:

    ADD REPLICAT repecdc
  16. 다음 예와 같이 복원이 완료된 후 Replicat를 시작합니다.

    START REPLICAT *repecdc*