MSSQL에서는 DB 백업에 대한 복구 모델로 3가지(Full, Bulk-logged, Simple)을 지원한다.
여기서 말하는 '복구 모델'이란, 해당 DB의 옵션이 트랜잭션 로그파일에 어떤식으로 기록하는지에 대한 정의를 내리는 부분이다.
SSMS 상에서는 다음과 같이 들어가서 해당 DB가 어떤 복구 모델로 세팅되어 있는지 확인 및 수정 가능하다.
그렇다면 3가지의 복구 모델(Recovery model)이 각각 어떤 녀석들인지에 대해 알아보자!
- Full (전체 복구 모델)
- 모든 작업에 대해 트랜잭션 로그가 기록됨.
- 문제가 발생한 시점까지 원하는 시점을 선택하여 복구가 가능함.
- Default로 설정되어 있는 복구 모델.
- 모든 작업에 대해 로그가 기록되므로, 로그 데이터가 가장 많이 쌓이고 성능이 가장 떨어짐.
- Full Backup, Differential Backup, Transaction Backup 모두 가능. - Bulk-logged (대량 로그 복구 모델)
- 대량 로그 작업이 발생할 경우
(BCP, BULK INSERT, INSERT INTO SELECT, CREATE INDEX, ALTER INDEX REBUILD 등) 에만 로그 파일에 이러한 작업이 일어났다는 것을 기록함.
- 대량 로그 작업이 일어난 이후에 추가되거나 변경된 내용은 트랜잭션 로그 파일에 기록하지 않음.
- 백업의 끝으로는 복구가 가능. But, 원하는 시점(백업의 중간 부분)으로는 복구 불가!
- 대량 로그 작업 외의 내용은 로그에 기록하지 않음으로써,
로그가 더 적게 남게 되고 성능이 Full 모델에 비해 더 높음.
=> 디스크 성능이 좋아지면서 잘 사용하지 않게 되었다...?
- Full Backup, Differential Backup, Transaction Backup 모두 가능. - 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://m.blog.naver.com/ohmydata00/221197539437
'DB > SQL Server (MSSQL)' 카테고리의 다른 글
[MSSQL] 데이터 저장 방식 - Page(페이지), Extent(익스텐트) (0) | 2021.12.03 |
---|---|
[MSSQL] SQL Server 구조(아키텍처, Architecture) (0) | 2021.11.30 |
[MSSQL] 백업에 사용되는 기능과 옵션 (0) | 2021.11.24 |
[MSSQL] 백업 종류 - Full / Differential / Transaction (0) | 2021.11.24 |
[MSSQL] 데이터베이스 백업 & 복구 (단순히 뭔지만 볼때!) (0) | 2021.11.23 |
최근댓글