백업 및 복구
백업 및 복구
지속성과 성능이 양립하는 구조
로그 선행 기법
WAL(Write-ahead logging)이라고 부르면, 시스템에서 모든 수정은 적용 이전에 로그에 기록된다. 예를 들어서 특정 프고그램이 진행되는 동안 정전이 일어났다고 가정해보자. 다시 시작할 때 프로그램은 어느 작업이 수행을 성공적으로 마쳤는지, 실패했는지 등의 정보를 알고 있어야 한다. 로그 선행 기법을 사용한다면 프로그램은 이러한 로그를 검사하여 예기치 않은 정전 시 해야 할 일과 실제 했던 일을 비교하게 된다.
데이터베이스 버퍼
데이터 파일로의 입력을 데이터 베이스 버퍼를 경유해서 하도록 한다. (성능 양립을 위해서 )
순서 :
- 갱신 대상의 데이터 포함한 블록이 버퍼풀에 있는지 확인
- 없을 경우 데이터 파일로부터 해당 블록을 읽어 들임.
- 버퍼 풀 내의 해당 블록을 갱신 수행
- 갱신 내용이 Commit 과 함께 로그에 기록
- 갱신 되었지만 데이터 파일에 쓰이지 않은 블록은 Dirty 블록이 됨.
- 갱신된 데이터 블록은 나중에 정리되어 데이터 파일에 적용됨(체크 포인트)
- 체크포인트 이전 로그 파일은 불필요 하게 됨
- 갱신과 더불어 위 순서 반복
Crash 복구 흐름
Crash 가 발생하면
- WAL : 마지막으로 Commit 된 트랜잭션의 갱신 정보 가짐
- 데이터베이스 버퍼 : Crash 로 내용이 전부 소실
- 데이터베이스 파일 : 최후 체크포인트까지의 갱신 정보 가짐.
-> 데이터 베이스 파일을 Crash 전 최신 Commit 상태로 수정함.
백업 및 복구
백업의 3가지 관점
- 핫 백업과 콜드 백업
- 논리 백업과 물리 백업
- 풀 백업과 부분(증분/차등) 백업
핫백업과 콜드 백업
핫 백엄 : 온라인 백엄/ 데이터 베이스 기능 이용, 데이터 베이스를 정지 하지 않고 백업 데이터를 얻음
콜드 백업 : 오프라인 백업 / OS 기능 이용, 서버를 내림고 데이터 베이스도 종료 시키고 OS 명령으로 복사
논리 백업과 물리 백업
논리 백업 : SQL 기반 텍스트 형식으로 백업 데이터 기록
- 장점 : 이식성 우수, 편집가능, 이기종 간의 DB 이행 유리
- 단점 : 물리 백업보다 느림, 용량이 큼
물리 백업 : 데이터 영역을 그대로 덤프 하는 이미지로 바이너리 형식 기록
- 장점 : 최소 크기로 데이터 얻음, 백업 및 복원의 속도가 빠름
- 단점 : 일부 데이터의 내용 수정은 불가능, 호완성이 좋지 않음.
풀 백업꽈 부분 백업
풀백업(전체 백업) : 데이터 베이스 전체 데이터를 매일 백업
부분 백업 : 풀 백업 이후 갱신된 데이터를 백업
- 차등 백업
- 증분 백업