-
장애의 개념 및 종류
-
장애의 개념
시스템의 내적 또는 외적 문제로 시스템이 정상적으로 동작할 수 없는 상태를 의미
-
장애의 종류
-
데이터베이스 회복
-
로그-기반 회복 관리기
-
로그
- 안정된(Stable) 저장 장치에 저장됨
- 로그 레코드들의 연속(Sequence)으로 데이터베이스에 대한 변경 활동의 기록을 유지
-
로그 기록 과정
- 트랜잭션 Ti가 시작하면 <Ti, start> 로그 레코드가 로그에 기록
- 트랜잭션 Ti가 write(X)를 실행하기 전에 <Ti, X, 이전 값, 이후 값> 로그 레코드가 로그에 기록(Write-Ahead Logging(WAL) 규칙)
- 트랜잭션 Ti가 마지막 문을 실행하면 <Ti, commit> 로그 레코드가 로그에 기록
- 로그 레코드는 버퍼링 하지 않고 직접 안정된 저장 장치의 로그에 기록
-
데이터 베이스 회복의 전략
구분 |
내용 |
덤프 |
- 주기적으로 데이터베이스전체 또는 일부 내용을 별도의 저장 장치(즉, 디스크나 테이프)에 저장하는 것
- 기간(시간별, 일별, 주별)
|
로그 |
- 데이터베이스의 내용이 변경될 때마다 변경 내용을 로그 파일에 저장하는 것
- 장애 발생 시 로그 파일의 변경 전후의 내용을 이용하여 복구하는데, 로그 파일에 대한 백업이 필요
|
구분 |
내용 |
REDO |
- 장애 발생 시 로그로 부터 정보를 읽어 데이터베이스에 실제로 반영하는 작업을 수행
- 트랜잭션 Commit 이후의 상태로 회복
|
UNDO |
- 장애 발생 시 로그를 이용해 모든 변경을 취소하여 원래의 데이터베이스 상태로 복구
- 트랜잭션 수행 이전 상태로 회복
|
-
회복 관리기의 개념
- 회복 관리기는 로그, 메모리 덤프 등을 이용하여 회복 기능을 수행하는데, 로그는 일반적으로 REDO와 UNDO를 위해 <트랜잭션 id, 데이터 아이템, 이전 값, 이후 값> 형식을 가짐
- 회복 관리기는 트랜잭션 실행이 성공적으로 완료되지 못하면 로그를 이용하여 트랜잭션이 데이터베이스에 수행하였던 모든 변경을 취소(Undo)시켜, 트랜잭션 실행 이전의 원래 상태로 되돌리는 역할을 담당
- 트랜잭션의 실행이 성공적으로 종료되어 로그에는 기록되었지만 디스크에는 반영되지 않았을 경우 회복 시에 로그를 이용하여 재작업(Redo)을 수행