본문 바로가기
CS/DB

[DB] 데이터베이스 장애와 회복 기법 (Redo 재실행, Undo 취소)

by jangThang 2023. 4. 25.
반응형

 데이터베이스에서 일어날 수 있는 장애의 유형에 대해 알아보고, 이를 복구하기 위한 회복기법을 알아보겠습니다. 회복기법에는 Redo(재실행)와 Undo(취소)가 있으며, 덤프(복사본)와 로그를 통해 복구합니다.

 

[ Contents ]

     

     

    1. 장애

    - 실행 장애: 데이터베이스 연산 실패
    - 트랜잭션 장애: 프로그램 실행 중지
    - 시스템 장애: 하드웨어 결함
    - 미디어 장애: 디스크 장치 결함

     

     장애는 트랜잭션을 더 이상 수행할 수 없는 시스템 중단 상태를 말합니다.

     장애의 유형에는 '실행 장애', '트랜잭션 장애', '시스템 장애', '미디어 장애'가 있습니다. 일종의 DB오류라고 생각하시면 됩니다. 여기서 중요한 건, 장애가 아니라 이를 대처하는 회복(복구) 조치입니다.

     

     

     

    2. 회복

    - 덤프(Dump): 주기적으로 데이터베이스 전체를 다른 저장장치에 복제하는 것 
    - 로그(Log): 데이터베이스가 변경될 때마다 예전 값(Old value)과 변경 값(New value)를 기록해두는 것

    - 재실행(Redo): 장애 발생 전, 이미 완료된 트랜잭션을 재실행
    - 취소(Undo): 장애 발생 후, 진행 중이던 트랜잭션을 취소하고 이전 상태로 복구

     

     장애로 인해 제대로 실행되지 못한 DB를 이전 상태로 복구하는 작업입니다.

     회복 작업을 위해서는 덤프와 로그가 있어야만 가능합니다. 장애 발생 시, 가장 최근의 복사본(덤프)을 가져온 후 로그를 보며 복구합니다. 복사본에는 반영되지 않았지만, 로그상으로 완료된 트랜잭션은 재실행해서 DB에 반영합니다. (Redo)

     반면 복사본에 장애 발생 후 진행 중이던 트랜잭션이 있다면, 반대로 로그를 보며 취소 작업을 실시합니다. (Undo)

     

     

     

    3. 회복 작업에서의 트랜잭션 (원자성과 영속성)

     장애 발생 시점을 기준으로 트랜잭션 완료 여부에 따라 Redo와 Undo로 나누어 집니다.

     Redo를 하는 이유는 트랜잭션의 영속성을 만족하기 위해서 입니다. 트랜잭션은 일단 완료되면 그 결과를 영구 기억장치에 저장하고 보존해야 합니다. 이를 위해 다시 Redo 작업을 실시해서 저장합니다.

     반면 Undo를 하는 이유는 트랜잭션의 원자성을 만족하기 위해서 입니다. 트랜잭션은 전부 실행되거나, 아예 실행되지 않아야 합니다. 장애로 인해 중간 결과만 남은 경우, 다시 실행 이전으로 복구해야 합니다.

     

     

    star가 되고나서 Tistory

    반응형

    댓글