Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이 글에서는 Oracle® GoldenGate®의 기본 개념과 핵심 기능을 살펴봅니다. GoldenGate는 데이터베이스 아키텍처와 분리(decoupled)되어 있기 때문에 이기종(heterogeneous) 및 동종(homogeneous) 환경 모두에서 트랜잭션 변경 데이터를 실시간으로 캡처하고 통합할 수 있습니다.

Oracle GoldenGate란 무엇인가?

Oracle GoldenGate는 한 데이터베이스에서 다른 데이터베이스로 데이터를 복제(replicate), 필터링(filter), 변환(transform)할 수 있게 해주는 소프트웨어 제품입니다.

Oracle 데이터베이스 간의 복제는 물론, 지원되는 다양한 이기종 데이터베이스 간의 데이터 복제도 가능합니다.

GoldenGate를 사용해야 하는 이유

GoldenGate를 사용하면 좋은 대표적인 이유는 다음과 같습니다.

  • 실시간 데이터 이동: 지연 시간(latency)을 최소화하며 데이터를 실시간으로 전송합니다.
  • 커밋된 트랜잭션만 전송: 일관성(consistency)을 보장하고 성능을 향상시킵니다.
  • 폭넓은 호환성: 다양한 버전과 릴리스의 Oracle 데이터베이스는 물론, 여러 운영체제에서 실행되는 다양한 이기종 데이터베이스도 지원합니다.
  • 간단한 아키텍처: 구조가 단순하여 설정과 구성이 쉽습니다.
  • 높은 성능: 원본 데이터베이스와 인프라에 최소한의 부담만 주면서 뛰어난 성능을 제공합니다.

GoldenGate가 지원하는 비즈니스 요구 사항

GoldenGate는 다음과 같은 비즈니스 요구 사항을 충족하는 데 활용할 수 있습니다.

  • 비즈니스 연속성(business continuity) 및 고가용성(high availability)
  • 무중단(zero downtime) 초기 로딩, 데이터베이스 마이그레이션 및 업그레이드
  • 데이터 통합(data integration)
  • 실시간 리포팅(live reporting)

GoldenGate 활용 방식

GoldenGate는 단방향(unidirectional) 아키텍처와 같은 단순한 구성부터 피어투피어(peer-to-peer)와 같은 복잡한 구성까지 다양한 아키텍처로 설정할 수 있습니다. 다음 이미지에서 GoldenGate가 지원하는 다양한 토폴로지(topology)를 확인할 수 있습니다.

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이미지 출처: https://www.vitalsofttech.com/goldengate-replication-topologies/

GoldenGate 논리 아키텍처

다음 이미지는 GoldenGate 아키텍처를 구성하는 컴포넌트(프로세스)들을 보여줍니다. 각 구성 요소에 대해 자세히 설명하겠습니다.

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이미지 출처: https://www.vitalsofttech.com/wp-content/uploads/2013/06/GoldenGate-Replication.jpg

Manager(매니저)

Manager는 다른 GoldenGate 프로세스들을 시작하는 프로세스입니다. 구성된 소스 시스템과 타겟 시스템 양쪽에서 반드시 실행되어야 하며, 나머지 모든 GoldenGate 프로세스를 시작하는 역할을 담당합니다. 또한 오래된 trail 파일이나 extract 파일을 삭제(purge)하여 디스크 공간을 관리하기도 합니다. GoldenGate 설치마다 하나의 Manager 프로세스가 필요합니다.

Extract(익스트랙트)

Extract 프로세스는 데이터 추출을 담당하며, GoldenGate에서는 이를 데이터 캡처(data capture)라고 부릅니다. Extract는 소스 마이닝(mining) 데이터베이스에서 실행되도록 구성됩니다.

Extract는 Oracle redo 로그에서 커밋된 DML(Data Modeling Language) 트랜잭션과 DDL(Data Definition Language)을 캡처하는 역할을 하며, 캡처한 데이터 변경 사항을 trail 파일 또는 extract 파일에 기록합니다.

Trail(트레일)

Trail은 GoldenGate가 캡처한 변경 데이터를 저장하는 디스크 상의 일련의 파일입니다. 데이터베이스 변경 사항의 지속적인 추출과 복제를 지원하며, 운영체제 수준에서 플랫폼 독립적인(platform-independent) 바이너리 파일입니다.

Replicat(레플리케이트)

Replicat는 타겟 데이터베이스로 데이터를 전달하는 프로세스입니다. 타겟 데이터베이스의 trail 파일을 읽어 DML 또는 DDL 작업을 재구성(reconstruct)한 후, 이를 타겟 데이터베이스에 적용합니다.

Pump(펌프)

Pump 프로세스 역시 Extract 프로세스의 일종으로, GoldenGate 구성에서 선택 사항(optional)입니다. 이 프로세스는 데이터가 담긴 trail 파일을 타겟 시스템으로 복사하는 역할을 합니다.

Checkpoint(체크포인트)

Extract pump와 Replicat 프로세스는 체크포인트를 사용해 각자의 진행 상황을 추적합니다. 이 메커니즘은 trail 파일에서 읽었거나 적용한 데이터 변경 위치를 표시합니다. 덕분에 장애 발생 후 프로세스가 데이터 손실 없이 복구하거나 재시작 지점을 파악해야 할 때 매우 유용합니다.

Collector(컬렉터)

Collector 프로세스는 타겟 시스템에서 실행되며, 소스 데이터베이스의 데이터 변경 사항을 RMTTRAIL이라 불리는 타겟 trail 파일에 기록합니다. RMTTRAIL에 복사하기 전에 Collector는 파일을 재조립(reassemble)합니다.

GoldenGate 캡처 모드

