이 게시글은 패스트캠퍼스의 '데이터베이스와 SQLD 합격패스 Online' 강의를 요약한 내용입니다.


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


로그 선행 기입 기법

로그선행기입(write - ahead logging, WAL)을 사용하는 시스템에서 모든 수정은 적용 이전에 로그에 기록된다.


데이터베이스 버퍼

데이터 파일로의 입력을 데이터베이스 버퍼 경유로 일원화

<1번 그림>

  1. 갱신 대상의 데이터를 포함한 블록이 버퍼풀에 있는지 확인
  2. 없을 경우 데이터 파일로부터 해당 블록을 읽어들임

<2번 그림>

  1. 버퍼 풀 내에 해당 블록을 갱신 수행
  2. 갱신 내용이 COMMIT과 함께 로그에 기록
  3. 갱신되었지만 데이터 파일에 쓰이지 않는 블록은 Dirty 블록이 됨

<3번 그림>

  1. 갱신된 데이터 블록은 나중에 정리되어 데이터 파일에 적용 (체크포인트)
  2. 체크포인트 이전 로그 파일은 불필요하게 됨
  3. 갱신과 더불어 위 순서 반복

Crash 복구에 필요한 항목

  1. WAL
  2. 데이터베이스 버퍼
  3. 데이터베이스 파일

Crash 발생 시 복구 과정

  1. WAL : 마지막으로 COMMIT된 트랜잭션의 갱신 정보를 가지고 있음
  2. 데이터베이스 버퍼 : Crash로 내용이 전부 소실
  3. 데이터베이스 파일 : 최후 체크포인트까지의 갱신 정보 가지고 있음

Crash 이후 DBMS 서버 재시작

  1. 데이터베이스 파일을 Crash 전 최신 COMMIT 상태로 수정 (롤 포워드 단계)


2. 백업 및 복구

백업은 3가지 관점을 통해 나눌 수 있다.

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

2.1 핫백업과 콜드 백업

1. 핫 백업
온라인 백업 / 데이터베이스 기능 이용
백업 대상인 데이터베이스를 가동한 상태로 백업 데이터를 얻음

2. 콜드 백업
오프라인 백업 / OS 기능 이용
백업 대상인 데이터베이스를 정지한 상태로 백업 데이터를 얻음
서버 Shutdown, 데이터 디렉토리의 파일 전부를 OS 명령으로 복사


2.2 논리 백업과 물리 백업

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

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

3. 장단점

논리백업은 편집 및 수정이 가능하며, 이식성이 우수하다는 장점이 있다.
반면 물리백업보다 용량이 크며, 백업과 복원속도가 느린 것이 단점이다.

물리백업은 용량이 작으며, 백업과 복원속도가 빠르다는 장점이 있다.
반면 복원 단위가 각각 다르고 일부 데이터의 경우 수정이 불가능하며, 호환성이 좋지 않다.


2.3 풀 백업과 부분 백업

1. 풀 백업
데이터베이서 전체 데이터를 매일 백업

2. 부분 백업
풀 백업 이후 갱신된 데이터를 백업 (차등 백업, 증분 백업)

차등 백업

증분 백업

3. 장단점

풀 백업은 복원 처리가 단순하다는 장점이 있으나, DB 전체 백업으로 시간이 오래 걸리고 과도한 용량을 차지한다는 단점이 있다.

부분 백업은 백업의 시간이 짧고 용량이 작은 장점이 있으나, 복원 절차가 복잡하다는 단점이 있다.


DB관리 시 주의점

  1. 백업 파일들은 떨어진 곳에 각각 보관해야한다
  2. 장치를 지리적으로 서로 멀리 위치시켜 장소 자체를 장애로부터 보호해야한다.
  3. 장애 발생 시 신속하게 복구 가능하도록 운영 및 조건, 방법을 고려하여야 한다.
profile
안녕하세요

0개의 댓글

Powered by GraphCDN, the GraphQL CDN