Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  백업의 종류 복구 모델 너 뭐니? 
작성일시 : 2008. 1. 21. 16:11 | 분류 : SQL Server/Administration

참고 :
Inside Microsoft SQL Server 2000,
전문가로 가는 지름길 SQL Server 2000/2005,
포켓 컨설턴트 SQL 2005
http://sqlworld.pe.kr
MOC 및 MSDN 자료들....

제 글의 메인은 Inside Microsoft SQL Server 2000를 기반으로 작성되고 있습니다...
거의 copy 하는 수준으로...^^;; Windows internals에 비해 참 읽기 편합니다.

목차------------------------------------------------------------------------
DB 공부하기 1번째 : 선언적 데이터 무결성(Declarative Data Integrity) (http://maystyle.tistory.com/218)
DB 공부하기 2번째 : 트랜잭션 프로세싱 (http://maystyle.tistory.com/219)
DB 공부하기 3번째 : 데이터 파일과 트랜젝션 로그 파일
1. 왜 DB의 단편화가 일어나는 걸까? (http://maystyle.tistory.com/220)
2. 데이터 파일은 어떻게 쓰여질까? (Checkpoint) (http://maystyle.tistory.com/221)
3. 로그는 어떻게 쓰여질까? (http://maystyle.tistory.com/223)
4. 트랜잭션 로그의 기록과 복구 (http://maystyle.tistory.com/225)
5. 데이터 파일이 커질 때는 무슨일이 일어날까? (http://maystyle.tistory.com/231)
6. 데이터 파일은 어떻게 생겼을까? (http://maystyle.tistory.com/233)
7. 실제 Data 및 Log 파일 뜯어 보기 (예정 중)
DB 공부하기 4번째 : Backup 과 Restore
1. 무엇을 Backup 받아야 하나 (시스템 데이터베이스 소개)? (http://maystyle.tistory.com/236)
2. 백업의 종류 복구 모델 너 뭐니?

백업의 종류

- 전체 백업 (Full Backup)
데이터베이스 전체를 통째로 백업받는 것을 말한다. 만일 운영중인 데이터베이스가 그리 크지 않다면 전체 백업이 유용할 것이다. 하지만 운영중인 데이터베이스가 엄청난 사이즈라면 전체 백업을 받는 경우 너무 많은 시간이 소요되므로 그리 바람직하지 않다. 하지만 앞으로 살펴볼 다른 백업 방법을 사용한다 하더라도 처음에 한번은 전체 백업을 받아야 한다는 한다. 전체 백업은 다른 백업의 기초가 되게 된다.
- 차등 백업 (Differentiall Backup)
차등 백업이란 전체 백업을 받은 후 변경된 데이터만 백업 받는 방법이다. 전체 백업 이후 변경된 부분에 대한 백업을 받는 것으로써 전체 백업본이 복원된 이후에만 사용될 수 있다. (DCM 페이지에서 대응되는 값이 1인 페이지만 백업 받는다. 전체 백업을 받게 되면 해당 익스탠트에 대한 비트가 0으로 바뀌고 데이터가 변경되면 이 비트가 1로 바뀐다.)
- 트랜잭션 로그 백업 (Transaction Log Backup)
종종 차등 백업과 트랜잭션 로그 백업은 꽤 햇갈리기 좋다. 둘의 차이점을 말하자면 차등 백업은 데이터 즉 mdf, ndf를 트랜잭션 로그 백업은 로그 즉 ldf 백업 받는 것이다. 또한 복원 시 차등 백업은 딱 백업 받은 시점의 데이터만 복구가 가능하나 트랜잭션 로그 백업본의 경우 차등 백업 및 전체 백업 이후 트랜잭션 로그 백업을 받은 시점까지 1분 단위(설정 가능 기본 설정은 1분)로 복원이 가능하다. 트랜잭션 로그 백업은 복구 모델에 따라 달라진다.

복구 모델
문재 발생시 복원의 범위 및 트랜잭션 로그의 증가와 관련 SQL Server의 데이터베이스는 3가지 복구 모델을 가지고 있다.

- Full 복구 모델
데이터베이스 손상시 데이터 손실 위험을 최소로 줄여준다.
데이터베이스의 모든 동작이 로그에 완전하게 기록된다. 만약 Bulk insert 동작을 진행 된다면 삽입된 모든 행들이 완벽하게 기록된다. 단 로그를 백업 받고 shrink 하지 않는다면, 로그의 크기는 지속적으로 증가할 것이다. (인덱스 관련 작업도 트랜잭션 로그에 기록된다.) 물론 현재 로그가 살아 있다면 저장점을 이용하여, 가장 최근 지점으로 복구가 가능하다. (직접 해본적은 없다.)
방법 : SAVE TRAN 문을 통해 저장, Rollback Tran 문을 통해 Rollback
- BULK_LOGGED 복구 모델
별로 권하고 싶지 않다. Bulk한 작업이 있을 경우 해당 작업이 있었다는 최소의 데이터만 기록하게 된다. 모든 데이터 파일들은 BCM 페이지라 불리는 할당 페이지를 추가로 갖고 있는데, BCM 페이지의 각 비트들은 익스텐트를 나타낸다. 비트 값 1은 마지막 전체 데이터베이스 백업 이후에 최소한으로 로그에 기록된 벌크 동작에 의해 이 익스텐트가 변경되었다는 것을 의미한다. Bulk_logged 복구 모델은 트랜잭션 로그는 작겠지만 BCM 페이지를 스켄하고 트랜잭션 로그 자체와 함께 변경된 익스탠트까지 백업하기 때문에 백업본이 훨씬 커질 수 있다. 또한 Bulk 작업 도중 해당 트랜잭션이 중지되게 될 경우 변경된 부분까지만 적용되게 되고 전체 Rollback이 되지 않음으로 실질적으로 데이터에 문제가 발생할 수 있다.
단 시스템의 상태가 완벽하고 데이터에 대한 Bulk 작업이 필요할 경우 일시적으로 Full 모드에서 Bulk 모드로 변경하여, Disk에 대한 I/O를 획기적으로 줄인 Bulk 작업이 가능하다.
- SIMPLE 복구 모델
전체 백업과 차등 백업만 허용한다.

|