Oracle GoldenGate는 다음 두 가지 유형의 캡처 방식을 지원합니다.

  • 클래식 캡처(Classic capture)
  • 통합 캡처(Integrated capture)

클래식 캡처 모드(Classic Capture Mode)

클래식 캡처는 GoldenGate의 최초 캡처 메커니즘으로, 온라인 redo 로그와 가능한 경우 아카이브 redo 로그에서 직접 데이터를 읽습니다. 필요에 따라 추가 데이터를 데이터베이스 파일에서 가져올(fetch) 수도 있습니다.

통합 캡처 모드(Integrated Capture Mode)

통합 캡처(IC, Integrated Capture)는 Oracle GoldenGate 버전 11.2.1에서 도입되었으며, 처음에는 Integrated Extract 11.2.x용 11.2.0.3 데이터베이스 전용 번들 패치(MOS Note 1411356.1)가 적용된 Oracle 11.2.0.3에서 사용할 수 있었습니다. IC는 DataGuard logical standby나 Oracle Streams와 유사하게, 소스 시스템 또는 다운스트림(downstream) Oracle 데이터베이스에서 로그마이닝 서버(log-mining server)를 사용합니다.

IC는 새로운 형태의 extract 프로세스로, 소스 데이터베이스 내부로 이동했습니다. 전통적인 클래식 extract 프로세스는 실제 데이터베이스 도메인 외부의 redo 로그에서 작동하는 반면, IC에서는 서버 로그마이너(server log miner) 프로세스가 시작되어 모든 DML 데이터와 DDL 문(create, alter, drop 등)을 추출하고 LCR(Logical Change Record, 논리 변경 레코드)을 생성합니다. 이러한 레코드들은 GoldenGate 메모리 프로세스에 전달되어 로컬 trail 파일에 기록됩니다.

GoldenGate Replicat 모드

버전 12.1이 출시되기 전에는 Replicat가 타겟 데이터베이스에 트랜잭션을 순차적으로(serially) 적용했습니다. 병렬 처리(parallelism)를 위해서는 테이블을 여러 Replicat로 분할해야만 더 빠른 데이터 적용과 지연 감소를 달성할 수 있었습니다. 이 방식의 단점은 여러 Replicat와 trail 파일을 수동으로 구성해야 한다는 점, 그리고 외래 키(foreign key) 관계가 있는 테이블은 Replicat 간에 분할할 수 없다는 제약이었습니다.

새롭게 도입된 코디네이티드(coordinated) Replicat와 통합(integrated) Replicat 모드를 사용하면, 테이블을 여러 Replicat로 수동 분할하지 않고도 타겟 데이터베이스에서 트랜잭션을 병렬로 적용할 수 있습니다.

아래에서 각 Replicat 모드를 자세히 살펴보겠습니다.

클래식 Replicat(Classic Replicat)

클래식 Replicat에서는 타겟 데이터베이스의 체크포인트가 어떤 트랜잭션이 커밋되었고 어떤 트랜잭션이 커밋되지 않았는지 시스템에 알려줍니다. 이것이 트랜잭션 복제의 핵심 요소입니다.

클래식 Replicat의 특징은 다음과 같습니다.

  • SQL을 순차적으로(serially) 적용합니다.
  • 데이터베이스 버전이 11.2.0.4 미만인 경우 반드시 이 모드를 사용해야 합니다.

다음 이미지는 클래식 Replicat를 보여줍니다.

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이미지 출처: https://docs.oracle.com/GoldenGate/1212/gg-winux/GIORA/img/integratedapply.jpg

코디네이티드 Replicat(Coordinated Replicat)

구성된 Replicat를 코디네이터(coordinator)라고 부릅니다. 이 프로세스는 지정된 스레드(thread) 수에 따라 추가 Replicat를 시작합니다. Replicat 이름은 최대 5자로 제한되며, 스레드화된 Replicat에는 3자리 숫자가 붙은 이름이 할당됩니다(예: RGGMA, RGGMA001, RGGMA002 등). 코디네이터는 스레드에 SQL을 전송하며, 스레드들은 커밋 순서를 유지하면서 병렬로 SQL을 적용할 수 있습니다.

다음 이미지는 코디네이티드 Replicat를 보여줍니다.

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이미지 출처: https://www.red-gate.com/simple-talk/sql/oracle/oracle-GoldenGate-12c-new-features-part-2/

통합 Replicat(Integrated Replicat)

통합 Replicat의 특징은 다음과 같습니다.

  • 소스 데이터베이스의 DML 트랜잭션을 나타내는 LCR을 커밋 순서대로 생성합니다. DDL은 Replicat가 직접 적용합니다. 이 트랜잭션들은 병렬로 적용될 수 있습니다.
  • 경량 스트리밍(lightweight streaming) 인터페이스를 통해 타겟 데이터베이스의 백그라운드 프로세스인 데이터베이스 인바운드 서버(inbound server)에 연결합니다.
  • LCR을 인바운드 서버로 전송하며, 인바운드 서버가 타겟 데이터베이스에 데이터를 적용합니다.

다음 이미지는 통합 Replicat를 보여줍니다.

Oracle GoldenGate 기본 개념 완벽 가이드: 아키텍처부터 캡처 및 Replicat 모드까지

이미지 출처: https://docs.oracle.com/GoldenGate/1212/gg-winux/GIORA/process_mode.htm#GIORA212

결론

이 글에서는 GoldenGate를 어떻게 그리고 왜 사용해야 하는지 알아보고, 아키텍처와 구성 요소에 대해 살펴보았습니다. 또한 이 도구에 포함된 캡처 모드와 Replicat 모드에 대해서도 자세히 설명했습니다.

궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨주세요.