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 준비 섹션을 참조하십시오.
-
관리 클라이언트에서 배치에 접속:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
DBLOGIN명령을 사용하여 소스 PostgreSQL 데이터베이스에 연결합니다. 소스 데이터베이스에 대한 데이터베이스 접속을 설정하지 않은 경우 데이터베이스 접속 추가의 단계를 사용하거나 관리 클라이언트에서ALTER CREDENTIALSTORE명령을 사용하여 설정할 수 있습니다.DBLOGIN USERIDALIAS *alias*예를 들어, 별칭이 ggeast이면 명령은 다음과 같습니다.
DBLOGIN USERIDALIAS ggeast -
소스 데이터베이스에 체크포인트 테이블을 추가합니다.
ADD CHECKPOINTTABLE *owner.table_name*예:
ADD CHECKPOINTTABLE ggs.checkpoint -
Extract 매개변수 파일을 생성하여 복제할 테이블을 캡처하고
REGISTER EXTRACT명령을 사용하여 소스 PostgreSQL 데이터베이스에 새 Extract를 등록합니다. 단, Extract는 추가하지 마십시오.REGISTER EXTRACT *extract_name*예:
REGISTER EXTRACT extcdc -
Extract 프로세스의 시작점을 생성하고 PostgreSQL 스냅샷을 배치하는 데 사용할 임시 복제 슬롯을 생성합니다. 이 작업은
CREATE_REPLICATION_SLOT명령을 사용하여 수행할 수 있습니다. 다음은 임시 복제 슬롯을 구성하는 단계입니다.-
psql을 사용하여 replication 롤을 가진 사용자로 PostgreSQL 데이터베이스에 로그인합니다. -
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) -
`snapshot_name` 및 `consistent_point`를 기록해 둡니다.
-
-
다음 예와 같이
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옵션은 전체 데이터베이스를 복제한다고 가정합니다. 그러나 데이터베이스의 하위 세트를 복제하는 경우 해당 객체만 덤프할 수 있습니다. -
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가 덤프에 포함된 데이터를 캡처하지 않는지 확인합니다.
-
ADD EXTTRAIL명령을 사용하여 Extract 트레일을 추가합니다.ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*예:
ADD EXTTRAIL *east/ea*, EXTRACT *extecdc* -
Extract를 시작합니다.
START EXTRACT *extract_name* -
(선택 사항) 트레일 파일을 다른 서버로 전송하도록 배포 경로를 구성해야 하는 경우
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* -
pg_restore명령을 사용하여 대상 서버에서 데이터베이스를 복원합니다.pg_dump에서와 마찬가지로 세션이 손실된 경우 복원이 실패하므로nohup옵션을 사용하는 것이 좋습니다. 이 예에서는 다음 옵션이 사용되었습니다.$ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v latestdump.db & -
(선택 사항) 다른 배포에서 수신기 서비스에 대한 배포 경로를 만든 경우 관리 클라이언트
CONNECT명령을 사용하여 대상 배포에 연결해야 할 수 있습니다.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
DBLOGIN USERIDALIAS명령을 사용하여 대상 PostgreSQL 데이터베이스에 연결합니다. 소스 데이터베이스에 대한 데이터베이스 접속을 설정하지 않은 경우 데이터베이스 접속 추가의 단계를 사용하여 설정하거나 관리 클라이언트에서ALTER CREDENTIALSTORE명령을 사용할 수 있습니다. -
Target Database에 체크포인트 테이블을 추가합니다.
ADD CHECKPOINTTABLE ggs.chkpoint -
데이터베이스 복원이 완료된 후 대상 데이터베이스에 변경 사항을 적용할 Replicat를 추가합니다.
ADD REPLICAT *replicat_name*예:
ADD REPLICAT repecdc -
다음 예와 같이 복원이 완료된 후 Replicat를 시작합니다.
START REPLICAT *repecdc*