DATABASE

데이터베이스(DB) 장애와 회복

YoonJong 2022. 10. 29. 10:37
728x90

데이터베이스는 조직의 중요한 데이터를 보관하고 있는 만큼 장애가 발생했을 때 회복(복구) 하는 기능도 매우 중요하다.

회복은 장애가 발생하기 전의 상태로 되돌리는 것을 의미한다.

 

장애의 유형으로는 트랜잭션 장애, 시스템 장애, 미디어 장애로 나눈다.

트랜잭션 장애는 트랜잭션의 논리적 오류, 잘못된 데이터 입력, 시스템 자원 과다 사용 등 이유로 인해 발생한다.

시스템 장애는 하드웨어 이상으로 발생한 장애이다.

미디어 장애는 디스크 장치의 결함으로 발생한 장애이다.

 

데이터 베이스는 기본적으로 저장 장치에 저장되는데 저장 장치의 종류는 아래와 같다.

휘발성 저장장치 : 소멸성으로 장애가 발생하면 저장된 데이터가 손실된다.

비휘발성 저장장치 : 장애가 발생해도 저장된 데이터가 손실되지 않는다.

안정 저장 장치 : 비휘발성 저장 장치를 이용해 데이터 복사본을 여러개 만들어 놓는다.


회복을 위한 연산으로는 데이터베이스 전체를 다른 저장 장치에 주기적으로 복사하는 덤프기법

데이터베이스에서 변경 연산이 실행될 때마다 데이터 전 후 의 값을 별도의 파일에 기록하는 로그기법이 있다.

 

장애가 발생했을 때 기본적으로 복구하는 방법은 redo 또는 undo 연산을 사용하는 것이다.

redo(재실행) 는 가장 최근에 저장된 데이터베이스의 복사본을 가져온 후, 해당 시점 이후에 발생한 모든 변경 연산을 재실행해서 장애가 발생하기 직전의 데이터베이스 상태로 복구한다.

undo(취소) 는 지금까지 실행된 모든 변경 연산을 취소해서 데이터베이스 상태로 복구한다.

 

로그 회복기법

즉시 갱신 회복 기법

장애가 발생하면 로그 파일에 기록된 내용을 참조해서, 장애 발생 시점에 따라 redo, undo 연산을 통해 복구 한다.

 

아래와 같은 상황에서 1에러발생이 발생했을 경우에는 아직 트랜잭션1이 커밋 전이므로 undo 를 사용한다.

만약 트랜잭션 1은 정상커밋 후 2에러발생했을 경우, 트랜잭션2는 커밋전이기 때문에 를 트랜잭션2에 undo 를 사용하고

트랜잭션1은 redo 를 사용해 복구를 진행한다.

즉시 갱신 회복 기법

로그를 계속해서 저장하지 않고 트랜잭션 커밋(완료) 된 시점에 로그에 기록된 내용을 한번에 반영한다. undo 연산이 없다.

1에러발생 이면 로그 내용이 아직 저장되지 않았으므로, 그냥 로그내용을 무시하고 버려버리고, 트랜잭션의 수행을 다시 시작한다.

2에러발생 이면 트랜잭션2의 로그내용은 무시하고, 트랜잭션1 에서 저장된 로그 내용을 redo 를 사용해 복구한다.

 

즉시 갱신 회복 기법

위의 2가지 방법은 계속해서 로그를 특정 조건에 맞추어 저장하는 불편함이 있다.

즉시 갱신 회복 기법은 같은 로그 기록을 이용하지만, 일정 시간 간격으로 검사 시점을 만든다.

장애가 발생하면 가장 최근에 검사했던 시점으로 복구하여 회복시간이 단축된다는 장점이 있다.

728x90