의견.png

"레플리케이션"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(레플리케이션 모드)
(특징)
10번째 줄: 10번째 줄:
 
보통 리더 기반 복제의 경우 완전히 비동기식으로 구성한다. 리더가 잘못돼서 복구할 수 없는 경우 데이터가 유실될 수 있다. 하지만 모든 팔로워가 잘못되더라도 리더는 쓰기 처리를 계속할 수 있다.
 
보통 리더 기반 복제의 경우 완전히 비동기식으로 구성한다. 리더가 잘못돼서 복구할 수 없는 경우 데이터가 유실될 수 있다. 하지만 모든 팔로워가 잘못되더라도 리더는 쓰기 처리를 계속할 수 있다.
  
===레플리케이션 모드===
+
===이중화 서버 선정====
레플리케이션을 위해 LAZY 와 EAGER 모드를 지원하고 있다. 레플리케이션 모드 별로 성능, 레플리케이션 밀림현상, 데이터 일관성 측면에서 아래 표에서 보는 것처럼 서로 다른 특징을 갖는다.
+
이중화를 하기 위해서는 데이터베이스 서버들의 데이터베이스 캐릭터 셋과 내셔널 캐릭터 셋이 서로 동일해야 한다. 데이터베이스 캐릭터 셋은 V$NLS_PARAMETERS 성능 뷰를 이용하여 확인할 수 있다.
 +
 +
===이중화 대상 선정===
 +
이중화 대상을 선정하는 기준으로 객체의 '이름'을 사용한다. 이중화를 생성할 때에는 이중화 대상이 되는 테이블 이름과 그 소유자 이름을 직접 지정해야 한다. 파티션드 테이블의 특정 파티션만 복제하려면, 파티션 이름과 파티션이 속한 테이블 이름 및 그 소유자 이름을 직접 지정해야 한다. 또한 이중화를 수행시 지역 서버와 원격 서버에서 이름이 같은 컬럼만 복제된다. 이중화 대상 컬럼은 V$REPRECEIVER_COLUMN 성능 뷰를 통해 확인이 가능하다.
 +
 
 +
===이중화 모드===
 +
이중화를 위해 LAZY 와 EAGER 모드를 지원하고 있다. 이중화 모드 별로 성능, 이중화 밀림현상, 데이터 일관성 측면에서 아래 표에서 보는 것처럼 서로 다른 특징을 갖는다.
 
