백업 전략과 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 큰 역할이라 생각한다. 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp



No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 602
1666 Event Session을 이용한 Memory Health check jevida(강성욱) 2016.01.11 6965
1665 Event Session을 이용한 CPU Health check jevida(강성욱) 2016.01.11 8462
1664 DMV를 이용한 I/O Health check jevida(강성욱) 2016.01.11 7357
1663 CONCAT 함수 (문자열 연결하기)와 주의 사항 jevida(강성욱) 2016.01.11 28085
1662 SQL Server 2012 Columnstore Index jevida(강성욱) 2016.01.11 7572
1661 SQL Server 2012 File Stream / Table 관련 DMV jevida(강성욱) 2016.01.11 4881
1660 SQL Server2012 DMV – 메모리 덤프, 서비스, 구성 확인 jevida(강성욱) 2016.01.11 4809
1659 SQL Server2012 향상된 디버깅 기능 jevida(강성욱) 2016.01.11 4398
1658 SQL Server2012 매개 변수 구성 jevida(강성욱) 2016.01.11 3508
1657 SQL Server2012 도움말 설치 jevida(강성욱) 2016.01.11 3475
1656 SQL Server2012 Checkpoint 제어 jevida(강성욱) 2016.01.11 5348
1655 SSIS 패지키의 메타데이터 유효성 검사 중지하기 jevida(강성욱) 2016.01.11 2978
1654 SSIS 로그 보관기간 설정 (CleanUp 기간 설정) jevida(강성욱) 2016.01.11 4337
1653 SSIS 패키지 보호 레벨 jevida(강성욱) 2016.01.11 3898
1652 DATABASE의 TABLE 및 COLUMN COMMENT 출력 joe 2015.09.10 7774
1651 백업 히스토리 모니터링 jevida(강성욱) 2015.03.31 11638
» 백업 전략과 Differential Database Backup jevida(강성욱) 2015.03.31 11238
1649 SQL ServerPoint in time recovery jevida(강성욱) 2015.03.31 9067
1648 Striping SQL Server Database Backup jevida(강성욱) 2015.03.31 8705
1647 SQL 서버 감사가 있는 데이터베이스 복원 후 설정 jevida(강성욱) 2015.03.31 11920





XE Login