데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

복사 전용 백업(COPY ONLY BACKUP)

 

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

 

데이터베이스를 운영하다 보면 최신의 데이터 스냅샷이 필요하거나 데이터를 다른 곳에 복원할 필요가 있을 때 흔히 백업을 많이 사용한다. 하지만 일반 적인 백업은 백업 시퀀스에 영향을 주게 되므로 전체적인 복원 시나리오에 영향을 미치게 된다.

복사 전용 백업은 기존의 SQL Server 백업 시퀀스와 독립적으로 작용 한다. 따라서 복원 시나리오에 영향을 받지 않게 된다. 백업 전체에 영향을 주지 않고 특별한 용도로 백업을 수행하여 데이터 및 프로시저를 복원하는데 유용하게 사용할 수 있다.

  • SQL Server 2005 이상부터 지원한다.
  • 복사 전용 전체 백업은 차등 백업으로 사용 될 수 없으며 차등 기반에 영향을 미치지 않는다.
  • 복사 전용 백업 이후에는 트랜잭션 로그를 자를 수 없다.

 

다음 시나리오를 가정해 보자. 나는 매일 전체 백업과 시간 단위로 차등백업을 하고 있다. 그리고 복원을 위해 자동화 스크립트를 생성해서 사용하고 있다. 만약 영업부서에서 현재 시점의 최신 데이터가 필요하여 이를 따로 복원해 달라고 한다.

이때 일반 백업을 하게 되면 나의 전체적인 복구 시나리오(일 전체 백업과 차등백업의 자동 복원 시나리오)에 문제가 발생한다. 백업 시퀀스가 중간에 변경되기 때문에 복원을 위해서는 영업부서에서 요청한 백업파일이 함께 필요 하기 때문이다. 뿐만 아니라 자동화된 스크립트를 수정해야 하는 문제까지 발생한다. 하지만 복사 전용백업을 이용하면 백업 시퀀스에 영향을 주지 않으므로 자동화된 복원 시나리오에 영향을 주지 않는다.

 

 

일반 백업을 진행하여 백업 시퀀스를 확인해 보자. 백업 시퀀스가 변경 되는 것을 확인 할 수 있다.

세션1

세션2

--LSN 확인

SELECT

    NAME AS [DB_NAME], DIFFERENTIAL_BASE_LSN

FROM

    SYS.MASTER_FILES WHERE DATABASE_ID = DB_ID('SW_TEST') AND TYPE_DESC = 'ROWS'

 
 

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

GO

--LSN 확인

SELECT

    NAME AS [DB_NAME], DIFFERENTIAL_BASE_LSN

FROM

    SYS.MASTER_FILES WHERE DATABASE_ID = DB_ID('SW_TEST') AND TYPE_DESC = 'ROWS'

 

 

 

 

복사 전용 백업 방법에 대해서 알아 보자. SSMS를 이용한 방법에는 다음과 같이 [데이터베이스 백업]창에서 [복사 전용 백업]을 체크 한다.

 

 

스크립트를 이용한 백업

세션1

세션2

--LSN 확인

SELECT

    NAME AS [DB_NAME], DIFFERENTIAL_BASE_LSN

FROM

    SYS.MASTER_FILES WHERE DATABASE_ID = DB_ID('SW_TEST') AND TYPE_DESC = 'ROWS'

 
 

insert into TBL_A values (1000)

go 100

 

BACKUP DATABASE SW_TEST TO DISK = 'D:\SQL_BACKUP\SW_TEST.BAK' WITH INIT, COPY_ONLY

GO

 

SELECT

    NAME AS [DB_NAME], DIFFERENTIAL_BASE_LSN

FROM

    SYS.MASTER_FILES WHERE DATABASE_ID = DB_ID('SW_TEST') AND TYPE_DESC = 'ROWS'

 

 

복사 전용 백업을 하면 백업 시퀀스가 유지 되는 것을 확인 할 수 있다. MSDB의 백업 세트 정보를 확인해 보자.

SELECT

DATABASE_NAME, BACKUP_START_DATE, IS_COPY_ONLY,FIRST_LSN

FROM MSDB..BACKUPSET

WHERE database_name = 'SW_TEST'

 

 

위 그림을 보면 IS_COPY_ONLY의 값이 1이면 복사 전용백업이 진행된 것이다. 백업 시퀀스를 확인해 보자. 일반적인 전체 백업의 시퀀스가 유지됨을 확인 할 수 있다.

 

복사 전용 백업을 잘 활용하면 전체적인 시스템의 시나리오를 변경하지 않고도 전체 데이터베이스를 백업하여 보관할 수 있다.



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1691 SQL Server에 연결된 어플리케이션 드라이버 버전 확인 jevida(강성욱) 2016.09.13 884
1690 SQL Server 성능 대시보드 jevida(강성욱) 2016.09.13 2216
1689 SSMS를 이용한 데이터베이스 복사 하기 jevida(강성욱) 2016.09.13 11538
1688 SQL Server에서 DB2 링크드 서버 연결 방법 jevida(강성욱) 2016.09.13 3288
1687 SQL Server 인덱스 활성 / 비활성 하기 jevida(강성욱) 2016.09.13 2352
1686 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 jevida(강성욱) 2016.09.13 1687
1685 Read the End of a Large Error Log (에러로그 끝 부분 읽기) jevida(강성욱) 2016.09.13 1299
1684 데이터베이스 여유공간 확인 jevida(강성욱) 2016.09.13 1445
1683 FILE GROUP 간 데이터 이동 jevida(강성욱) 2016.09.13 1601
1682 문서화 되지 않은 sys.fn_PhysLocFormatter 함수 jevida(강성욱) 2016.09.13 948
1681 SQL Server 관리자 전용 연결(DAC) jevida(강성욱) 2016.09.13 3390
1680 파일 접근 권한으로 인한 DB복원 실패 작업 해결하기 jevida(강성욱) 2016.09.13 1934
1679 DBCC CHECKDB 실행과 히스토리 관리 jevida(강성욱) 2016.09.13 1846
1678 MDF를 이용한 데이터베이스 복원 jevida(강성욱) 2016.09.13 1174
1677 EventID 3041 Error jevida(강성욱) 2016.09.13 1417
1676 데이터베이스 미러 백업 jevida(강성욱) 2016.09.13 1313
1675 SNAPSHOT을 이용한 SQL Server 복원 jevida(강성욱) 2016.09.13 2315
» 복사 전용 백업(COPY ONLY BACKUP) jevida(강성욱) 2016.09.13 3375
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4066
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4562





XE Login