"레플리케이션"의 두 판 사이의 차이
(→특징) |
(→특징) |
||
33번째 줄: | 33번째 줄: | ||
|} | |} | ||
− | *LAZY 모드 | + | *'''LAZY 모드''' |
:LAZY 모드는 지역 서버에서 이중화 대상 테이블에 대한 DML 을 수행하는 주 트랜잭션이 발생하면, 이중화의 송신 쓰레드가 주 트랜잭션이 기록한 로그를 수집하여 XLog 로 가공하여 전송한다. 그리고 원격 서버의 수신 쓰레드는 XLog 를 수신하여 복제 트랜잭션으로 DB 에 반영하는 형태이다. 이처럼 서비스 트랜잭션 (주 트랜잭션)과 복제 트랜잭션이 완전히 별개로 동작하기 때문에 트랜잭션의 영향을 받지 않아 지역 서버의 성능이 우수하다. 그러나 송신 쓰레드가 언제나 주 트랜잭션을 따라가는 입장이기 때문에, 매우 바쁜(busy) 사이트 환경에서는 이중화가 밀리는 현상이 발생할 수 있다. | :LAZY 모드는 지역 서버에서 이중화 대상 테이블에 대한 DML 을 수행하는 주 트랜잭션이 발생하면, 이중화의 송신 쓰레드가 주 트랜잭션이 기록한 로그를 수집하여 XLog 로 가공하여 전송한다. 그리고 원격 서버의 수신 쓰레드는 XLog 를 수신하여 복제 트랜잭션으로 DB 에 반영하는 형태이다. 이처럼 서비스 트랜잭션 (주 트랜잭션)과 복제 트랜잭션이 완전히 별개로 동작하기 때문에 트랜잭션의 영향을 받지 않아 지역 서버의 성능이 우수하다. 그러나 송신 쓰레드가 언제나 주 트랜잭션을 따라가는 입장이기 때문에, 매우 바쁜(busy) 사이트 환경에서는 이중화가 밀리는 현상이 발생할 수 있다. | ||
− | *EAGER 모드 | + | *'''EAGER 모드''' |
:EAGER 모드는 지역 서버에서 발생한 주 트랜잭션과 관련된 모든 로그가 원격 서버에서도 정상적으로 반영된 것을 확인한 후에 지역 서버에서 커밋을 수행하고, 동시에 원격 서버에서도 복제 트랜잭션의 커밋을 수행하는 트랜잭션 동기화1 방식이다. EAGER 모드의 이점은 트랜잭션을 동기화 하기 때문에 트랜잭션을 병렬로 복제할 수 있다는 점이다. 그러므로, EAGER 모드로 이중화를 수행할 때는 다수의 송신 쓰레드가 병렬로 복제를 수행한다. 병렬 쓰레드의 개수는 REPLICATION_EAGER_PARALLEL_FACTOR 프로퍼티로 설정할 수 있다. 트랜잭션 동기화로 인해 성능이 조금 떨어지는 단점이 있으나, 트랜잭션 발생이 매우 빈번한 사이트에서도 LAZY 모드처럼 이중화가 밀리는 현상이 발생하지는 않는다. | :EAGER 모드는 지역 서버에서 발생한 주 트랜잭션과 관련된 모든 로그가 원격 서버에서도 정상적으로 반영된 것을 확인한 후에 지역 서버에서 커밋을 수행하고, 동시에 원격 서버에서도 복제 트랜잭션의 커밋을 수행하는 트랜잭션 동기화1 방식이다. EAGER 모드의 이점은 트랜잭션을 동기화 하기 때문에 트랜잭션을 병렬로 복제할 수 있다는 점이다. 그러므로, EAGER 모드로 이중화를 수행할 때는 다수의 송신 쓰레드가 병렬로 복제를 수행한다. 병렬 쓰레드의 개수는 REPLICATION_EAGER_PARALLEL_FACTOR 프로퍼티로 설정할 수 있다. 트랜잭션 동기화로 인해 성능이 조금 떨어지는 단점이 있으나, 트랜잭션 발생이 매우 빈번한 사이트에서도 LAZY 모드처럼 이중화가 밀리는 현상이 발생하지는 않는다. | ||
===부가 기능=== | ===부가 기능=== | ||
Altibase 에서 제공하는 이중화 부가 기능은 아래와 같다. 부가 기능을 사용하는 방법 및 제약사항 등의 자세한 설명은 이중화 부가기능에서 설명한다. | Altibase 에서 제공하는 이중화 부가 기능은 아래와 같다. 부가 기능을 사용하는 방법 및 제약사항 등의 자세한 설명은 이중화 부가기능에서 설명한다. | ||
− | *복구 옵션 : 이중화를 진행중에 서버가 비정상 종료되면 서버간 데이터가 불일치하는 것을 방지하기 위해 이중화를 이용한 데이터 복구 기능 | + | *'''복구 옵션''' : 이중화를 진행중에 서버가 비정상 종료되면 서버간 데이터가 불일치하는 것을 방지하기 위해 이중화를 이용한 데이터 복구 기능 |
− | *오프라인 옵션 : Active-Standby 이중화 환경에서 Active 서버에 장애가 발생하면, 오프라인 옵션을 사용하여 미전송된 로그를 Standby 서버에 반영할 수 있는 기능 | + | *'''오프라인 옵션''' : Active-Standby 이중화 환경에서 Active 서버에 장애가 발생하면, 오프라인 옵션을 사용하여 미전송된 로그를 Standby 서버에 반영할 수 있는 기능 |
− | *이중화 갭 해소 옵션 : 이중화를 수행할 때 발생하는 이중화 갭을 해소하는 기능 | + | *'''이중화 갭 해소 옵션''' : 이중화를 수행할 때 발생하는 이중화 갭을 해소하는 기능 |
− | *병렬 적용자 옵션 : 송신자로부터 받은 XLog 를 수신자가 병렬로 적용할 수 있는 기능 | + | *'''병렬 적용자 옵션''' : 송신자로부터 받은 XLog 를 수신자가 병렬로 적용할 수 있는 기능 |
− | *이중화 트랜잭션 그룹 옵션 : 이중화 갭이 발생하였을 때 전송해야 할 복수의 트랜잭션들을 하나의 트랜잭션처럼 그룹화하여 수신 쓰레드에 로그를 전송하는 기능 | + | *'''이중화 트랜잭션 그룹 옵션''' : 이중화 갭이 발생하였을 때 전송해야 할 복수의 트랜잭션들을 하나의 트랜잭션처럼 그룹화하여 수신 쓰레드에 로그를 전송하는 기능 |
===주의사항=== | ===주의사항=== |
2020년 7월 29일 (수) 15:29 판
레플리케이션(Replication)은 서비스를 수행하고 있는 서버의 데이터에 대한 백업 데이터베이스의 최신 데이터 유지와, 서버의 예기치 않은 종료가 발생했을 때 대체 서버를 이용하여 서비스를 재개할 수 있는 무정지 운영 환경을 제공하는 것을 목적으로 한다.
개요
레플리케이션은 데이터 저장과 백업하는 방법과 관련이 있는 데이터를 호스트 컴퓨터에서 다른 컴퓨터로 복사하는 것인데 이때 다른 컴퓨터가 반드시 떨어진 지역에 있어야 하는 것은 아니다. 컴퓨터 네트워크 상태에서는 데이터 저장을 할 수 있게 하는데 로컬 데이터 물리적 기억 장치와는 완전하게 구분된다. 레플리케이션은 유명한 데이터베이스 관리 시스템 (RDBMS, Relational DataBase Management Systems)에서 추가적으로 제공하거나 여러 대의 데이터베이스 서버의 부하를 맞추어 줄 용도로 제공한다. 레플리케이션은 남아 있는 리소스와 관련이 있는데 소프트웨어 요소나 하드웨어 부품이 말해 주며, 이는 신뢰성, 허용 오차, 그리고 성능을 개선한다. 전형적으로 '레플리케이션 인 스페이스'(replication in space)와 관련이 있는데 이것은 동일한 데이터를 다수의 저장 장치에 저장하거나 동일한 계산 업무를 다수 장치에서 수행하는 것이다. 또한 '레플리케이션 인 타임'(replication in time)는 컴퓨터 계산 수행이 반복적으로 한 개의 장치에서 일어나는 것이다.[1]
특징
데이터베이스 이중화를 하기 위하여, 지역 서버는 데이터베이스에서 발생하는 데이터 변경 내용을 원격 서버로 전송하고, 원격 서버는 전송받은 내용을 자신의 데이터베이스에 반영하는 방법을 사용한다. 지역 서버와 원격 서버는 데이터베이스 서비스 스레드와 별도로 이중화 관리에 필요한 스레드를 구동한다. 지역 서버의 이중화 송신 스레드는 데이터베이스의 데이터 변경 내역을 원격 서버로 전송하며, 원격 서버의 이중화 수신 스레드는 전송받은 변경 내용을 데이터베이스에 반영시킨다. 또한 이중화 송수신 스레드는 대응 서버의 정상 및 비정상 종료를 자동 감지하며 이에 상응하는 작업을 수행한다.
이중화 서버 선정
이중화를 하기 위해서는 데이터베이스 서버들의 데이터베이스 캐릭터 셋과 내셔널 캐릭터 셋이 서로 동일해야 한다. 데이터베이스 캐릭터 셋은 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 를 수신자가 병렬로 적용할 수 있는 기능
- 이중화 트랜잭션 그룹 옵션 : 이중화 갭이 발생하였을 때 전송해야 할 복수의 트랜잭션들을 하나의 트랜잭션처럼 그룹화하여 수신 쓰레드에 로그를 전송하는 기능
주의사항
이중화할 수 있는 객체는 테이블 또는 파티션이며, 양쪽 서버에서 대응하는 이중화 대상 아이템은 서로 종류가 동일해야 한다. 즉 테이블은 테이블로, 파티션은 파티션으로 이중화할 수 있지만, 서로 교차되는 이중화는 지원하지 않는다. 이중화 객체에서 이중화 대상 테이블 또는 파티션을 삭제할 때에는 추가할 때 지정한 그대로 명시해야 한다. 예를 들어, 한 파티션드 테이블의 모든 파티션을 이중화 대상으로 추가했어도, 파티션드 테이블을 지정해서 이중화 대상에서 제외시키는 것은 불가능하고 파티션을 각각 지정해서 제외시킬 수 있다.
작동원리
각주
- ↑ 레플리케이션 위키백과 - https://ko.wikipedia.org/wiki/레플리케이션
참고자료
- 레플리케이션 위키백과 - https://ko.wikipedia.org/wiki/레플리케이션
같이 보기