📝DB Recovery
- 회복은 트랜잭션들을 실행하는 도중 장애(Failure)가 발생하여 데이터베이스가 손상되었을 경우 손상되기 이전의 정상 상태로 복구하는 작업이다.
📌 장애의 유형
실행 장애
- 사용자의 실수, 무결성 규정 위반 등으로 질의 실행이 실패하는 현상
트랜잭션 장애
- 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상
시스템 장애
- 데이터베이스에는 손상을 입히지 않으나 하드웨어 오동작, 정전, 소프트웨어(운영체제나 DBMS 등) 오류, 교착 상태 등에 의해 실행중인 모든트랜잭션들이 더 이상 실행을 계속할 수 없는 현상
미디어 장애
- 저장 장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상되는 현상
📌 로그
- 트랜잭션 로그 또는 데이터베이스 로그 또는 바이너리 로그라고 한다.
- 데이터베이스에서 충돌이나 하드웨어 고장이 발생하면
- 데이터베이스의 ACID 특성을 보장하기 위한 조작 기록을 뜻한다.
- 로그는 전원이 끊겨도 데이터를 저장할 수 있는 보조 기억 장치에 파일로 출력되는 경우가 많다.
📌 회복 관리기
- 회복 관리기는 로그(Log), 메모리 덤프(Memory Dump) 등을 이용하여 회복 기능을 수행하는 DBMS의 핵심 구성 요소이다.
- 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo)시켜서, 트랜잭션 실행 이전의 원래 상태로 되돌리는 역할을 담당한다.
- 트랜잭션 실행을 성공적으로 종료하였으나 디스크에는 반영되지 않았을 경우 회복 시 로그를 이용하여 재작업(Redo)을 수행한다.
📌 REDO와 UNDO
REDO
- 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작 ‘start’와 완료 ‘commit’ 에 대한 기록이 있는 트랜잭션들의 작업을 다시 하는 작업이다.
- 트랜잭션이 정상적으로 수행되었을 때 REDO 한다.
UNDO
- 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 ‘start’는 있지만 완료를 나타내는 ‘commit’ 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 작업이다.
- 트랜잭션이 정상적으로 수행되지 않았을때 UNDO 한다.
📌 회복 기법
체크포인트 회복 기법
- 시스템 장애가 발생하였을 경우, Redo와 Undo를 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 방법이다.
- 검사점 기법은 트랜잭션 실행중 주기적으로 변경 내용이나 시스템 상황 등에 관한 정보와 함께 체크포인트를 로그에 보관해둔다.
- 장애 발생 시 로그 전체를 조사하지 않고 로그 내에서 가장 최근의 검사점으로부터 회복 작업을 수행하여 회복 시간을 단축시킬 수 있다.
🔎 출처 & 더 알아보기