MSSQL에서는 DB 백업에 대한 복구 모델로 3가지(Full, Bulk-logged, Simple)을 지원한다.

여기서 말하는 '복구 모델'이란, 해당 DB의 옵션이 트랜잭션 로그파일에 어떤식으로 기록하는지에 대한 정의를 내리는 부분이다.

 

SSMS 상에서는 다음과 같이 들어가서 해당 DB가 어떤 복구 모델로 세팅되어 있는지 확인 및 수정 가능하다.

해당 DB 마우스 우클릭 - [Properties] 선택
왼쪽 상단 [Options] 클릭 - 'Recovery model' 에서 해당 복구모델 확인 및 수정

 

그렇다면 3가지의 복구 모델(Recovery model)이 각각 어떤 녀석들인지에 대해 알아보자!

  1. Full (전체 복구 모델)
    - 모든 작업에 대해 트랜잭션 로그가 기록됨.
    - 문제가 발생한 시점까지 원하는 시점을 선택하여 복구가 가능함.
    - Default로 설정되어 있는 복구 모델.
    - 모든 작업에 대해 로그가 기록되므로, 로그 데이터가 가장 많이 쌓이고 성능이 가장 떨어짐.
    - Full Backup, Differential Backup, Transaction Backup 모두 가능.


  2. Bulk-logged (대량 로그 복구 모델)
    - 대량 로그 작업이 발생할 경우
      (BCP, BULK INSERT, INSERT INTO SELECT, CREATE INDEX, ALTER INDEX REBUILD 등) 에만
    로그 파일에 이러한 작업이 일어났다는 것을 기록함.
    - 대량 로그 작업이 일어난 이후에 추가되거나 변경된 내용은 트랜잭션 로그 파일에 기록하지 않음.
    - 백업의 끝으로는 복구가 가능. But, 원하는 시점(백업의 중간 부분)으로는 복구 불가!
    - 대량 로그 작업 외의 내용은 로그에 기록하지 않음으로써,
      로그가 더 적게 남게 되고 성능이 Full 모델에 비해 더 높음.
      => 디스크 성능이 좋아지면서 잘 사용하지 않게 되었다...?
    - Full Backup, Differential Backup, Transaction Backup 모두 가능.


  3. Simple (단순 복구 모델)
    - 트랜잭션 로그 파일에 아무것도 기록되지 않는다고 보면 됨.
    - SQL Server(DBMS)가 로그파일을 전적으로 관리하는 모델이며, 
      DBMS가 메모리와 HDD의 Sync를 맞추는 시점마다 Sync 작업 후 트랜잭션 로그를 삭제함.
    - 따라서, 트랜잭션 로그를 사용한 DB 복원이 불가!
      장애 발생 시, Full Backup or Differential Backup만 가능하다!
    - 문제점이 발생된 시점까지는 데이터를 복구할 수 없고, 마지막에 백업 해놓은 데이터까지만 복구가 가능.

 

DB의 Recovery model(복구 모델)을 변경하는  SQL 구문은 다음과 같다.

  • ALTER DATABASE (DB 이름) SET RECOVERY FULL;                 : 전체 복구 모델로 설정.
  • ALTER DATABASE (DB 이름) SET RECOVERY BULK_LOGGED;    : 대량 로그 복구 모델로 설정.
  • ALTER DATABASE (DB 이름) SET RECOVERY SIMPLE;              : 단순 복구 모델로 설정.

 

참고자료

https://mozi.tistory.com/294

 

[MsSQL] 데이터베이스 모델과 백업, 스냅샷 방법 및 종류 알아보기

MSSQL 은 데이터베이스에 백업을 위한 3가지 모델(전체, 대량 로그, 단순)을 지원하며, 백업의 종류는 전체, 차등, 로그 백업으로 구성됩니다. 이해가 좀 어려울 수 있는 데, 간단히 설명드리겠습니

mozi.tistory.com

https://m.blog.naver.com/ohmydata00/221197539437

 

MS-SQL Backup에 관하여

MS-SQL 데이터베이스는 DB의 데이터들을 두 가지 형태로 저장합니다. 하나는 실제 데이터들이 저장...

blog.naver.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기