백업 전략과 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 SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 41446
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22475
1654 SSIS 로그 보관기간 설정 (CleanUp 기간 설정) jevida(강성욱) 2016.01.11 4413
1653 SSIS 패키지 보호 레벨 jevida(강성욱) 2016.01.11 3975
1652 DATABASE의 TABLE 및 COLUMN COMMENT 출력 joe 2015.09.10 7888
1651 백업 히스토리 모니터링 jevida(강성욱) 2015.03.31 11679
» 백업 전략과 Differential Database Backup jevida(강성욱) 2015.03.31 11299
1649 SQL ServerPoint in time recovery jevida(강성욱) 2015.03.31 9096
1648 Striping SQL Server Database Backup jevida(강성욱) 2015.03.31 8735
1647 SQL 서버 감사가 있는 데이터베이스 복원 후 설정 jevida(강성욱) 2015.03.31 12025
1646 SQL ServerBACKUP 암호화 jevida(강성욱) 2015.03.30 8922
1645 SQL ServerErrorLog 관리 jevida(강성욱) 2015.03.30 10737
1644 SSMS 개체 탐색기를 통한 세부 정보 보기 jevida(강성욱) 2015.03.30 11825
1643 SSMS 접속했던 서버 목록 삭제 jevida(강성욱) 2015.03.30 12693
1642 SSMS 빠른 실행 아이콘 등록 하기 jevida(강성욱) 2015.03.30 8080
1641 SSMS 단축키 jevida(강성욱) 2015.03.27 7850
1640 SSMS UI 기능을 이용한 스크립트 생성 [1] jevida(강성욱) 2015.03.27 6967
1639 SSMS 서버 그룹 등록 및 서버 등록 jevida(강성욱) 2015.03.27 8777
1638 SSMS 여러 개체 선택하기 jevida(강성욱) 2015.03.27 5222
1637 SSMS 서버리스트 내보내기 / 가져오기 jevida(강성욱) 2015.03.27 6546
1636 SSMS 자동복구 활성 / 비활성 jevida(강성욱) 2015.03.27 5043
1635 SSMS 시스템 데이터베이스 숨기기 jevida(강성욱) 2015.03.27 4857





XE Login