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

Oracle GoldenGate 12c Release 3 신기능 총정리: Parallel Replicat(병렬 복제)

Parallel Replicat은 Oracle GoldenGate 12c Release 3(12.3.0.1)에서 새롭게 도입된 핵심 기능 중 하나입니다. 여러 개의 병렬 매퍼(mapper)와 스레드를 활용해 대량의 데이터를 환경에 빠르게 적재할 수 있도록 설계되었습니다.

Parallel Replicat이란?

Parallel Replicat은 Oracle 데이터베이스를 위한 확장성이 뛰어난 적용(apply) 엔진입니다. 트랜잭션 간 의존성을 고려하면서 적용 워크로드를 자동으로 병렬화합니다. 의존성 계산과 병렬 처리를 데이터베이스 외부에서 수행함으로써 Integrated Replicat이 제공하는 모든 장점을 그대로 누릴 수 있습니다.

Parallel Replicat은 트레일 파일(trail file)의 읽기와 매핑을 병렬화하고, 대용량 트랜잭션도 신속하게 적용할 수 있습니다. 의존성 계산, 매핑과 적용의 병렬화가 모두 데이터베이스 외부에서 이루어지므로, 필요하다면 이러한 작업을 별도의 서버로 오프로드(off-load)할 수도 있습니다. 이 과정에서도 트랜잭션 무결성은 그대로 유지됩니다.

또한 SPLIT_TRANS_RECS 파라미터를 사용하면 하나의 큰 트랜잭션을 논리적으로 작은 단위로 분할해 병렬로 적용할 수 있으며, 분할된 조각 간의 의존성 역시 그대로 관리·유지됩니다.

병렬 복제 아키텍처

다음 이미지는 Parallel Replicat의 아키텍처를 보여줍니다.

Oracle GoldenGate 12c Release 3 신기능 총정리: Parallel Replicat(병렬 복제)

이미지 출처: https://bit.ly/2wsPZVv

이 아키텍처는 단일 트레일 파일 읽기에서 시작하지만, 읽기(매퍼)와 쓰기(어플라이어/applier)를 위한 여러 개의 차선을 가진 넓은 도로를 제공한다고 이해하면 쉽습니다. Parallel Replicat은 기본 키(PK), 외래 키(FK), 고유 키(UK)와 같은 키 의존성을 기준으로 모든 트랜잭션의 순서를 보장합니다. 의존성 계산과 쓰기 작업이 데이터베이스 내부에서 수행되던 기존 Integrated Replicat과의 가장 큰 차이점입니다.

Parallel Replicat은 다음 두 가지 모드 중 하나로 구동되도록 설정할 수 있습니다.

  • 통합 모드(Integrated Mode): 이전 버전의 Integrated Replicat과 유사한 방식으로, 데이터베이스 내부 메커니즘을 사용해 프로세스를 관리하고 적용 작업을 수행합니다.
  • 비통합 모드(Non-integrated Mode): Replicat은 여전히 병렬로 실행되지만, 모든 처리 과정이 데이터베이스 외부에서 완전히 수행됩니다.

Parallel Replicat의 주요 특징

  • Integrated Replicat보다 최대 5배 빠른 성능을 제공합니다.
  • 단일 대용량 트랜잭션을 병렬로 적용하는 옵션을 제공합니다.
  • 하나의 대형 트랜잭션을 병렬화해 더 빠르게 처리하면서도, 병렬화 과정에서 트랜잭션 간 의존성을 그대로 반영합니다.
  • SPLIT_TRANS_RECS 파라미터로 트랜잭션 분할 크기(레코드 수 기준)를 지정해 처리량을 세밀하게 제어할 수 있습니다. 기본값은 100,000입니다.

기본 파라미터

Parallel Replicat 처리 시 다음 파라미터들을 활용할 수 있습니다.

MAP_PARALLELISM: 매퍼(mapper) 수를 설정합니다. 트레일 파일을 읽는 데 사용되는 스레드 수를 제어하며, 최솟값은 1, 최댓값은 100, 기본값은 2입니다.

APPLY_PARALLELISM: 어플라이어(applier) 수를 설정합니다. 변경 사항을 적용하기 위해 대상 데이터베이스에서 사용할 연결 수를 제어하며, 기본값은 4입니다.

MIN_APPLY_PARALLELISM / MAX_APPLY_PARALLELISM: 적용 병렬도(apply parallelism)는 자동 튜닝됩니다. 최솟값과 최댓값을 지정하면 Replicat이 해당 범위 안에서 병렬도를 자동으로 조정합니다. 기본값은 없으며, APPLY_PARALLELISM 파라미터와 동시에 사용해서는 안 됩니다.

SPLIT_TRANS_RECS: 대용량 트랜잭션을 지정한 크기의 조각으로 나누어 병렬로 적용합니다. 조각 간 의존성은 여전히 준수됩니다. 기본적으로 비활성화되어 있습니다.

adminclient로 비통합 Parallel Replicat 추가하기

다음 절차에 따라 adminclient를 사용해 비통합(non-integrated) Parallel Replicat을 추가할 수 있습니다.

  1. 다음 명령으로 adminclient를 실행합니다.
    $ cd $OGG_HOME/bin
    $ bin> ./adminclient
  2. 다음 명령으로 Service Manager 배포(deployment) 소스에 연결합니다.
    adminclient> connect https://<host>:<port> deployment <deployment> as <security user> password <password>
  3. 다음 명령으로 Parallel Replicat 프로세스를 생성합니다.
    adminclient> add replicat <group name>, integrated, parallel, exttrail <trail name> checkpointtable ggadmin.ggcheckpoint
  4. 다음 명령으로 파라미터 파일을 편집합니다.
    adminclient> edit params <replicat name>
  5. 다음 명령으로 Parallel Replicat 프로세스를 시작합니다.
    adminclient> start replicat <replicat name>

Replicat이 생성되면 관련 관리 서비스(administration service) 화면에 자동으로 표시됩니다. Replicat이 시작된 후에는 리더(매퍼)와 라이터(어플라이어)에 지정한 스레드 수가 리포트 파일에 기록됩니다.

샘플 파라미터 파일

다음은 Parallel Replicat의 샘플 파라미터 파일입니다.

replicat REP1
userid ggadmin, password ****
INSERTUPDATES
REPERROR(1, DISCARD)
MAP_PARALLELISM 2
MIN_APPLY_PARALLELISM 2
MAX_APPLY_PARALLELISM 8
SPLIT_TRANS_RECS 100
MAP *.*, TARGET *.*;

결론

GoldenGate는 서로 다른 종류의 데이터베이스나 플랫폼 간 이기종 복제(heterogeneous replication)를 지원하는 Oracle의 강력한 복제 도구입니다. Parallel Replicat의 등장으로 GoldenGate 기술은 한층 더 강력해졌습니다.

Parallel Replicat은 트랜잭션을 병렬로 적용해 시스템 성능을 끌어올리는 새로운 형태의 Replicat입니다. 의존성 계산과 병렬 처리를 데이터베이스 외부에서 수행하면서 Integrated Replicat의 모든 장점을 제공하고, 모든 트레일 파일을 병렬로 읽고 매핑하며, Oracle Database 11g(11.2.0.4) 이상 버전에서 대용량 트랜잭션을 빠르게 적용할 수 있는 능력을 제공합니다.