복제(replication)는 분산 DB 시스템을 구성하는 여러 데이버베이스에서 테이블과 같은 데이터베이스 개체를 복사하고 유지하는 프로세스다.

복제를 사용하는 이유

  • 가용성: 복제는 뛰어난 장애 대응을 갖추고 있음.
  • 퍼포먼스: 여러 데이터베이스 사용에 대해 균형을 맞추기 때문에 공유된 데이터에 대한 빠른 로컬 액세스를 제공한다.
  • 연결이 끊어진 컴퓨팅: 스냅샷을 사용하여 데이터베이스 서버에서 연결이 끊어져 있는 동안 데이터베이스 하위 집합에서 작업을 할 수 있다.
  • 네트워크 부하 감소: 복제를 사용하여 여러 지역 위치의 데이터를 배포할 수 있다. 때문에 하나의 서버에 접속하는 것이 아닌 다양한 지역 서버에 액세스 할 수 있다.
  • 대량 배포: 배포 템플릿을 이용하여 여러 스냅샷 환경을 신속하게 만들 수 있다.

스냅샷(Snapshot): 특정 시간에 저장 장치의 상태를 나타내며 데이터 저장에 실패한 경우 백업 기능으로 복원한다.

복제 가능 개체

  • 테이블
  • 인덱스
  • 레이아웃
  • 패키지와 패키지바디
  • 트리거
  • 시퀀스
  • 시노님(Synonyms)
  • 프로시저와 함수

복제 그룹

오라클은 복제 그룹을 사용해서 복제를 관리한다. 복제 그룹은 논리적으로 관계지어진 복제 개체들의 집합이다.

복제 그룹 내에서 관련 데이터베이스 개체를 구성하면 많은 개체를 함께 관리하는 것이 쉽다. 일반적으로 복제 그룹을 만들고 사용하여 특정 데이터베이스 응용 프로그램에 필요한 스키마 개체를 구성한다. 그러나 복제 그룹에서 여러 스키마의 개체가 포함될 수 있고 단일 스키마에서 여러 복제 그룹의 개체가 있을 수 있다.

복제 사이트

복제 그룹은 여러 복제 사이트에 존재할 수 있다. 복제 환경은 마스터 사이트 및 스냅샷 사이트라는 두 가지 유형의 사이트를 지원한다

  • 마스터 사이트의 복제 그룹을 마스터 그룹. 스냅샷 사이트의 복제 그룹을 구체적으로 스냅샷 그룹으로 지칭한다. 복제 그룹의 마스터 정의 사이트는 복제 그룹과 그룹의 개체를 관리하는 제어 센터 역할을 하는 마스터 사이트다.
  • 마스터 사이트는 복제 그룹의 모든 개체의 전체 복사본을 유지 관리하고 스냅샷 사이트의 스냅숏에는 마스터 그룹 내의 테이블 데이터 전부 또는 하위 집합이 포함될 수 있다. 예를들어 마스터 그룹에 EMP 및 DEPT 테이블이 포함된 경우에 마스터 사이트는 EMP 및 DEPT 복사본 전체를 유지해야한다. 스냅샷 사이트의 경우는 EMP 테이블의 스냅샷만 포함될 수 있고 다른 스냅샷 사이트에는 EMP와 DEPT 테이블의 스냅샷이 포함될 수 있다.
  • 멀티 마스터 복제 환경의 모든 마스터 사이트는 복제 그룹의 데이터나 스키마 변경 내용을 지속적으로 전달한다. 스냅샷 사이트에는 특정 시점의 테이블 데이터의 이미지 또는 스냅샷이 포함된다. 일반적으로 스냅샷은 마스터 사이트와 동기화되도록 주기적으로 리프래쉬 된다. 리프레쉬 그룹이라는 스냅샷을 만들 수 있는데 이 그룹은 하나 이상의 스냅샷 그룹에 속할 수 있고 동시에 리프레쉬 그룹의 모든 스냅샷은 데이터가 트랜잭션적으로 동일한 시점과 일치하게한다.

