개요
이중화 사용 시 발생할 수 있는 GIVE-UP 현상과 이중화 GIVE-UP 이 미치는 영향에 대해 설명합니다.
적용버전
- ALTIBASE HDB 6.1.1 이상 버전에 적용되는 내용입니다.
- 추가사항 또는 업데이트가 필요한 경우 http://support.altibase.com/kr/ 또는 이 페이지에 댓글로 요청 글 남겨주세요.
이중화와 로그파일
Altibase 이중화는 Redo 로그를 기반으로 한 Data 동기화 기능입니다.
즉, Active Server 에서 생성된 Redo 로그들을 Standby Server 로 전송함으로써 양 서버간의 Data 일치를 보장하는 방법입니다.
Altibase 에서 Redo 로그 파일은 정해진 파일 수를 유지하며 Circular하게 재활용하는 방식이 아닌, Transaction 을 처리하면서 발생되는 로그를 개수 제한 없이 생성하고 반영 완료 후 로그 파일이 삭제되어 정리되는 방식입니다.
로그 파일이 정리되는 시점은 Checkpoint 가 수행되는 시점이며, 다음과 같은 특정 조건에 해당하는 로그 파일들은 삭제될 수 없습니다.
(1) 현재 진행 중인 트랜잭션이 참조하고 있는 로그파일
(2) (1)은 완료되었지만 이중화 전송이 완료되지 않아 이중화에서 참조해야 하는 로그파일 (이중화 GAP 으로 남아 있는 로그파일)
(3) CLR(Compensation Log Record의 약자이며 트랜잭션 롤백시 생성되는 로그 레코드의 타입) 로그가 참조하고 있는 로그 화일
위 세 조건에 해당되어 Redo 로그 파일이 정리되지 않고 지속적으로 쌓여간다면 Active Server Disk Full 장애 상황이 발생할 수 있습니다.
이중화 GIVE-UP 이란
이중화 문제로 Redo 로그 파일이 정리되지 않는 경우 Disk Full 장애를 방지하기 위해 이중화에서 최대 유지할 수 있는 Redo 로그 파일 개수를 설정할 수 있습니다.
정리되지 않은 Redo 로그 파일의 개수가 설정한 값을 초과하게 되면, Standby Sever 에서 Data 가 동기화가 되지 않았더라도 이중화 Gap 을 포기하고 Redo 로그를 삭제하여 Active Server 의 Disk Full 장애를 방지하게 됩니다.
이처럼 이중화 동기화가 완료되지 않았지만 Active Server 의 Disk full 장애 방지를 위하여 이중화에 필요한 Redo 로그 파일을 삭제하는 현상을 이중화 GIVE-UP 이라 합니다.
이중화 GIVE-UP 발생 시 미치는 영향
- 이중화 GIVE-UP 이 발생하면 Active Server 와 Standby Server 간의 Data 가 불일치한 상황이 되며, 심각한 문제를 초래할 수도 있습니다.
이중화 GIVE-UP 방지 방법
- 이중화 GIVE-UP 을 방지하려면 이중화 성능에 영향을 줄 수 있는 네트워크 성능이 안정적으로 유지되어야 합니다.
- 그리고, 비정상적인(정전, 네트워크 단절 등) 상태에서도 최악의 상황을 고려하여 관련 프로퍼티 값을 상황에 맞게 수정해 주어야 합니다.
REPLICATION_MAX_LOGFILE = 400
- 해당 프로퍼티 단위는 Redo 로그 파일 개수이며 400으로 설정한 경우, 정리되지 않아 Redo 로그 파일 개수가 400개 이상 생성되었다면 이중화 GIVE-UP 이 동작하게 됩니다.
- 이 프로퍼티는 $ALTIBASE_HOME/conf/altibase.properties 에서 수정 가능하며 자세한 내용은 General Reference 메뉴얼의 REPLICATION_MAX_LOGFILE 부분 참조하시기 바랍니다.
이중화 GIVE-UP 발생 시 이중화 진행여부 설정(자동)
REPLICATION_MAX_LOGFILE 프로퍼티로 설정된 값을 초과하여 이중화 GIVE-UP 동작 이후, 다시 시작되는 방식을 설정할 수 있습니다.
REPLICATION_SENDER_START_AFTER_GIVING_UP = 1 (default)
- 0으로 설정된 경우
- SYS_REPLICATIONS_ 메타 테이블의 IS_STARTED 컬럼 값이 0으로 바뀐다.
- 이중화 "재시작 SN" 값(즉 SYS_REPLICATIONS_ 메타 테이블의 XSN 컬럼 값)은 -1로 초기화되며, 이중화는 중지된다. (이 경우 이중화가 중단 된 상태를 유지하더라도 이로 인한 logfile 증가 현상은 발생하지 않는다)
- 1으로 설정된 경우
- 이중화 "재시작 SN" 값은 현재 로그 파일의 마지막 (가장 큰) SN으로 변경되고, 이중화는 이 "재시작 SN" 부터 다시 동기화 된다. (현 시점부터 동기화 진행)
- 이중화 "재시작 SN" 값은 현재 로그 파일의 마지막 (가장 큰) SN으로 변경되고, 이중화는 이 "재시작 SN" 부터 다시 동기화 된다. (현 시점부터 동기화 진행)
이중화 GIVE-UP 확인 주기
이중화 GIVE-UP 동작 여부 결정은 Redo 로그 파일을 정리하는 Checkpoint 수행 중에 판단하게 됩니다.
이중화 GIVE-UP 발생 여부의 확인
give-up이 발생하면 이중화 메타테이블에 give-up 시간이 기록됩니다.
이중화 GIVE-UP 이 발생하면 SYSTEM_.SYS_REPLICATIONS_ 테이블에 GIVE-UP 관련 내용을 기록합니다.
| 컬럼명 | 내용 |
|---|---|
| REPLICATION_NAME | 이중화 이름 |
| IS_STARTED | 이중화 시작 여부 (start : 1, stop : 0) |
| GIVE_UP_TIME | 가장 최근에 이중화를 포기한 일시 |