문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero 7 (DB 7.2.4)
문서번호ㅣTADTI232
개요
Tibero Standby Cluster(TSC) 의 기본적인 구성요소와 Auto Failover 조건 및 관련 파라미터에 대하여 알아보도록 합니다.
1. TSC란?
• Active-Standby 구성입니다.
• 데이터베이스의 고가용성, 데이터의 보호, 재난 복구 등의 목적으로 사용됩니다.
• Standby 서버는 물리적으로 독립된 장소에 구성됩니다.
• Active-Standby 역할 전환은 2가지 방법 존재합니다. (Switchover, Failover)
• 수동으로 명령어 수행 필요 • 장애 발생 시 대응이 늦어지게 됩니다.
2. Observer란?
• TSC 서버의 장애 상황을 인지하여 자동 Failover 할 수 있도록 도와줍니다. (AFO : Auto FailOver)
• 빠른 장애 대응이 가능합니다.
• Observer 동작 모드에 따라 AFO 조건이 다릅니다.
3. Observer 동작 모드
구분 | PROTECTIVE | DISASTER_PLAN |
|---|---|---|
목적 | Primary 안정성을 최우선으로 합니다. (default mode) | 재난 상황 대비 (최대한 많은 상황에서 AFO 수행됩니다.) |
장점 | 어떤 경우에도 primary instance는 AFO를 위해 스스로 shutdown 하는 일을 최소화합니다. | primary cluster의 모든 CM이 down 되어도 AFO 수행합니다. (정전/지진 등 재난 상황에 적합합니다.) |
단점 | primary cluster의 CM이 적어도 하나가 Observer와 정상 연결 되어 있어야 AFO 수행됩니다. (지진/정전 등 재난 상황에서 primary node 서버가 통째로 down될 경우 AFO 일어나지 않습니다.) | primary instance가 스스로 shutdown하는 경우가 다양합니다. |
설정 방법 | cmrctl set --tscid <tsc_id> –mode protective | cmrctl set --tscid <tsc_id> –mode disaster_plan |
4. Observer 연결 상태 확인 방법
$ cmrctl show --tscid <tsc_id>MODE : observer 동작 모드입니다.
CONN : 해당 CM과 연결 상태입니다.
N : Observer와 CM이 연결되지 않은 상태입니다. Y(M) : Observer와 CM 연결이 되고, 그 CM이 자신이 속한 cluster에서 master cm입니다. Y : Observer와 CM 연결이 되고, 그 CM은 자신이 속한 cluster에서 master cm이 아닙니다. |
LOG : Primary/Standby node sync 상태입니다.
N : CM과 DB 연결되지 않은 상태입니다. - : primary node에 표시됩니다. (데이터 전송 주체) 1 : standby node에 표시됩니다. (자신의 standby instance에서 몇개의 redo thread로부터 log를 받고 있는지 표시됩니다.) |
Heartbeat : 각 CM과 Observer간 heartbeat 체크하는 시간, _CM_OBSERVER_EXPIRE(default:60초) 파라미터 값입니다.
RCVD.TSN : 동기화된 TSN 값, Standby node에서만 의미가 있습니다.
- Primary/Target CM은 1초에 한번씩 Observer로부터 heartbeat msg를 받습니다.
- TSC 동기화 정상 상태
방법
1. TSC AFO 관련 파라미터
_OBSERVER_EXPIRE_TIME(기본값 : 60초)
각 CM과 통신하여 상태 감지. 설정 값 만큼 통신이 되지 않을 경우 AFO 진행합니다.
* _OBSERVER_EXPIRE_TIME < CM_HEARTBEAT_EXPIRE + CM_NET_MARGIN
_CM_MAX_IO_RETRY(기본값 : 10초)
CM File에 접근이 안될 때 count 하는 시간. 해당 시간이 지나면 CM은 DB를 down 시킵니다.
* CM File은 data 영역에 위치해야 합니다.
_STANDBY_NETWORK_TIMEOUT(기본값 : 60초)
Primary cluster와 Standby cluster간에 서로 연결이 끊김을 인지하는 시간입니다.
* 관련 로그 : INST_TSC_INFO msg. Primary connection count is changed. 1 -> 0.
_CM_AUTOFAILOVER_WAIT_TIME(기본값 : 10초)
OBSERVER에서 AFO 수행 전 대기하는 시간입니다.
* 관련 로그 : Start count down auto failover.
2. Observer 모드 & 시나리오 별 AFO 발생 여부
1. CM abnormal
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[1] cm abnormal (cm process kill) | Failover | X | Failover | O | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Down | Up | CM process | Down | Up | |
DB process | Down | Up(RECO) | DB process | Down | Up(FAILOVER) | |
비고 | tibero MTHR 에서 cm abnormal 된 것을 감지하여 바로 db instance 종료합니다. | 비고 | tibero MTHR 에서 cm abnormal 된 것을 감지하여 바로 db instance 종료 후 observer에서 ①+② 만큼 대기 후 AFO 수행합니다. | |||
관련 파라미터 | X | 관련 파라미터 | ① CM_OBSERVER_EXPIRE + 여분의 시간 10초 ② _CM_AUTOFAILOVER_WAIT_TIME | |||
2. CM down
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[2] cm down (tbcm -d) | Failover | X | Failover | X | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Down | Up | CM process | Down | Up | |
DB process | Down | Up(RECO) | DB process | Down | Up(RECO) | |
비고 | cm 내리기 전에 tbdown abnormal 먼저 수행됩니다. | 비고 | cm 내리기 전에 tbdown abnormal 먼저 수행됩니다. | |||
관련 파라미터 | X | 관련 파라미터 | X | |||
3. db abnormal
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[3] db abnormal (db process kill / tbdown abnormal) | Failover | O | Failover | O | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Up | Up | CM process | Up | Up | |
DB process | Down | Up(FAILOVER) | DB process | Down | Up(FAILOVER) | |
비고 | CM에서 DB down을 바로 인지하고 observer에서 ① 만큼 대기 후 AFO 수행합니다. | 비고 | CM에서 DB down을 바로 인지하고 observer에서 ① 만큼 대기 후 AFO 수행합니다. | |||
관련 파라미터 | ① _CM_AUTOFAILOVER_WAIT_TIME | 관련 파라미터 | ① _CM_AUTOFAILOVER_WAIT_TIME | |||
4. db down
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[4] db down (tbdown immediate) | Failover | O | Failover | O | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Up | Up | CM process | Up | Up | |
DB process | Down | Up(FAILOVER) | DB process | Down | Up(FAILOVER) | |
비고 | CM에서 DB down을 바로 인지하고 observer에서 ① 만큼 대기 후 AFO 수행합니다. | 비고 | CM에서 DB down을 바로 인지하고 observer에서 ① 만큼 대기 후 AFO 수행합니다. | |||
관련 파라미터 | ① _CM_AUTOFAILOVER_WAIT_TIME | 관련 파라미터 | ① _CM_AUTOFAILOVER_WAIT_TIME | |||
5. network 장애
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[5] network 장애 (ifdown) | Failover | X | Failover | O | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Down | Up | CM process | Down | Up | |
DB process | Down | Up(RECO) | DB process | Down | Up(FAILOVER) | |
비고 | • Observer / primary cm에서 ① 만큼 네트워크 체크한 후에 primary db&cm down 발생합니다. • Standby에서 ② 이후에 primary cluster 장애를 인지합니다. | 비고 | • Observer / primary cm에서 ① 만큼 네트워크 체크한 후에 primary db&cm down 발생합니다. • Standby에서 ② 이후에 primary cluster 장애 인지 하고 observer에서 ③+④ 만큼 대기 후 AFO 수행합니다. | |||
관련 파라미터 | ① _CM_OBSERVER_EXPIRE ② _STANDBY_NETWORK_TIMEOUT + 여분의 시간 1~5초 | 관련 파라미터 | ① _CM_OBSERVER_EXPIRE ② _STANDBY_NETWORK_TIMEOUT + 여분의 시간 1~5초 ③ _CM_OBSERVER_EXPIRE + 여분의 시간 10초 ④ CM_AUTO_FAILOVER_WAIT_TIME | |||
6. cmfile 장애
| PROTECTIVE | DISASTER_PLAN | ||||
|---|---|---|---|---|---|---|
[6] cm file 장애 (rm cmfile / chmod 000 cmfile) | Failover | X | Failover | O | ||
구분 | Primary | Target | 구분 | Primary | Target | |
CM process | Up (cluster down) | Up | CM process | Up (cluster down) | Up | |
DB process | Down | Up(RECO) | DB process | Down | Up(FAILOVER) | |
비고 | • ① < ② : ①를 초과할 경우 cm에서 db cluster down을 시킵니다. • ① > ② : ②를 초과할 경우 cm에서 db cluster down을 시킵니다. | 비고 | • ① < ② : ①를 초과할 경우 cm에서 db cluster down을 시킵니다. • ① > ② : ②를 초과할 경우 cm에서 db cluster down을 시킵니다. • 이후 ③+④ 대기 후 AFO 메시지 전송합니다. | |||
관련 파라미터 | ① _CM_MAX_IO_RETRY ② CM_HEARTBEAT_EXPIRE | 관련 파라미터 | ① _CM_MAX_IO_RETRY ② CM_HEARTBEAT_EXPIRE ③ _CM_OBSERVER_EXPIRE + 여분의 시간 10초 ④ _CM_AUTO_FAILOVER_TIME | |||