분산 DBMS-데이터베이스 복구
데이터베이스 오류를 복구하기 위해 데이터베이스 관리 시스템은 여러 복구 관리 기술에 의존합니다. 이 장에서는 데이터베이스 복구를위한 다양한 접근 방식을 연구합니다.
데이터베이스 복구를위한 일반적인 전략은 다음과 같습니다.
데이터베이스 불일치를 초래하는 소프트 장애의 경우 복구 전략에는 트랜잭션 실행 취소 또는 롤백이 포함됩니다. 그러나 때때로 트랜잭션 재실행은 트랜잭션의 일관된 상태로 복구하기 위해 채택 될 수도 있습니다.
하드 장애로 인해 데이터베이스에 광범위한 손상이 발생하는 경우 복구 전략에는 아카이브 백업에서 데이터베이스의 과거 사본을 복원하는 것이 포함됩니다. 트랜잭션 로그에서 커밋 된 트랜잭션의 작업을 다시 실행하여 데이터베이스의 최신 상태를 얻습니다.
정전 복구
정전으로 인해 비 영구 메모리의 정보가 손실됩니다. 전원이 복구되면 운영 체제와 데이터베이스 관리 시스템이 다시 시작됩니다. 복구 관리자는 트랜잭션 로그에서 복구를 시작합니다.
즉시 업데이트 모드의 경우 복구 관리자는 다음 작업을 수행합니다.
활성 목록과 실패 목록에있는 트랜잭션은 취소되고 중단 목록에 기록됩니다.
커밋 이전 목록에있는 트랜잭션이 다시 실행됩니다.
커밋 또는 중단 목록의 트랜잭션에 대해 수행되는 작업은 없습니다.
지연된 업데이트 모드의 경우 복구 관리자는 다음 작업을 수행합니다.
활성 목록 및 실패 목록에있는 트랜잭션은 중단 목록에 기록됩니다. 변경 사항이 아직 디스크에 기록되지 않았으므로 실행 취소 작업이 필요하지 않습니다.
커밋 이전 목록에있는 트랜잭션이 다시 실행됩니다.
커밋 또는 중단 목록의 트랜잭션에 대해 수행되는 작업은 없습니다.
디스크 오류에서 복구
디스크 오류 또는 하드 크래시로 인해 전체 데이터베이스가 손실됩니다. 이 하드 크래시에서 복구하기 위해 새 디스크가 준비된 다음 운영 체제가 복원되고 마지막으로 데이터베이스 백업 및 트랜잭션 로그를 사용하여 데이터베이스가 복구됩니다. 복구 방법은 즉시 및 지연 업데이트 모드 모두에서 동일합니다.
복구 관리자는 다음 작업을 수행합니다.
커밋 목록과 커밋 이전 목록의 트랜잭션이 다시 실행되고 트랜잭션 로그의 커밋 목록에 기록됩니다.
활성 목록 및 실패 목록의 트랜잭션은 실행 취소되고 트랜잭션 로그의 중단 목록에 기록됩니다.
체크 포인트
Checkpoint레코드가 버퍼에서 데이터베이스에 기록되는 시점입니다. 결과적으로 시스템 충돌의 경우 복구 관리자는 체크 포인트 이전에 커밋 된 트랜잭션을 다시 실행할 필요가 없습니다. 주기적인 체크 포인트는 복구 프로세스를 단축합니다.
두 가지 유형의 체크 포인트 기술은 다음과 같습니다.
- 일관된 체크 포인트
- 퍼지 체크 포인트
일관된 체크 포인트
일관된 체크 포인트는 체크 포인트에서 일관된 데이터베이스 이미지를 생성합니다. 복구 중에 마지막 체크 포인트의 오른쪽에있는 트랜잭션 만 실행 취소되거나 다시 실행됩니다. 마지막 일관된 체크 포인트의 왼쪽에있는 트랜잭션은 이미 커밋되었으며 다시 처리 할 필요가 없습니다. 체크 포인트를 위해 취한 조치는 다음과 같습니다.
- 활성 트랜잭션은 일시적으로 중단됩니다.
- 주 메모리 버퍼의 모든 변경 사항이 디스크에 기록됩니다.
- "체크 포인트"레코드는 트랜잭션 로그에 기록됩니다.
- 트랜잭션 로그가 디스크에 기록됩니다.
- 일시 중지 된 트랜잭션이 재개됩니다.
4 단계에서 트랜잭션 로그도 보관 된 경우이 체크 포인트는 디스크 장애 및 정전 복구를 돕고, 그렇지 않으면 정전 만 복구하는 데 도움이됩니다.
퍼지 체크 포인트
퍼지 체크 포인트에서 체크 포인트시 모든 활성 트랜잭션이 로그에 기록됩니다. 정전의 경우 복구 관리자는 체크 포인트 및 이후에 활성화 된 트랜잭션 만 처리합니다. 체크 포인트 이전에 커밋 된 트랜잭션은 디스크에 기록되므로 다시 실행할 필요가 없습니다.
체크 포인트의 예
시스템에서 체크 포인트 시간은 tcheck이고 시스템 충돌 시간은 tfail이라고 생각해 봅시다. 다음 과 같은 네 개의 트랜잭션 T a , T b , T c 및 T d가 있다고 가정합니다.
T a 는 체크 포인트 전에 커밋합니다.
T b 는 체크 포인트 전에 시작되고 시스템 충돌 전에 커밋됩니다.
T c 는 체크 포인트 이후에 시작되고 시스템 충돌 전에 커밋됩니다.
T d 는 체크 포인트 이후에 시작되며 시스템 충돌시 활성화되었습니다.
상황은 다음 다이어그램에 묘사되어 있습니다.
복구 관리자가 수행하는 작업은 다음과 같습니다.
- T a 로는 아무 것도 수행되지 않습니다 .
- 트랜잭션 재실행은 T b 및 T c에 대해 수행됩니다 .
- T d에 대해 트랜잭션 실행 취소가 수행됩니다 .
UNDO / REDO를 사용한 트랜잭션 복구
트랜잭션 복구는 실패에서 복구하는 것이 아니라 잘못된 트랜잭션의 악영향을 제거하기 위해 수행됩니다. 오류가있는 트랜잭션에는 데이터베이스를 원하지 않는 상태로 변경 한 모든 트랜잭션과 오류가있는 트랜잭션에서 기록한 값을 사용한 트랜잭션이 포함됩니다.
이 경우 트랜잭션 복구는 2 단계 프로세스입니다.
잘못된 트랜잭션의 영향을받을 수있는 모든 잘못된 트랜잭션 및 트랜잭션을 실행 취소합니다.
결함이 없지만 결함이있는 트랜잭션으로 인해 취소 된 모든 트랜잭션을 REDO하십시오.
UNDO 작업 단계는 다음과 같습니다.
잘못된 트랜잭션이 INSERT를 수행 한 경우 복구 관리자는 삽입 된 데이터 항목을 삭제합니다.
결함이있는 트랜잭션이 DELETE를 수행 한 경우 복구 관리자는 로그에서 삭제 된 데이터 항목을 삽입합니다.
결함이있는 트랜잭션이 UPDATE를 수행 한 경우 복구 관리자는 로그에서 업데이트 전 값을 기록하여 값을 제거합니다.
REDO 작업 단계는 다음과 같습니다.
트랜잭션이 INSERT를 수행 한 경우 복구 관리자는 로그에서 삽입을 생성합니다.
트랜잭션이 DELETE를 완료 한 경우 복구 관리자는 로그에서 삭제를 생성합니다.
트랜잭션이 UPDATE를 수행 한 경우 복구 관리자는 로그에서 업데이트를 생성합니다.