백업 미디어 세트에 압축 백업 추가하기

 

  • Version : SQL Server 2008, 2008R2, 2012

 

SQL Server 2008부터 도입된 압축 백업을 사용할 때 기존의 압축되지 않은 미디어 백업 세트에 추가하려고 시도하면 오류가 발생한다. 백업 미디어 세트와 백업 설정에 대해서 알아 보자.

 

이번 포스트는 SQL Server Premier Field Engineer Blog에 게시된 내용으로 필자가 읽고 이해한 내용을 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다.

 

백업 압축(http://msdn.microsoft.com/ko-kr/library/bb964719(SQL.100).aspx)에 대한 문서를 보면 압축된 백업과 압축되지 않은 백업은 미디어 세트에 동시에 존재 할 수 없다라는 제한사항이 있다.

 

기존 미디어 세트에 압축 백업을 추가할 때 미디어 세트는 압축 설정을 상속한다. 백업 압축에 의존하는 경우 sp_Configure를 설정하면 기존 미디어에 추가 되고 다른 압축 상태에서 백업을 끝낼 수 있다.

 

SQL Server 2008 Enterprise 이상에서 백업 명령어 구문에 WITH COMPRESSION 또는 WITH NO_COMPRESSION을 지정하지 않는 경우 sp_Configure를 설정하여 백업압축에 대한 기본 값을 설정 할 수 있다. (기본값 0 – 압축백업 하지 않음, 1 – 압축 백업)

 

새 미디어 세트를 만들 때 미디어 헤더에 압축 백업인지 기록 한다. 기존 미디어 세트로 압축 백업을 할 경우 압축 설정이 미디어 세트와 같을 경우만 가능하다. 따라서 압축 백업의 여부에 따라 백업 할 때의 동작 차이가 있다.

 

다음 표를 참고하여 압축된 백업과 일반 백업에 대한 미디어 세트 구성을 확인 할 수 있다.

 

실습을 통하여 미디어 세트와 백업의 관계에 대해서 알아보자. 다음 스크립트를 실행하여 현재의 백업에 대한 sp_configure 상태를 확인 한다.

(0 – 압축 안함(기본 값), 1 – 압축)

-- Note compression value, by default it should be 0

sp_configure 'backup compression'

 

 

FORMAT 옵션을 사용하여 백업 세트를 생성 한다.

-- Initial Backup completes successfully

BACKUP DATABASE SW_TEST TO DISK = N'E:\DB_Backup\testbackup.bak' WITH FORMAT, INIT,

NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10

GO

 

-- Check the backup and the header, not the Compressed value

restore headeronly from DISK = N'E:\DB_Backup\testbackup.bak'

 

 

위에서 일반 백업을 사용하여 미디어 세트를 생성하였으며 이번에는 압축 백업을 사용하여 기존 미디어 세트에 추가하여 보자.

-- Now backup using "with compression" and it will fail as backups ( compressed and non compressed cannot be mixed within the same media set )

BACKUP DATABASE SW_TEST TO DISK = N'E:\DB_Backup\testbackup.bak' WITH

NAME = N'testbackup-Full Database Backup', SKIP,NOREWIND,NOUNLOAD

,COMPRESSION , STATS = 10

GO

 

백업 구조의 불일치로 인하여 다음과 같은 오류가 발생 한다.

메시지 3098, 수준 16, 상태 2, 2

미디어가 호환되지 않는 구조로 포맷된 'COMPRESSION'() 요청되었으므로 백업을 수행할 없습니다. 미디어 세트를 추가하려면 'COMPRESSION'() 생략하거나 'NO_COMPRESSION'() 지정하십시오. 또는 BACKUP 문에서 WITH FORMAT 사용하여 미디어 세트를 만들 있습니다. 기존 미디어 세트에서 WITH FORMAT 사용하면 모든 백업 세트를 덮어씁니다.

메시지 3013, 수준 16, 상태 1, 2

BACKUP DATABASE() 비정상적으로 종료됩니다.

 

Sp_configure 설정을 압축 백업 사용으로 변경 한다.

-- Turn on default backup Compression at the server level

sp_configure 'backup compression',1

go

 

reconfigure

go

 

 

다음 스크립트를 사용하여 백업을 실행 하고 생성된 백업 파일의 헤더 정보를 살펴 보자. 우리의예상대로 라면 일반 백업 미디어 세트에 압축된 백업 미디어세트를 추가하려고 하기 때문에 오류가 발생할 것이다. 하지만 정상적으로 백업이 수행 되었다.

BACKUP DATABASE SW_TEST TO DISK = N'E:\DB_Backup\testbackup.bak' WITH

NAME = N'testbackup-Full Database Backup', SKIP,NOREWIND,NOUNLOAD , STATS = 10

GO

 

-- Check the backup and meadia set header

restore headeronly from DISK = N'E:\DB_Backup\testbackup.bak'

 

Sp_configure에서 백업 압축을 기본 속성으로 설정되어 있지만 기존 백업 미디어의 설정을 상속받아 추가 된 것을 확인 할 수 있다.

 

다음 스크립트를 사용하여 FORMAT 옵션을 사용하여 새로운 미디어 세트를 생성하고, INIT 옵션을 사용하여 기본의 벡업 세트를 덮어쓴다. 백업 파일의 헤더 정보를 살펴보면 다음과 같이 압축됨으로 표시된다. (현재 sp_configure 설정)

-- If you create a new media set using the FORMAT option, then the current compression setting is inherited

-- Create a new media set using FORMAT Or by specifying a new file

BACKUP DATABASE SW_TEST TO DISK = N'E:\DB_Backup\testbackup.bak' WITH FORMAT, INIT

, NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10

GO

-- Check the backup and meadia set header

restore headeronly from DISK = N'E:\DB_Backup\testbackup.bak'

 

 

다음 스크립트를 사용하여 sp_configure의 기본 값을 0(압축 백업 안함)으로 설정하고 FORMAT 옵션 없이 기존 미디어 세트에 압축을 진행한다. 그리고 INIT 옵션을 사용하여 덮어 쓴다.

-- Toggle the backup compression setting back to 0

sp_configure 'backup compression',0

go

 

reconfigure

go

 

-- backup to the same media set with INIT

BACKUP DATABASE SW_TEST TO DISK = N'E:\DB_Backup\testbackup.bak' WITH INIT

, NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10

GO

 

-- Check the backup and meadia set header

-- Note that even though we changed backup compression to 0, the old media header is preserved which has it as 1, and the backup goes as compressed

restore headeronly from DISK = N'E:\DB_Backup\testbackup.bak'

 

 

백업 파일의 헤더 정보를 살펴보면 기존의 미디어 세트 속성(압축 설정)에 따라 압축 설정이 1로 표시 된 것을 확인 할 수 있다.

 

또 다른 제약사항은 압축 백업과 NT 백업이 공존 할 수 없다는 것이다. (TAPE에 대한 백업은 원문을 참고 한다.)

 

 

[참고자료]

http://msdn.microsoft.com/ko-kr/library/bb677250(v=sql.100).aspx

 

 


강성욱 / 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 36470
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 19408
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1247
1873 SQL Server IO and Latch 설명 jevida(강성욱) 2016.10.11 3754
1872 마지막 백업 시간 및 DBCC 확인 [1] jevida(강성욱) 2016.10.08 1659
1871 DMV를 활용한 CPU 트러블슈팅 - Sys.dm_exec_query_stats, sys.dm_os_ring_buffers 활용 [1] jevida(강성욱) 2016.10.08 2032
» 백업 미디어 세트에 압축 백업 추가하기 jevida(강성욱) 2016.10.08 1571
1869 Collation에 따른 실행계획 변경과 성능 문제 jevida(강성욱) 2016.10.08 1718
1868 SQL Connection Timeout 디버깅 with BizTalk Server jevida(강성욱) 2016.10.08 2401
1867 인스턴스 파일 초기화 활성 jevida(강성욱) 2016.10.08 1790
1866 누락된 인덱스 확인하기 jevida(강성욱) 2016.10.08 3325
1865 비클러스터 인덱스 페이지 내용 jevida(강성욱) 2016.10.08 2072
1864 ATTACH DATABASE 오류 1314 jevida(강성욱) 2016.10.08 1208
1863 SQL Server 커넥션 풀링 jevida(강성욱) 2016.10.08 4712
1862 가상 SQL Server에 Hot Add vCPU 사용하기 jevida(강성욱) 2016.10.08 1149
1861 DDL 트리거를 활용한 ERRORLOG에 XEVENT 상태 기록하기 jevida(강성욱) 2016.10.08 1438
1860 쉐어포인트의 SQL Server 접속 문제 jevida(강성욱) 2016.10.08 1530
1859 Lazy Log Truncation jevida(강성욱) 2016.10.08 1402
1858 인덱스 구성과 상황에 따른 인덱스 성능 jevida(강성욱) 2016.10.08 1528
1857 Max worker thread 초과 이슈 jevida(강성욱) 2016.10.08 3142
1856 SQL Server Failover 클러스터 설치 트러블슈팅 jevida(강성욱) 2016.10.08 2571
1855 MAXDOP 극대화 하기 jevida(강성욱) 2016.10.08 2323





XE Login