복제 환경 유형

  • 멀티 마스터 복제
  • 스냅샷 복제
  • 멀티 마스터 및 스냅샷 하이브리드 구성

멀티 마스터 복제

Description of Figure 2-2 follows

img

다중 마스터 복제(Peer-to-Peer 또는 n-way 복제라고한다)는 여러 사이트가 동일한 피어로 작동하여 복제된 데이터베이스 개체 그룹을 관리할 수 있게한다. 멀티마스터 환경에서 마스터 사이트로 운영되는 오라클 데이터베이스 서버는 모든 테이블 복제본의 데이터를 통합하고 글로벌 트랜잭션 일관성 및 데이터 무결성을 보장하기 위해 자동으로 작동한다.

비동기 복제는 멀티마스터 복제를 구현하는 가장 일반적인 방법이다. 다른 방법으로는 동기식 복제와 절차적 복제가 있다. 비동기 복제를 사용하면 변경사항이 발생한 마스터 사이트의 트랜잭션 대기열에 테이블 업데이트가 저장된다. 이런 변경을 지연된 트랜잭션(Deferred Transaction)이라 한다. 지연된 트랜잭션은 다른 마스터 사이트로 정기적으로 푸시(전파)된다. 간격을 두고 시간량을 조절할 수 있다.

비동기 복제를 사용하는 것은 동시에 두 개의 다른 마스터 사이트에서 동일한 행 값이 업데이트될 수 있기 때문에 충돌이 일어날 수 있다. Oracle은 충돌을 해결하기 위해 내장된 메커니즘을 제공하고있다.

중지 마스터 그룹

마스터 그룹에 대한 모든 복제 작업을 중지하는 것을 그룹 중지라고 한다. 마스터 그룹이 중지되면 사용자는 마스터 그룹의 개체에 대해 DML문을 수행할 수 없다.

스냅샷 복제

스냅샷에는 단일 시점에서 대상 마스터 테이블의 전체 또는 부분 복사본이 있다. 스냅샷은 읽기전용 일수도 업데이트 가능할 수도 있다.

스냅샷의 이점은 다음과 같다

  • 로컬 액세스를 활성하하여 응답 시간과 가용성을 향상시킬 수 있다.
  • 사용자가 로컬 스냅샷을 대신 사용할 수 있으므로 마스터 사이트에서 쿼리를 offload한다.
  • 대상 마스터 테이블의 데이터 세트 중 선택한 부분 집합만 복제할 수 있도록 하여 데이터 보안을 강화할 수 있다.

읽기 전용 스냅샷

img

  • 업데이트 될 수 없어 충돌의 가능성이 없다
  • 복잡한 스냅샷을 지원한다. 예를 들어 CONNECT BY절이 포함된 스냅샷이 있다.

업데이트 가능한 스냅샷

img

사용자 마스터 테이블에 삽입, 업데이트, 삭제가 가능한 가 업데이트 가능한 스냅샷을 만들 수 있다.

업데이트 가능한 스냅샷엔 다음과 같은 속성이 있다.

  • 스냅샷은 단일 테이블 기반으로 한다.
  • 스냅샷은 점진적으로 새로 고칠 수 있다.
  • 오라클은 스냅샷의 변경 사항을 원격 마스터 테이블로 전파한다. 마스터 테이블에 대한 업데이트는 다른 모든 마스터 사이트에 계단식으로 전달될 수 있다.
  • 오라클은 읽기 전용 스냅샷을 리프레쉬 하는 것과 동일한 방법으로 업데이트 가능한 스냅샷을 리프레쉬 할 수 있다.

이러한 것엔 다음과 같은 이점이 있다

  • 마스터 사이트에서 연결이 끊어진 경우에도 사용자가 로컬 복제 데이터 세트 쿼리를 날리고 업데이트 할 수 있도록 허용한다.
  • 멀티마스터 복제보다 적은 리소스로 데이터 업데이트를 지원한다. 예를 들어 스냅샷이 Oracle8i Lite 데이터베이스에 있을 수 있기 때문에 스냅샷 클라이언트의 디스크 공간 및 메모리 요구 사항은 Oracle8i 서버의 요구 사항보다 적을 수 있다.

