[Database] Recovery


📝DB Recovery

  • 회복은 트랜잭션들을 실행하는 도중 장애(Failure)가 발생하여 데이터베이스가 손상되었을 경우 손상되기 이전의 정상 상태로 복구하는 작업이다.


📌 장애의 유형

실행 장애

  • 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상

트랜잭션 장애

  • 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상

시스템 장애

  • 데이터베이스에는 손상을 입히지 않으나 하드웨어 오동작, 정전, 소프트웨어(운영체제나 DBMS 등) 오류, 교착 상태 등에 의해 실행중인 모든트랜잭션들이 더 이상 실행을 계속할 수 없는 현상

미디어 장애

  • 저장 장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상되는 현상


📌 로그

  • 트랜잭션 로그 또는 데이터베이스 로그 또는 바이너리 로그라고 한다.
  • 데이터베이스에서 충돌이나 하드웨어 고장이 발생하면
  • 데이터베이스의 ACID 특성을 보장하기 위한 조작 기록을 뜻한다.
  • 로그는 전원이 끊겨도 데이터를 저장할 수 있는 보조 기억 장치에 파일로 출력되는 경우가 많다.


📌 회복 관리기

  • 회복 관리기는 로그(Log), 메모리 덤프(Memory Dump) 등을 이용하여 회복 기능을 수행하는 DBMS의 핵심 구성 요소이다.
  • 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시켜서, 트랜잭션 실행 이전의 원래 상태로 되돌리는 역할을 담당한다.
  • 트랜잭션 실행을 성공적으로 종료하였으나 디스크에는 반영되지 않았을 경우 회복 시 로그를 이용하여 재작업(Redo)을 수행한다.


📌 REDO와 UNDO

REDO

  • 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작 ‘start’와 완료 ‘commit’ 에 대한 기록이 있는 트랜잭션들의 작업을 다시 하는 작업이다.
  • 트랜잭션이 정상적으로 수행되었을 때 REDO 한다.

UNDO

  • 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 ‘start’는 있지만 완료를 나타내는 ‘commit’ 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 작업이다.
  • 트랜잭션이 정상적으로 수행되지 않았을때 UNDO 한다.


📌 회복 기법

체크포인트 회복 기법

  • 시스템 장애가 발생하였을 경우, Redo와 Undo를 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 방법이다.
  • 검사점 기법은 트랜잭션 실행중 주기적으로 변경 내용이나 시스템 상황 등에 관한 정보와 함께 체크포인트를 로그에 보관해둔다.
  • 장애 발생 시 로그 전체를 조사하지 않고 로그 내에서 가장 최근의 검사점으로부터 회복 작업을 수행하여 회복 시간을 단축시킬 수 있다.


🔎 출처 & 더 알아보기

태그:

카테고리:

업데이트: