백업 및 복구

백업 및 복구

지속성과 성능이 양립하는 구조

로그 선행 기법

WAL(Write-ahead logging)이라고 부르면, 시스템에서 모든 수정은 적용 이전에 로그에 기록된다. 예를 들어서 특정 프고그램이 진행되는 동안 정전이 일어났다고 가정해보자. 다시 시작할 때 프로그램은 어느 작업이 수행을 성공적으로 마쳤는지, 실패했는지 등의 정보를 알고 있어야 한다. 로그 선행 기법을 사용한다면 프로그램은 이러한 로그를 검사하여 예기치 않은 정전 시 해야 할 일과 실제 했던 일을 비교하게 된다.

데이터베이스 버퍼

데이터 파일로의 입력을 데이터 베이스 버퍼를 경유해서 하도록 한다. (성능 양립을 위해서 )

순서 :

  1. 갱신 대상의 데이터 포함한 블록이 버퍼풀에 있는지 확인
  2. 없을 경우 데이터 파일로부터 해당 블록을 읽어 들임.
  3. 버퍼 풀 내의 해당 블록을 갱신 수행
  4. 갱신 내용이 Commit 과 함께 로그에 기록
  5. 갱신 되었지만 데이터 파일에 쓰이지 않은 블록은 Dirty 블록이 됨.
  6. 갱신된 데이터 블록은 나중에 정리되어 데이터 파일에 적용됨(체크 포인트)
  7. 체크포인트 이전 로그 파일은 불필요 하게 됨
  8. 갱신과 더불어 위 순서 반복

Crash 복구 흐름

Crash 가 발생하면

  • WAL : 마지막으로 Commit 된 트랜잭션의 갱신 정보 가짐
  • 데이터베이스 버퍼 : Crash 로 내용이 전부 소실
  • 데이터베이스 파일 : 최후 체크포인트까지의 갱신 정보 가짐.

-> 데이터 베이스 파일을 Crash 전 최신 Commit 상태로 수정함.

백업 및 복구

백업의 3가지 관점

  1. 핫 백업과 콜드 백업
  2. 논리 백업과 물리 백업
  3. 풀 백업과 부분(증분/차등) 백업

핫백업과 콜드 백업

핫 백엄 : 온라인 백엄/ 데이터 베이스 기능 이용, 데이터 베이스를 정지 하지 않고 백업 데이터를 얻음

콜드 백업 : 오프라인 백업 / OS 기능 이용, 서버를 내림고 데이터 베이스도 종료 시키고 OS 명령으로 복사

논리 백업과 물리 백업

논리 백업 : SQL 기반 텍스트 형식으로 백업 데이터 기록

  • 장점 : 이식성 우수, 편집가능, 이기종 간의 DB 이행 유리
  • 단점 : 물리 백업보다 느림, 용량이 큼

물리 백업 : 데이터 영역을 그대로 덤프 하는 이미지로 바이너리 형식 기록

  • 장점 : 최소 크기로 데이터 얻음, 백업 및 복원의 속도가 빠름
  • 단점 : 일부 데이터의 내용 수정은 불가능, 호완성이 좋지 않음.

풀 백업꽈 부분 백업

풀백업(전체 백업) : 데이터 베이스 전체 데이터를 매일 백업

부분 백업 : 풀 백업 이후 갱신된 데이터를 백업

  • 차등 백업
  • 증분 백업