스냅샷 새로고침(Refresh)

스냅샷이 마스터 테이블과 일치하도록 하려면 주기적으로 새로고침이 발생해야 한다. 오라클은 다음과 같은 세가지 방법으로 스냅샷을 새로 고칠 수 있다.

  • Fast Refresh: 스냅샷 로그를 사용하여 마지막 새로 고침 이후 변경된 행만 업데이트한다.
  • Complete Refresh: 전체 스냅샷을 업데이트 한다.
  • Force Refresh: 가능하면 빠른 새로고침을 수행한다. 빠른 새로 고침이 불가능한 경우 강제 새로고침은 전체 새로고침을 수행한다.

스냅샷 로그

스냅샷 로그는 모든 DML의 변경사항을 마스터 테이블에 기록하는 테이블이다. 스냅샷 로그는 단일 마스터 테이블과 연결되어 있으며, 마스터 테이블에는 마스터에서 새로 고치는 스냅샷 수에 관계없이 하나의 스냅샷 로그만 있다.

배포 템플릿

배포 템플릿은 많은 원격 스냅샷 사이트를 배포하고 유지하는 작업을 단순화한다. 배포 템플릿을 사용하면 마스터 사이트에서 스냅샷 정의 컬렉션을 정의할 수 있다. 정의에서 매개변수를 사용하여 개별 사용자 또는 사용자 유형에 맞게 스냅샷을 사용자 지정할 수 있다.

멀티마스터 및 스냅샷 하이브리드 구성

img

멀티마스터 복제와 스냅샷을 하이브리드로 구성하여 다양한 애플리케이션 요구사항 충족시키고 각 마스터에 대해 원하는 수의 마스터 사이트와 여러 개의 스냅샷 사이트를 가질 수 있다.

두 마스터 간의 멀티마스터(n-way) 복제는 두 지리적 지역을 지원하는 데이터베이스 간의 전체 테이블 복제를 지원할 수 있다.

스냅샷과 복제된 마스터 간의 주요 차이점은 다음과 같다

  • 복제된 마스터에는 복제되는 전체 테이블에 대한 데이터가 포함되어야 하는 반면 스냅샷은 마스터 테이블 데이터의 하위 세트를 복제할 수 있다.
  • 스냅샷 새로 고침은 보다 효율적이고 배치 지향적인 작업에서 여러 트랜잭션의 변경사항을 전파하지만 빈도는 적다.
  • 마스터 사이트는 동일한 데이터의 여러 복사본에 대한 변경으로 발생하는 충돌을 감지하고 해결한다.

복제 환경 관리도구

Oracle의 Replication Manager는 환경을 관리하는데 도움이 되는 GUI 인터페이스를 제공하고, 복제 관리 API는 복제 관리를 위한 맞춤형 스크립트를 구축하기 위한 API(응용 프로그래밍 인터페이스)를 제공한다.

그 외

RAC와 어떤차이

  • 로드밸런싱: Replication은 여러 데이터베이스를 통해 읽기 로드 밸런싱을 제공하고, Oracle RAC는 여러 인스턴스를 통해 읽기 및 쓰기 로드 밸런싱을 제공한다. 각 쓰기 작업은 각 복제 사이트에서 수행되어야 하므로, 복제는 쓰기 로드 밸런싱을 제공하지 않는다.
  • 생존: 복제는 장애에 대하여 생존성 보호를 제공한다. Oracle RAC는 클러스터 또는 기타 대규모 병렬 시스템에서 작동하며 동일한 물리적 환경에 있으므로 복제가 보호할 수 있는 물리적 문제로부터 보호할 수 없다.
  • 상호운용성: Advanced Replication은 오라클을 실행하는 여러플랫폼과 운영 체제간의 데이터를 복제할 수 있다. 오라클 RAC 환경의 인스턴스는 동일한 플랫폼에서 실행되어야한다.

원문

https://docs.oracle.com/cd/A87860_01/doc/server.817/a76959/repover.htm