DB/MS-SQL

복구 모델(Recovery Model)

채윤아빠 2008. 5. 14. 14:47
728x90
반응형
# 복구 모델이란?
데이터베이스에 트랜잭션이 발생하였을 때 트랜잭션을 로그에 기록하는 범위를 지정해 놓은 것입니다.
장애 발생시 데이터 손실을 취소화하기 위한 계획을 세우는데 필수적으로 고려해야할 부분으로 데이터베이스 백업과 밀접한 관계가 있습니다.


# 데이터베이스 복구 모델의 종류 및 차이점
1) 단순(Simple)
- 트랜잭션 로그를 자동으로 삭제
- 데이터가 중요하지 않고, 쉽게 재생성이 가능한 경우
- 테스트나 개발에 사용하는 DB
- 마지막 백업 이후의 데이터는 복구 불가능. 백업을 하지 않은 경우에는 데이터 복구 불가능
- 트랜잭션 로그를 백업할 수 없음

2) 대량 로그(Bulk Logged)
- 데이터가 중요하지만, 대량의 벌크 로그는 로그를 남기지 않도록 할 경우(BULK INSERT, CREATE INDEX, SELECT INTO, 기타 등등)
- 벌크 로그가 생성되는 명령을 사용하지 않고, 사용하더라도 특별한 경우에만 이용하는 경우
- 장애가 발생한 시점까지 복구 가능하나 원하는 시점까지 복구는 불가능

3) 전체(Full)
- 모든 트랜잭션을 로그에 기록
- 데이터가 중요하고, 벌크 로그도 중요한 경우
- 문제 발생 시점까지 복구 가능하고 원하는 시점까지도 복구 가능
- 데이터베이스 미러링에서는 반드시 전체(Full) 복구 모델이 필요


# 복구 모델 변경 방법
1) SSMS를 이용한 방법
데이터베이스 "등록정보" > "옵션" 에서 복구 모델을 변경할 수 있습니다.


2) T-SQL을 이용한 방법
다음과 같은 명령을 이용하여 복구 모델을 변경할 수 있습니다.
-- set to Full recovery
ALTER DATABASE AdventureWorks SET RECOVERY FULL
GO

-- set to Bulk Logged recovery
ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED
GO


-- set to Simple recovery
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE
GO