데이터베이스 회복(Database Recovery)
1. 데이터 베이스 회복
트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
1.1 장애의 유형
-트랜잭션 장애: 트랜잭션 내부의 비정상적인 상황으로 인해 프로그램 실행이 중지되는 현상
-시스템 장애: 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상
-미디어 장애: 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태
→ 회복 관리기(Recovery Management)
DMBS의 구성 요소, 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터 베이스에 생성했던 모든 변화를 취소(Undo)시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할 담당
-메모리 덤프, 로그(Log)를 이용하여 회복 수행
1.2 복구 수행 방식 22년 1회 실기
- Undo: 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소
- Redo: 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행, 장애 발생 전의 DB로 복구
1.3 회복 기법 20년 3회 기출문제
로그 기반 회복 기법 중요! 지re즉un
(1) 로그 기반 회복 기법
(1.1) 지연/연기 갱신 기법(Deferred Update)
-트랜잭션이 부분 완료 상태에 이르기까지 발생한 모든 변경 내용을 로그 파일에만 저장하고, 데이터베이스에는 커밋(COMMIT)이 발생할 때까지 저장을 지연하는 기법
-데이터베이스에 기록되지 않아 트랜잭션이 실패할 경우 UNDO 없이 로그 단순 폐기
(1.2) 즉시 갱신 기법(Immediate Update)
-트랜잭션 수행 도중 데이터를 변경하면 변경 정보를 로그 파일에 저장하고, 부분 완료되기 전이라도 모든 변경 내용을 즉시 데이터베이스에 반영
- 커밋(COMMIT) 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신으로 UNDO필요
-로그 파일을 참조해 미완료된 변경에 대해 UNDO를 우선 실행한 후, 완료된 변경에 대해 REDO 실행 (UNDO는 COMMIT 된 지점이 없음)
(2) 검사점 회복 기법(Checkpoint Recovery)
장애 발생 시 검사점(Checkpoint) 이전에 처리된 트랜잭션은 회복에서 제외하고 검사점 이후에 처리된 트랜잭션은 회복 작업 수행
- 검사점 이후, 장애 발생 이전에 commit 한 경우: Redo
- 장애 발생 시점까지 commit 되지 못한 경우: Undo
- 철회 불가하며 검사점부터 회복 작업 수행
- 회복시간 절약
(3) 그림자 페이징 회복 기법(Shadow Paging Recovery)
트랜잭션이 실행되는 메모리 상의 Current Page Table과 하드디스크의 Shadow Page Table 이용
트랜잭션 시작 시점에 Current Page Table과 동일한 Shadow Page Table 생성
- 트랜잭션이 성공: Shadow Page Table 삭제
- 트랜잭션이 실패: Shadow Page Table을 Current Page Table로 대체
- 일정 크기 페이지 단위로 구성
- 각 페이지 복사는 그림자 페이지
- ROLLBACK: 그림자 페이지로 대체
(4) 미디어 회복 기법(Media Recovery)
디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법
데이터베이스 내용을 백업, 미러링, RAID 통해서 별도의 물리적 저장장치에 덤프
미디어 장애 시 가장 최근 덤프로 복구하고 로그 파일을 참조해 덤프 이후의 작업 Redo (Undo는 사용되지 않음)
(5) ARIES 회복 기법
(5.1) REDO 중 Repeating history
붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행
붕괴가 발생했을 때 완료되지 않은 상태였던 진행 트랜잭션은 UNDO
(5.2) UNDO 중 Logging
UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 경우, 이미 완료된 UNDO 연산은 반복하지 않음
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]4.프로그래밍 언어 활용/서버 프로그램 개발 환경 구축/서버 개발 (0) | 2022.07.02 |
---|---|
[정보처리기사]4.프로그래밍 언어 활용/서버 프로그램 개발 환경 구축/개발환경 구축 (0) | 2022.07.02 |
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터 전환 (0) | 2022.07.01 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/병행제어 (0) | 2022.06.19 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/쿼리성능 최적화 (0) | 2022.06.18 |