CS 스터디
[데이터베이스] 데이터베이스 회복 기법
수방방
2024. 7. 10. 23:27
📍 데이터베이스 회복 기법이란?
- 데이터베이스 회복 기법은 시스템 오류, 하드웨어 장애, 소프트웨어 버그, 또는 기타 예기치 않은 문제로 인해 데이터베이스가 손상되었을 때, 데이터베이스를 일관된 상태로 복구하는 일련의 절차와 기술입니다.
- 즉, 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업을 말합니다.
📍 REDO 와 UNDO 란?
Redo | Undo | |
정의 | 커밋된 트랜잭션의 변경 사항을 재적용하는 연산 | 커밋되지 않은 트랜잭션의 변경 사항을 되돌리는 연산 |
사용 시기 | 시스템 장애 발생 후 복구 시 | 트랜잭션 실패 또는 시스템 장애 발생 후 복구 시 |
주요 기능 | 데이터베이스에 반영된 커밋된 변경 사항을 복구 | 데이터베이스에 반영된 커밋되지 않은 변경 사항을 원래 상태로 복원 |
작업 방향 | Forward Recovery: 장애 시점 이후로 복구 | Backward Recovery: 장애 시점 이전으로 복구 |
주요 원칙 | 트랜잭션 커밋 전 로그 기록 | 트랜잭션 시작 전 로그 기록 |
로그 내용 | 커밋된 트랜잭션의 변경 사항 | 커밋되지 않은 트랜잭션의 변경 사항 |
📍 주요 데이터베이스 회복 기법
- 로그 기반 회복 기법
- 로그 기반 회복 기법은 데이터베이스 트랜잭션에 대한 모든 변경 사항을 로그에 기록하는 방식입니다.
- 로그를 사용하면 장애 발생 시 로그를 재생하여 데이터베이스를 복구할 수 있습니다.
- 즉시 갱신 회복 기법
- 트랜잭션 수행 중에 데이터를 변경한 연산의 결과를 데이터베이스에 즉시 반영하는 방식입니다.
- 이 기법에서는 트랜잭션이 아직 커밋되지 않은 상태에서도 데이터베이스가 변경될 수 있습니다.
- 따라서 장애가 발생하면, 로그 파일을 참조하여 REDO와 UNDO 연산을 모두 실행해야 합니다.
- 지연 갱신 회복 기법
- 트랜잭션이 수행되는 동안에는 데이터 변경 연산의 결과를 데이터베이스에 즉시 반영하지 않고 로그 파일에만 기록해두는 방식입니다.
- 트랜잭션이 부분 완료(commit) 된 후에 로그에 기록된 내용을 이용해 데이터베이스에 한 번에 반영합니다.
- 따라서 이 기법에서는 장애가 발생해도 UNDO 연산을 수행할 필요없이 REDO 연산만 실행하면 됩니다.
- 체크포인트 회복 기법
- 체크포인트 회복 기법은 로그 회복 기법과 같은 방법으로 로그 기록을 이용하되, 일정 시간 간격으로 검사 시점(Check Point)을 만들어둡니다.
- 이를 통해 장애가 발생했을 때, 복구 작업은 가장 최근의 체크포인트 이후에 발생한 트랜잭션에 대해서만 수행됩니다.
- t4: 체크포인트 이전에 실행되었던 것은 이미 디스크에 반영, 체크포인트 이후의 내용이 장애 발생 전에 종료되었으므로 REDO 대상
- t5: 체크포인트 이후에 실행되었고 장애 발생 전에 종료되었으므로 REDO 대상
- t6: 체크포인트 이후에 실행되었고 장애 발생 시점에 실행중이였으므로 UNDO 대상
3. 그림자 페이징 회복 기법
- 트랜잭션이 실행될 때 데이터 페이지의 복사본을 만들어 트랜잭션이 완료될 때까지 원래 페이지를 보존하는 방식입니다.
- 트랜잭션이 성공적으로 완료되면 복사본이 실제 데이터 페이지로 교체되고, 트랜잭션이 실패하면 복사본을 폐기하여 원래 상태를 유지합니다.
- 그림자 페이지를 사용하여 트랜잭션 중간의 불완전한 변경 사항이 데이터베이스에 반영되지 않도록 보장합니다.
- 다른 회복 기법과 달리, 그림자 페이징 기법은 로그를 유지할 필요가 없습니다.
📍 데이터베이스 회복 기법 비교
구분 | 즉시 갱신 회복 기법 | 지연 갱신 회복 기법 | 체크포인트 회복 기법 | 그림자 페이징 회복 기법 |
복구 과정 | UNDO, REDO 사용 | REDO 사용 | UNDO, REDO 사용 | 페이징 테이블 교체 |
복구 속도 | 로그 검색 수행으로 느림 | 단순한 로그 재생으로 빠름 | 제한된 검사점만을 검색하여 로그 대비 빠름 | 단순한 페이징 테이블 교체로 빠름 |
복구 데이터 | 트랜잭션 로그 | 트랜잭션 로그 | 검사점 시점 로그 | 분산된 그림자 테이블 |
확장성 | 모든 로그 검색으로 비용이 큼 | 트랜잭션 로그 재생만으로 용이 | 검사점 변경만으로 용이 | 페이징 테이블 유지 알고리즘이 복잡 |