Skip to main content

데이터베이스 회복

데이터베이스 회복(Database Recovery)

1. 데이터베이스 회복 이란?

트랜잭션들을 실행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업


2. 장애의 유형

  • 실행 장애(Action Failure) : 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상
  • 트랜잭션 장애(Transaction Failure) : 트랜잭션 실행 시 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등의 논리적인 오류로 발생할 수 있는 에러 상황
  • 시스템 장애(System Failure) : 데이터베이스 자체에는 손상을 입히지 않으나 하드웨어 오동작, 소프트웨어 오류, 교착 상태 등에 의해 실행중인 모든 트랜잭션들이 더 이상 실행을 진행할 수 없는 상황
  • 미디어 장애(Media Failure) : 저장 장치인 디스크 자체의 손상으로 인해 발생할 수 있는 에러상황

3. Undo와 Redo

  • Undo : 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행
  • Redo : 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행하여 복구 수행

4. 로그 파일

트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스

안전한 하드디스크에 저장되며 전원과 관계없이 기록이 존재

로그의 구조 : <트랜잭션 번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값>

로그의 타입 : START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등 트랜잭션의 연산 타입

로그파일을 이용한 복구

  • 로그파일에 트랜잭션의 시작(START)과 종료(COMMIT)가 있는 경우 REDO 수행
  • 로그파일에 트랜잭션의 시작(START)은 있고 종료(COMMIT)는 없는 경우 UNDO 수행

5. 회복 관리기(Recovery Manager)

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

6. 회복 기법

  • 로그 기반 회복 기법

    1. 지연갱신 회복 기법(Deferred Update)

      • 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장

      • 커밋이 발생하기 전까진 데이터베이스에 저장하지 않음

      • 중간에 장애가 발생하더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음

        (미실행된 로그는 폐기)

    2. 즉시갱신 회복 기법(Immediate Update)

      • 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 저장
      • 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요

  • 검사점 회복 기법(Checkpoint Recovery)

    장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복에서 제외하고

    검사점 이후에 처리된 트랜잭션은 회복 작업 수행

    => 장애 발생 시, 로그 전체를 조사해야 하는 상황을 피할 수 있음

    => 검사점 이후, 장애 발생 이전에 commit이 완료된 경우 Redo 수행

    => 장애 발생 시점까지 commit 되지 못한 경우 Undo 수행


  • 그림자 페이징 기법(Shadow Paging)

    갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 두고, 실제 페이지를 대상으로 트랜잭션에 대한 변경 작업을 수행하는 기법

    • 트랜잭션이 실행되는 메모리상의 Current Page Table과 하드디스크의 Shadow Page Table 이용
    • 트랜잭션 시작시점에 Current Page Table과 동일한 Shadow Page Table 생성
    • 트랜잭션이 성공적으로 완료될 경우 Shadow Page Table 삭제
    • 트랜잭션이 실패할 경우 Shadow Page Table을 Current Page Table로 함

    => 회복을 위해 로그를 유지할 필요가 없으며, 회복 작업을 수행할 경우에도 Redo, Undo 작업 필요 X


  • 미디어 회복 기법(Media Recovery)

    데이터베이스 내용을 주기적으로 안전한 저장 장치에 덤프해 놓는 기법


면접 예상 질문

  • 데이터 베이스 회복이란 무엇인가요?
  • Undo와 Redo를 실행해야 하는 각각의 상황에 대해 설명해주세요
  • 검사점 회복 기법(CheckPoing Recovery)에 대해 설명해주세요

기여자


HongEunho

📦