DB 회복기법

04.Database 2020. 6. 4. 14:09
728x90
반응형

(데이터회복 (Data Recovery) 정의) 데이터베이스 운영 도중 예기치 못한 장애(Failure)가 발생할 경우 데이터베이스를 장애 발생 이전의 일관성과 무결성을 복원하는 과정

(데이터 회복기법 종류) 로그기반(지연갱신/즉시갱신), 체크포인트, 그림자 페이징

 

 

[개념] DB운영중 예상치 못한 장애가 발생한 경우 DB를 장애발생 이전의 일관된 상태로 복원시키는 것

[조건] 데이터(중복), 아카이브(덤프), 로그(온라인로그,보관로그)

[기법]

중요요소(REDO,UNDO,회복관리기),

로그기반(즉시,지연,체크포인트),

페이징기반(그림자페이징) [즉지체그]

 

 

 

[장애유형] 실행,트랜잭션,시스템,미디어

[회복관리기] RMAN

・로그, 메모리 덤프등 이용 회복 기능 수행 DBMS의 핵심 구성 요소

・트랜잭션 실행 실패 시 로그 이용 모든 변화를 Undo

・로그를 이용하여 Redo도 수행

 

REDO/UNDO

 

[REDO(Forward Recovery)] : 최근 체크포인트 이전으로 복원 (Archive사본 + Log)

- DB내용 자체가 손상이 된 경우에 가장 최근의 복제본을 적재시킨 뒤 이 복제본 이후에 일어난 변경만을 로그를 이용하여 재실행하여 복구

[예] <Ti,Start>, <Ti, Commit> 둘다 --> REDO

 

[UNDO(Backward Recovery)] : 모든 변경내용 취소하여 복원 (Log + Backward 취소연산)

- DB내용 자체는 손상되지 않았지만 변경중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 로그를 이용하여 모든 변경을 취소시킴으로써 복구

[예] <Ti,Start>만 있고 <Ti,Commit>없으면 --> UNDO

 

즉시갱신기법

 

트랜잭션 활동 상태에서 갱신 결과를 DB에 즉시 반영하고 Log 기록

T수행도중 실패(로그이용 UNDO)

 

지연갱신기법

 

트랜잭션 단위가 종료될 때까지 DB Write 연산을 지연시키고, 동시에 DB 내역을 Log 보관후 트랜잭션이 완료되면 Log 를 이용하여 데이터베이스에 write 수행 회복기법

T종료시(REDO만수행) , T미종료시(Log 정보무시)

 

 

체크포인트 (Check Point)

 

[개념] 일정한 시간 간격으로 검사점(Check Point)을 로그파일에 기록하고, 장애 발생시 로그에 있는 가장 최근 체크포인트 레코드를 찾아 그 시점 이후의 로그만을 회복대상으로 수행

[절차] 1) Undo list, Redo list 생성 - 2개의 빈 리스트 생성

2) 활동중 트랜잭션 undo list 삽입 - 검사시점 설정시 활동중 트랜잭션 삽입

3) 시작로그기반 Undo list 삽입 - 로그 차례로 검색하면서 <Ti,Start>만나면 Ti를 Undo list에 삽입

4)Redo list 삽입 - <Ti,Commit>만나면 Ti를 undo list에서 삭제하고 redo list삽입

 

 

그림자 페이징 기법

 

메인메모리 - 현재 페이지 위치

하드디스크 - 그림자 페이지 위치

 

[개념] 트랜잭션의 첫번째 변경 연산 수행 직전의 상태를 그림자 페이지 테이블로 두었다가 시스템 붕괴, 트랜잭션 철회시 실행 직전 상태로 복귀시키는 기법

[단점] 트랜잭션 처리비용증가, 디스크내 데이터 분산, 알고리즘 확장불가

 

1)I/O가 많아서 트랜잭션 처리비용 증가

2)데이터가 페이지별로 분할되어 디스크내 분산

3)트랜잭션이 동시에 실행되도록 알고리즘 확장 불가

 

ARIES 회복기법

 

WAL, LSN(Log Sequence Number)Dirty Page 테이블

로그순번기록, 물리-논리 REDO연산

연산 최소화, 분석->REDO->UNDO

절취-비강제(STEAL-No FORCE) 방식

page보다 작은 단위에 대한 락킹 가능

 

[개념] WAL(로그선행기법)을 통해 기록된 LSN을 이용하여 DB를 회복하는 기법

[절차] 1)분석 - 붕괴발생 시점에 버퍼에 있는 수정된 페이지,트랜잭션 파악

REDO가 시작되어야 하는 로그 위치 결정

2)REDO - 분석에서 결정한 REDO시작위치에서 로그가 끝날때까지 REDO수행

로그 레코드 리스트 관리로 불필요한 REDO연산 방지

3)UNDO - 로그를 역순으로 읽으면서 진행 트랜잭션 연산 역순으로 UNDO

[데이터 구조] Log, Transaction Table, Dirty Page Table

[원칙] WAL, Repeating History During Redo, Logging Changes During Undo

 

로그에 begin_checkpoint 레코드를 기록

로그에 end_checkpoint 레코드를 기록

- 트랜잭션 테이블과 오손 페이지 테이블의 내용도 함께 저장

특수 파일에 begin_checkpoint 레코드 LSN을 기록

 

철회된 트랜잭션의 단위작업을 무효화할 때 CLR(Compensation log record)를 기록해 재붕괴 대응

 

 

로그선행기법

WAL(Write-Ahead Logging)

 

ACID중 AD 보장

REDO,UNDO 정보 포함

 

[개념] 시스템 고장 시 복구가 가능하게 하기 위한 정책. 데이터 페이지를 디스크에 쓰기 전에 항상 UNDO/REDO 로그를 디스크에 먼저 기록

[특징] Tx갱신시 DB버퍼보다 Log버퍼를 먼저 디스크에 기록해야함

DB버퍼가 먼저 디스크에 기록되는 경우에는 시스템 다운시 MM의 휘발성으로 인해 회복이 불가능

 

UNDO는 UPDATE 이전의 데이터를 포함

REDO는 UPDATE할 새 데이터를 포함

 

 

 

 

 

728x90

'04.Database' 카테고리의 다른 글

DB 성능개선 - 옵티마이저  (0) 2020.06.04
DB 성능개선 - DB 개선  (0) 2020.06.04
DB 언어  (0) 2020.06.04
DB 성능개선 - 인덱스  (0) 2020.06.04
DB 유형 - NOSQL - 카산드라  (0) 2020.06.03
Posted by Mr. Slumber
,