:{|class=wikitable width=600
 
:{|class=wikitable width=600
 
|+<big>'''이중화 모드'''</big>
 
|+<big>'''이중화 모드'''</big>

2020년 7월 29일 (수) 15:27 판

레플리케이션(Replication)은 서비스를 수행하고 있는 서버의 데이터에 대한 백업 데이터베이스의 최신 데이터 유지와, 서버의 예기치 않은 종료가 발생했을 때 대체 서버를 이용하여 서비스를 재개할 수 있는 무정지 운영 환경을 제공하는 것을 목적으로 한다.

개요

레플리케이션은 데이터 저장과 백업하는 방법과 관련이 있는 데이터를 호스트 컴퓨터에서 다른 컴퓨터로 복사하는 것인데 이때 다른 컴퓨터가 반드시 떨어진 지역에 있어야 하는 것은 아니다. 컴퓨터 네트워크 상태에서는 데이터 저장을 할 수 있게 하는데 로컬 데이터 물리적 기억 장치와는 완전하게 구분된다. 레플리케이션은 유명한 데이터베이스 관리 시스템 (RDBMS, Relational DataBase Management Systems)에서 추가적으로 제공하거나 여러 대의 데이터베이스 서버의 부하를 맞추어 줄 용도로 제공한다. 레플리케이션은 남아 있는 리소스와 관련이 있는데 소프트웨어 요소나 하드웨어 부품이 말해 주며, 이는 신뢰성, 허용 오차, 그리고 성능을 개선한다. 전형적으로 '레플리케이션 인 스페이스'(replication in space)와 관련이 있는데 이것은 동일한 데이터를 다수의 저장 장치에 저장하거나 동일한 계산 업무를 다수 장치에서 수행하는 것이다. 또한 '레플리케이션 인 타임'(replication in time)는 컴퓨터 계산 수행이 반복적으로 한 개의 장치에서 일어나는 것이다.[1]

특징

  • 동기식 복제와 비동기식 복제 : 복제는 동기 또는 비동기적으로 이루어진다. 동기식 복제는 리더가 해당 팔로워가 쓰기를 수신했는지 확인해줄 때까지 기다리는 방식이다. 아래의 그림에서는 Follwer1의 복제는 동기식으로 동작한다.
R1280x0.png

동기식 복제의 장점은 팔로워가 리더와 일관성 있게 최신 데이터 복사본을 갖는 것을 보장한다. 동기식의 경우 리더가 동작하지 않아도 데이터는 팔로워에서 계속 사용할 수 있다. 그러나 동기적으로 동작하는 팔로워가 응답하지 않는다면 쓰기는 처리될 수 없는 단점이 존재한다. 즉, 리더는 해당 팔로워가 다시 동작할 때까지 기다려야 하는 문제가 발생한다. 그렇기 때문에 모든 팔로워가 동기식으로 복제하는 방법은 사용되지 않는다. 현실적으로 데이터베이스에서 동기식 복제를 사용하려면 팔로워 하나는 동기식 다른 팔로워는 비동기식 복제를 하도록 사용한다. 보통 리더 기반 복제의 경우 완전히 비동기식으로 구성한다. 리더가 잘못돼서 복구할 수 없는 경우 데이터가 유실될 수 있다. 하지만 모든 팔로워가 잘못되더라도 리더는 쓰기 처리를 계속할 수 있다.

이중화 서버 선정=

이중화를 하기 위해서는 데이터베이스 서버들의 데이터베이스 캐릭터 셋과 내셔널 캐릭터 셋이 서로 동일해야 한다. 데이터베이스 캐릭터 셋은 V$NLS_PARAMETERS 성능 뷰를 이용하여 확인할 수 있다.

이중화 대상 선정

이중화 대상을 선정하는 기준으로 객체의 '이름'을 사용한다. 이중화를 생성할 때에는 이중화 대상이 되는 테이블 이름과 그 소유자 이름을 직접 지정해야 한다. 파티션드 테이블의 특정 파티션만 복제하려면, 파티션 이름과 파티션이 속한 테이블 이름 및 그 소유자 이름을 직접 지정해야 한다. 또한 이중화를 수행시 지역 서버와 원격 서버에서 이름이 같은 컬럼만 복제된다. 이중화 대상 컬럼은 V$REPRECEIVER_COLUMN 성능 뷰를 통해 확인이 가능하다.

이중화 모드

이중화를 위해 LAZY 와 EAGER 모드를 지원하고 있다. 이중화 모드 별로 성능, 이중화 밀림현상, 데이터 일관성 측면에서 아래 표에서 보는 것처럼 서로 다른 특징을 갖는다.

이중화 모드
모드 성능 이중화 밀림 현상 데이터 일관성
LAZY 높음 발생 가능 낮음
EAGER 중간 발생 불가능 높음
  • LAZY 모드
LAZY 모드는 지역 서버에서 이중화 대상 테이블에 대한 DML 을 수행하는 주 트랜잭션이 발생하면, 이중화의 송신 쓰레드가 주 트랜잭션이 기록한 로그를 수집하여 XLog 로 가공하여 전송한다. 그리고 원격 서버의 수신 쓰레드는 XLog 를 수신하여 복제 트랜잭션으로 DB 에 반영하는 형태이다. 이처럼 서비스 트랜잭션 (주 트랜잭션)과 복제 트랜잭션이 완전히 별개로 동작하기 때문에 트랜잭션의 영향을 받지 않아 지역 서버의 성능이 우수하다. 그러나 송신 쓰레드가 언제나 주 트랜잭션을 따라가는 입장이기 때문에, 매우 바쁜(busy) 사이트 환경에서는 이중화가 밀리는 현상이 발생할 수 있다.
  • EAGER 모드
EAGER 모드는 지역 서버에서 발생한 주 트랜잭션과 관련된 모든 로그가 원격 서버에서도 정상적으로 반영된 것을 확인한 후에 지역 서버에서 커밋을 수행하고, 동시에 원격 서버에서도 복제 트랜잭션의 커밋을 수행하는 트랜잭션 동기화1 방식이다. EAGER 모드의 이점은 트랜잭션을 동기화 하기 때문에 트랜잭션을 병렬로 복제할 수 있다는 점이다. 그러므로, EAGER 모드로 이중화를 수행할 때는 다수의 송신 쓰레드가 병렬로 복제를 수행한다. 병렬 쓰레드의 개수는 REPLICATION_EAGER_PARALLEL_FACTOR 프로퍼티로 설정할 수 있다. 트랜잭션 동기화로 인해 성능이 조금 떨어지는 단점이 있으나, 트랜잭션 발생이 매우 빈번한 사이트에서도 LAZY 모드처럼 이중화가 밀리는 현상이 발생하지는 않는다.

부가 기능

Altibase 에서 제공하는 이중화 부가 기능은 아래와 같다. 부가 기능을 사용하는 방법 및 제약사항 등의 자세한 설명은 이중화 부가기능에서 설명한다.

  • 복구 옵션 : 이중화를 진행중에 서버가 비정상 종료되면 서버간 데이터가 불일치하는 것을 방지하기 위해 이중화를 이용한 데이터 복구 기능
  • 오프라인 옵션 : Active-Standby 이중화 환경에서 Active 서버에 장애가 발생하면, 오프라인 옵션을 사용하여 미전송된 로그를 Standby 서버에 반영할 수 있는 기능
  • 이중화 갭 해소 옵션 : 이중화를 수행할 때 발생하는 이중화 갭을 해소하는 기능
  • 병렬 적용자 옵션 : 송신자로부터 받은 XLog 를 수신자가 병렬로 적용할 수 있는 기능
  • 이중화 트랜잭션 그룹 옵션 : 이중화 갭이 발생하였을 때 전송해야 할 복수의 트랜잭션들을 하나의 트랜잭션처럼 그룹화하여 수신 쓰레드에 로그를 전송하는 기능

주의사항

이중화할 수 있는 객체는 테이블 또는 파티션이며, 양쪽 서버에서 대응하는 이중화 대상 아이템은 서로 종류가 동일해야 한다. 즉 테이블은 테이블로, 파티션은 파티션으로 이중화할 수 있지만, 서로 교차되는 이중화는 지원하지 않는다. 이중화 객체에서 이중화 대상 테이블 또는 파티션을 삭제할 때에는 추가할 때 지정한 그대로 명시해야 한다. 예를 들어, 한 파티션드 테이블의 모든 파티션을 이중화 대상으로 추가했어도, 파티션드 테이블을 지정해서 이중화 대상에서 제외시키는 것은 불가능하고 파티션을 각각 지정해서 제외시킬 수 있다.

작동원리

각주

  1. 레플리케이션 위키백과 - https://ko.wikipedia.org/wiki/레플리케이션

참고자료

같이 보기


  의견.png 이 레플리케이션 문서는 하드웨어에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.