2007~2011/SQL Server2011. 4. 3. 15:22

시작하기 전에, 아래 Mirrored backup media sets 은 SQL Server 엔터프라이즈 에디션에서 사용 가능한 기능입니다.
백업 미디어에 Media Family 가 여러 개 있으면 예를 들어 여러 개의 디스크에 동시에 분산된 백업을 수행할 수 있습니다. 

일반적으로 백업 Device(디스크)의 병목에 의해 백업 성능이 저하되므로 이 방법을 사용하며 다중 백업 장치를 사용한다면 디스크 병목에 대해 상황에 따라 어느 정도 시간과 성능을 개선할 수 있습니다. 아래 그림처럼 백업 미디어에 만약 3개의 미디어 패밀리가 있다면 백업 세트가 각각 1/3로 분산되어 처리됩니다.


아래와 같이 몇 가지 백업에 대한 테스트를 진행하였습니다.

[환경]
SQL Server 2008
DISK 성능이 다른 2개의 디스크 각각 C, D Drive 구성


[시나리오1]
1. C, D Drive 에 각각 전체 백업 수행
 가. C Drive 백업 시 : 3.833 sec (33.624 MB/sec)
 나. D Drive 백업 시 : 2.076 sec (62.082 MB/sec) -- D Drive 의 디스크 성능이 보다 나은 환경

BACKUP DATABASE AdventureWorks TO DISK = 'C:\Temp\AdventureWorks.fbk' WITH INIT

/*
Processed 16496 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
Processed 1 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
BACKUP DATABASE successfully processed 16497 pages in 3.833 seconds (33.624 MB/sec).
*/

BACKUP DATABASE AdventureWorks TO DISK = 'D:\Temp\AdventureWorks1.bak' WITH INIT
/*
Processed 16496 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
Processed 1 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
BACKUP DATABASE successfully processed 16497 pages in 2.076 seconds (62.082 MB/sec).
*/



[시나리오 2]
C,D Drive 를 백업 세트로 구성하여 백업 수행 : 3.187 sec (40.440 MB/sec)

BACKUP DATABASE AdventureWorks TO DISK = 'C:\Temp\AdventureWorks.bak',DISK = 'D:\Temp\AdventureWorks.bak'
WITH FORMAT, MEDIANAME = 'AdventureWorks'
/*
Processed 16496 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
Processed 1 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
BACKUP DATABASE successfully processed 16497 pages in 3.187 seconds (40.440 MB/sec).
*/



[시나리오 3]
백업 시 COMPRESSION 기능을 추가해 보면 어떨까요? 더 작아진 용량 더 빠른 백업이 가능합니다.

BACKUP DATABASE AdventureWorks TO DISK = 'C:\Temp\AdventureWorks.bak',DISK = 'D:\Temp\AdventureWorks.bak'
WITH FORMAT, COMPRESSION, MEDIANAME = 'AdventureWorks'



[백업 세트 확인 방법]
아래 쿼리를 수행하여 백업 세트의 패밀리 정보를 확인할 수 있습니다.

SELECT A.database_name, A.last_family_number, B.family_sequence_number, B.physical_device_name, A.backup_finish_date, A.compressed_backup_size, A.type
FROM MSDB.DBO.backupset A JOIN MSDB.DBO.backupmediafamily B ON A.backup_set_id = B.media_set_id WHERE A.backup_set_id = 4




[복원방법]
일반 복원 방법과 동일합니다. DISK 구문 뒤에 패밀리 백업 미디어의 경로를 이어주시면 됩니다.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\Temp\AdventureWorks.bak',
DISK = 'D:\Temp\AdventureWorks.bak' WITH MEDIANAME = 'AdventureWorks'



[추가사항]
위의 내용과 조금 다른 개념입니다만 MIRROR 구문을 사용할 수 있습니다. 이 방법을 사용하는 경우는 백업 장치 문제 발생에  따른 영향으로 데이터 손실을 최소화 하기 위해 다른 미디어에 각각 백업을 중복하여 안정성을 향상하기 위함입니다. 물론 백업 수행 성능과 시간은 더 많이 소요됩니다.

BACKUP DATABASE AdventureWorks TO DISK = 'C:\SQLDATA\AdventureWorks1.bak' MIRROR TO DISK = 'D:\SQLDATA\AdventureWorks1.bak'
WITH FORMAT
/*
Processed 16496 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
Processed 1 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
BACKUP DATABASE successfully processed 16497 pages in 4.717 seconds (27.323 MB/sec).
*/



[참고자료]
Using Mirrored Backup Media Sets
http://msdn.microsoft.com/en-us/library/ms175053.aspx

Media Sets, Media Families, and Backup Sets
http://msdn.microsoft.com/en-us/library/ms178062.aspx

SQL Server 2008 백업 압축
http://laigo.kr/365


작성자 : Lai Go / 작성일자 : 2011.04.11

Posted by Lai Go