본문 바로가기

Database

[HANA] HANA 2.0 SPS04 - Invisible Take-over

Overview

  • Current limitations with possibilities in direction of temporary write operation
    • SPS04에서 세션이 복구되면 대부분의 현재 session context가 복구 됨
      • Client에서 내부적인 변수를 변경시키는 쿼리는 복구되지 못함
    • DML command로 global temporary table을 수정했던 세션은 복구되지 못함
      • 하지만 local temporary table을 생성하는 세션은 table 복구없이도 복구 가능함
      •  Sessions which have updated a global temporary table with any DML commands won’t be recovered. However, sessions which have created a local temporary table will be recovered without the table recovery. That is, we don’t support local temporary table restore, but this is no longer a limitation of session recovery.
  • pure HSR에서도 사용 가능
    • No Active / Active is necessary
  • JDBC를 지원
    • SQLDBC, ODBC 는 SPS03에서 기 지원

 

 

Admin 자료

  • 개요
    • Invisible takeover or a restart 시 session 상태가 새로운 primary에서 복구될 필요가 있음
    • 기본 Takeover 동안에 active system을 switch (현재 primary system -> Secondary system) 하게 되면 primary system은 client와의 모든 connection을 잃게됨
      • Secondary는 이전 connection에 대해서 인지를 못함
    • Invisible takeover은 새로운 primary로의 takeover 후에 사용하던 session의 자동 복구를 수행함
      • 표준 takeover와 다르게 invisible takeover는 client의 reconnection을 보장함
    • 이와 같은 원할한 복구는 restart 시에도 가능 함 (system crash 이후)
    • 이러한 session과 client library 사이의 Cross-layer가 원할한 복구를 가능하게 함
      • 이러한 cross-layer를 Transparent session recovery 라고 함

 

  • Configuration
    • ini file [session] -> enable_session_recovery = true (default)
    • Online상에서 설정변경 가능하지만 설정 이후의 connection부터 영향 받음
  • Limitation
    • Global temporary table을 생성 /변경하는 session은 복구되지 않음
      • Local temporary table을 생성한 session은 테이블 복구 없이 session 복구 될 것임
    • Write transaction은 error와 함께 rollback 되고 Session은 application이 실패한 transaction을 명식적인 재접속 시도없이 재수행 할 때 복구될 것임
    • 대부분의 모든 session variable from the current session context 은 복구됨
    • Client에서 server로 보내진 요청에 대한 응답이  성공적으로 보내지지 않으면 Session은 복구되지 않음
      -> SQL command가 client에서 Server로 보내지지 않으면 session은 여전히 복구됨