[Oracle] RAC Failover

prana·2025년 1월 19일
1

ORACLE

목록 보기
69/96

도서: 오라클 데이터베이스 11g RAC 리눅스

TAF(Transparent Application Failover)

  • 클라이언트 측 기능

  • 인스턴스나 노드의 장애 시 세션의 페일오버/재접속을 의미

  • active/passive 클러스터에서도 동일하게 활용 가능

  • 클라이언트의 tnsnames.ora 파일에서 로컬 명명을 사용하거나, RAC 데이터베이스의 서비스 속성으로 정의할 수 있다.

    • 선호되는 방법: 후자
    • OCI(Oracle Call Interface) 라이브러리가 필요하다.
      • Oracle Instance Client 도입, 설치
  • 오라클 NETCA는 클라이언트 측 TAF 설정 지원하지 않음

1) 노드 장애 시 세션 복원
2) SELECT 구문을 다시 실행

Transparency : 새로운 기능이나 새로운 구성 요소와 같은 컴퓨팅 시스템의 모든 변경 사항은 변경 후 시스템이 내부 동작을 변경하는 동안 이전 외부 인터페이스를 최대한 고수하는 경우 투명하다. 목적은 인터페이스 반대편에 있는 모든 시스템의 변경 사항을 보호하는 것이다.

MYDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = primary_host)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = secondary_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = myservice)
      (FAILOVER_MODE =
        (TYPE = SELECT)  -- SELECT 문을 다시 실행할 수 있음
        (METHOD = BASIC) -- 장애 발생 시 즉시 failover
        (RETRIES = 10)   -- 10번까지 재시도
        (DELAY = 5)      -- 5초 간격으로 재시도
      )
    )
  )

TAF 한계

  • DML 수행 중 장애 발생 시 복구되지 않음 (트랜잭션 보장 안 됨).
  • 커서가 닫힐 수도 있어서 응용 프로그램에서 새로 OPEN 필요.

FCF(Fast Connection Failover)

  • 노드 장애를 처리할 수 있는 또 다른 방법을 제공

  • RAC 고가용성 프레임워크에서 발생한 이벤트를 다룰 수 있다.

    • WAS나 사용자 pc에게 장애가 났음을 고지
  • TAF보다 빠르게 장애 감지 및 전환 수행.

  • Oracle RAC, Data Guard 환경에서 세션이 있는지 확인하고 새로운 연결을 제공.

    • ONS(Oracle Notification Service)를 활용하여 장애 발생을 감지.
  • DML과 SELECT 모두 가능 (커넥션 풀 사용 시).

  • JDBC, ODP.NET, OCI Driver에서 지원.

설정 방법 (Java 연결 예시)

Properties props = new Properties();
props.setProperty("oracle.jdbc.FastConnectionFailover", "true");
props.setProperty("oracle.net.ns.SQLnet.ONS_CONFIGURATION", "(ADDRESS=(PROTOCOL=TCP)(HOST=primary_host)(PORT=6200))");
OracleDataSource ds = new OracleDataSource();
ds.setConnectionProperties(props);

FCF 동작 방식

  • ONS를 통해 장애 발생 감지.
  • Connection Pool에서 장애가 난 노드의 연결을 제거.
  • 새로운 Connection을 자동으로 정상 노드로 연결

한계

  • ONS가 설정되어 있어야 함.
  • Connection Pool을 사용해야 효과적
  • 연결이 끊어진 후 새로운 Connection을 생성하는 방식이므로 기존 세션은 유지되지 않음

CTF (Connect-Time Failover)

접속 시 failover

  • 신규 connection 확립 시 접속 request 실패에 대해 failover함
    • FAILOVER=ON (default: on)
    • 접속 request에 실패하면 별도의 address 문으로 시도
  • 고가용성을 고려할 경우, 실질적으로 필수 기능이다.

Application Continuity

  • Application Continuity: Oracle 19c에서 새롭게 추가된 기능으로, 기존 세션을 유지하면서 자동으로 연결을 재설정해 주는 기능

0개의 댓글