새소식

반응형
Database/MSSQL Server

MSSQL_파일그룹 백업 및 복원

  • -
반응형

MSSQL에서 대용량의 데이터베이스를 관리할때 백업 과 복원시 많은 용량을 전부 백업 및 복원 하는 것이 아닌 일부의 파일 그룹만 백업, 복원을 하여, 시간 및 저장공간을 줄일 수 있습니다.


저는 이 기법을 로그 DB에 사용하기 위해서 테스트하였으며, 용도는 사용하시는 분의 요건에 맞게 사용하면 될 듯 합니다.

로그DB에서 각 일별로 파일그룹,파일을 생성하여 일별로 나눈 뒤 차후에 파일그룹별로 백업을 수행합니다. 

그렇게하여, 일자별 BACKUP파일을 만들고, 복원시 해당 BACKUP파일만 복원하여 관리 하고자 하여, 테스트를 하였습니다.


테스트의 주요 확인 사항은 다음과 같습니다.

1. 파일그룹 백업은 파일그룹 단위로 가능한가?

2. 파일그룹 단위로 백업이 성공시 복원이 가능 한가?

3. 데이터는 정상적으로 조회가 가능 한가?


결론적으로 위의 모든 사항은 YES 입니다.

다음은 테스트 과정을 정리 하였습니다.


1. 다수의 파일그룹 및 파일을 가진 데이터베이스 생성




파일 그룹을 만들고, 파일(NDF)를 생성 시 파일그룹을 지정해 주면 됩니다.

나중에 백업시 FRG_201501~03단위로 백업을 합니다. 이점이 매우 중요한데, 만약에 내가 FGT_1,2를 한번에 백업하여 보관하고 싶다고 한다면 처음부터 작업시 파일그룹을 1개로 묶어서 지정해야 합니다. 


파일그룹 백업시 FRG_201501을 백업한 파일, FRG_201502를 백업한 파일 2개를 한 데이터베이스 올릴수 없습니다.

(실제 해봤으나 불가능 / 가장 마지막에 복원 DB로 덮어쳐짐)


하지만 FRG_201501 / FRG_201502 를 각각 백업하여, 각각 다른 DB로 복원한다면 이것은 가능 합니다.

즉, 파일그룹백업은 파일단위(MDF,NDF)가 아닌 파일그룹 단위로 백업이 되므로, 그룹지정은 신중하게 선택해야 합니다.


2. 각 파일그룹별 테이블 생성 및 데이터 입력

-- 파일그룹별테이블생성

create table FRG_201501

(

 seq          int          identity(1,1)

,usr_name    varchar(30) 

)on FRG_201501

go

 

create table FRG_201502

(

 seq          int          identity(1,1)

,usr_name    varchar(30) 

)on FRG_201502

go

 

create table FRG_201503

(

 seq          int          identity(1,1)

,usr_name    varchar(30) 

)on FRG_201503

go

 

 

--cluserted 인덱스생성

create clustered index CLD_FRG_201501 on FRG_201501(seq)

create clustered index CLD_FRG_201502 on FRG_201502(seq)

create clustered index CLD_FRG_201503 on FRG_201503(seq)

파일 그룹을 지정하여, 각각 파일그룹에 1개의 테이블을 생성합니다.

생성 된 파일 그룹 중에 FRG_201502 테이블 즉, FRG_201502 파일그룹에만 데이터를 입력 합니다.


 

--데이터입력

insert into FRG_201502(usr_name) values ('주형권')

go 1000



3. FRG_201502 파일그룹 백업

-- FRG_201502 파일그룹백업

backup database FileGroupTest1 filegroup = 'PRIMARY',filegroup ='FRG_201502'

to disk = 'G:\JHK_BACKUP_TEST\FRG_201502.bak'

with compression ,init

로그 DB이기 때문에 저장공간이 가장 큰 쟁점이므로, 압축 백업을 수행하였습니다.



4. FRG_201502 파일그룹 복원

restore filelistonly from disk ='G:\JHK_BACKUP_TEST\FRG_201502.bak'

보시면 논리적 파일은 총 5개의 파일이 존재합니다. 분명히 FRG_201502만 백업한 백업파일인데, FGT_1,3이 존재합니다.

하지만 해당 파일은 복원을 하려고, with move를 이용하여 폴더를 지정해도 복원이 되지 않습니다.



보시면 아시겠지만 현재 PRIMARY 그룹인 FileGroupTest1 , FGT_2 , FileGroupTest1_log만 존재 합니다.  


FRG_201502 파일그룹 복원 스크립

 

restore database Restore_test filegroup = 'PRIMARY' ,filegroup = 'FRG_201502'

from disk = 'G:\JHK_BACKUP_TEST\FRG_201502.bak'

with move 'FileGroupTest1' to 'D:\JHK_MSSQL_DATA\FileGroupTest1.mdf'

,move 'FGT_2' to 'D:\JHK_MSSQL_DATA\FGT_2.ndf'

,move 'FileGroupTest1_log' to 'D:\JHK_MSSQL_DATA\FileGroupTest1_log.ldf'

 


복원 후 테이블을 확인해 보면 다음과 같이 보입니다.


  


현재 위의 테이블을 보면 FRG_201501 ~03까지 존재 하는데, FRG_201501,03은 아래의 오류가 나면서 조회가 불가능 합니다. 








참조 

MSDN

https://msdn.microsoft.com/ko-kr/library/ms173778.aspx

https://msdn.microsoft.com/ko-kr/library/aa337540.aspx

https://msdn.microsoft.com/ko-kr/library/ms189906.aspx

파일 및 파일 그룹 백업(SQL Server)
msdn.microsoft.com
본문으로 이동

기타 자료

http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005Admin&intSeq=2249

파일 그룹 테스트 - > 파일 그룹 백업 / 복원 :: SQLLeader.com
www.sqlleader.com
본문으로 이동

 

반응형

'Database > MSSQL Server' 카테고리의 다른 글

DBA 업무시 필요한 쿼리  (0) 2015.06.04
MS SQL Server_952 Error  (0) 2015.04.09
MSSQL_DMV 모음(1)  (0) 2015.04.09
MSSQL_쿼리 결과값 테이블에 넣기  (0) 2015.04.09
MSSQL_DB내의 개체 생성 스크립트 생성  (0) 2015.04.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.