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 : 트랜잭션의 로그 생성시 현재 참조되고 있는 로그 화일의 번호 |