SQL Server/SQL Server Tip

백업 전략과 Differential Database Backup

SungWookKang 2015. 7. 17. 10:04
반응형

백업 전략과 Differential Database Backup

 

  • Version : SQL Server 2000, 2005, 2008, 2008R2, 2012

 

데이터베이스를 운영하다 보면 비즈니스 특성, 데이터의 사이즈, 정책 등을 고려하여 여러 가지 백업 전략을 세워야 할 때가 있다.

지난 시간에는 큰 용량의 데이터베이스 백업을 빠르게 하기 위하여 스트라이프 백업에 대해서 알아 보았다.

스트라이프 백업 : http://sqlmvp.kr/140172045344

 

이번 아티클에는 디스크 공간에 대한 백업 전략을 차등 데이터베이스 백업을 통하여 알아 보자. (차등 백업에는 차등 데이터베이스 백업, 차등 부분 백업, 차등 파일 백업 이 있지만 이번 시간에는 차등 데이터베이스 백업에 대해서 알아 보자.)

차등백업 : 차등 백업은 전체 백업을 기반으로 전체 백업 이후 변경된 데이터만 캡처한다. 즉 변경된 데이터만 백업 한다.

 

우선 일반적인 백업 시나리오를 생각해 보자. 대부분의 DBA들은 일 전체 백업과 트랜잭션 로그 백업, 그리고 다음 날 또 일 전체 백업, 트랜잭션 로그 백업 이렇게 진행 하고 있을 것이다.

여기에서 한기지 생각 해보자. 전체 백업을 계속 하게 되면 최신의 데이터를 유지 하지만 변경되지 않는 데이터 또한 백업하게 되므로 디스크 공간이 중복으로 낭비가 되는 이슈가 발생한다. 만약 디스크 공간이 적은데 많은 날짜의 데이터를 백업해야 한다면 어떻게 될까?

 

그래서 다음과 같이 차등 백업을 이용한 백업 전략을 선택 할 수가 있다. 우선 백업 기반이 되는 전체 백업을 진행 한다. 그리고 매일 변경되는 데이터에 대해서만 차등 백업을 진행한다. 그러면 변하지 않는 데이터는 백업을 하지 않으므로 증가된 데이터 만큼의 공간만 필요하게 된다. 즉 많은 양의 백업을 보관을 할 수 있다. 그리고 어느 정도 차등 백업의 파일이 많아지면 주 단위로 전체 백업을 진행하면 백업시간의 단축과 함께 디스크 공간에 따른 패널티도 해소되리라 생각한다.

 

 

SSMS에서 차등 백업 방법과 스크립트를 통한 차등 백업 방법에 대해서 알아 보자.

백업 방법은 전체 백업 방식과 동일하다. 다만 옵션 선택을 변경 하면 된다.

 

우선 차등 백업을 하기 전 반드시 기반이 되는 전체 백업을 진행 하여야 한다.

 

 

전체 백업이 완료 되고 나면 다음 그림과 같이 [백업 유형]에서 차등 백업을 선택하여 백업을 진행한다.

 

 

스크립트를 통한 차등 백업

BACKUP DATABASE SW_TEST TO DISK = 'D:\SQL_BACKUP\SW_TEST.BAK'

GO

BACKUP DATABASe SW_TEST TO DISK = 'D:\SQL_BACKUP\SW_TEST_DIFF1.BAK' WITH DIFFERENTIAL

GO

BACKUP DATABASe SW_TEST TO DISK = 'D:\SQL_BACKUP\SW_TEST_DIFF2.BAK' WITH DIFFERENTIAL

GO

 

 

 

전체백업 및 차등백업의 헤더 정보를 살펴보면 [BackupType]을 통해서 확인 할 수 있다.

 

 

차등 백업을 복원하는 방법은 어떻게 하는가? 기존의 데이터베이스 복원방법과 동일 하다. 우선 전체백업 파일을 복원한다.

 

 

전체백업 파일 복원이 완료되고 차등백업을 복원할 때에는 [복원할 백업 셋트의 원본 위치]를 [데이터베이스]로 선택한 다음 복원할 차등파일을 선택 한다.

 

 

 

 

스크립트를 통한 복원 방법.

RESTORE DATABASE SW_TEST FROM DISK = 'D:\SQL_BACKUP\SW_TEST.BAK' WITH NORECOVERY, REPLACE

GO

RESTORE DATABASE SW_TEST FROM DISK = 'D:\SQL_BACKUP\SW_TEST_DIFF1.BAK' WITH NORECOVERY, REPLACE

GO

RESTORE DATABASE SW_TEST FROM DISK = 'D:\SQL_BACKUP\SW_TEST_DIFF1.BAK' WITH RECOVERY

GO

 

 

차등 백업 및 복원에 대해서 알아 보았다.

백업은 DBA의 역할 중 가장 중요 하다. 나의 비즈니스 환경을 잘 파악하여 최적의 백업 전략 및 복구 전략을 세우는 것도 DBA 큰 역할이라 생각한다.

 

2012-11-08 / 강성욱 / http://sqlmvp.kr

 

반응형