FAQ
이중화 give-up에 대해
분류 이중화 등록일 2013-07-08 조회수 2217
msjung 2004-03-03 43


이중화 give-up에 대해
+++++++++++++++++++++++++++++++++++++++


요약
++++
이중화 사용시 발생할 수 있는 현상인 give-up과
give-up이 미치는 영향에 대해 설명


replicaiton과 로그 화일
+++++++++++++++++++++++
알티베이스 이중화는 log_based replication 방법을 사용하고 있다.
즉, active쪽에서 생성된 로그들을 standby 쪽으로 전송함으로써
양 서버간의 데이타 일치를 보장하는 방법이다.

알티베이스에서 로그 화일들은 일정 수만큼의 로그 화일들만 생성하여 이를 circular
하게 재생성하는 것이 아니라 로그가 생기는 만큼 계속적으로 로그 화일들이 자동으
로 생성된다. 그렇기 때문에 불필요한 로그 화일들은 주기적으로 삭제되어야만 disk
full을 방지할 수 있다.

로그 화일의 삭제는 checkpoint 수행시 이루어지며, 다음과 같은 조건에 있는 로그 화
일들은 삭제될 수 없다. (1) 현재 진행 중인 트랜잭션이 참조하고 있는 로그 화일
(2) 이중화 전송이 안되어 이중화에서 참조해야 하는 로그 화일 (3) CLR
(Compensation Log Record의 약자이며 트랜잭션 롤백시 생성되는 로그 레코드의 타
입) 로그가 참조하고 있는 로그 화일

따라서, 어떠한 이유로 인해 이중화 데이타 전송이 느려지면 로그 화일이 삭제가 되
지 않아 disk full이 발생할 수 있다.


이중화 give-up이란
++++++++++++++++++
이중화 문제로 인해 로그 화일이 삭제되지 않는 경우 disk full을 방지하기 위해 이중
화에서 최대 유지할 수 있는 로그 화일의 갯수를 지정할 수 있다. 삭제되지 않은 로
그 화일의 갯수가 이 갯수를 초과하게 되면 비록 이중화 데이타가 전송되지 않았더라
도 이러한 이중화 데이타를 포기하고 로그 화일을 삭제하여 disk full을 방지하게 된
다. 이처럼 이중화 데이타가 전송되지 않았음에도 불구하고 이중화에 필요한 로그 화
일을 삭제하는 현상을 이중화 give-up이라 한다.


give-up 현상이 미치는 현상
++++++++++++++++++++++++++
이중화 give-up이 발생하면 active와 standby 양 서버간의 데이타 불일치 현상이 발생
한다. 이는 경우에 따라 심각한 문제를 초래할 수도 있다.


give-up을 막으려면
++++++++++++++++++
이중화 give-up을 막으려면 이중화 성능에 영향을 미칠 수 있는 네트워크 속도가 항
상 안정된 상태임을 보장해야 한다. 그리고, 정전이나 네트워크 단절 등 비정상적인
상태에서도 give-up 현상을 피하려면 최악의 상황을 고려하여 give-up이 발생하지 않
도록 프로퍼티의 값을 늘려서 수정해주어야 한다.
=================================
REPLICATION_MAX_LOGFILE = 400
=================================
이 프로퍼티의 단위는 로그 화일 갯수를 의미하며 위의 예와 같이 400으로 설정된 경
우 현재 삭제되지 않은 로그 화일의 갯수가 400개 이상이면 이중화 give-up이 발생한
다.


give-up check 시기
++++++++++++++++++
give-up을 수행해야 하는지 여부의 검사는 checkpoint가 수행될 때에만 이루어진다.
로그 화일의 삭제가 checkpoint 때에만 수행되기 때문이다.


give-up 발생 여부의 확인
++++++++++++++++++++++++
give-up이 발생하면 $ALTIBASE_HOME/trc/altibase_boot.log 화일에 아래와 같은 메세
지가 출력된다.

=============================================================================
[2004/03/03 11:44:14] [Thr: 19] [qcmRepl.cpp:137] ERR-310CA (qcmRepl.cpp:136)
[errno=9] : [REPL manager] stop REP1 sender thread (sender read =
logfile9,current = logfile10,REPLICATION_MAX_LOGFILE = 1,min = 10)
=============================================================================
(1) read = logfile9 : 이중화에서 현재 참고하고 있는 로그 화일의 이름
(2) current = logfile10 : 트랜잭션의 로그 생성시 현재 참조되고 있는
로그 화일의 이름
(3) REPLICATION_MAX_LOGFILE : 현재 프로퍼티에 설정되어 있는 값
(4) min = 10 : 트랜잭션의 로그 생성시 현재 참조되고 있는 로그 화일의 번호

목록