본문 바로가기

MSSQL/SQL Server 2005 new Feature

미러 백업의 개요

2005에서는 백업미디어를 미러링 함으로써 데이터의 잠재적인 미디어문제로 부터의 복구 능력을 향상 시킬 수 있다.
이 방법은 미디어 종류에 백업을 수행한다.
이런 백업을 통해서 데이터의 손실에 대한 위험을 줄일수 있다.
미러 백업은 데이터를 중복으로 백업을 함으로써 데이터의 안정성을 향상시킨다는 이야기 이다.

미러 백업은 최대 4개까지 실행시킬수 있다.

미디어 세트에는 미디어 패밀리가 하나 이상 포함되어 있으며 각각은 백업 장치에 해당합니다.

예를 들어 BACKUP DATABASE 문의 TO 절에 장치가 3개 나열되어 있으면 BACKUP에서는 장치당 하나씩 3개의 미디어 패밀리에 데이터를 분산합니다. 미디어 패

밀리 및 미러의 수는 WITH FORMAT을 지정하는 BACKUP DATABASE 문으로 미디어 세트를 만들 때 정의됩니다.

BACKUP DATABASE 테이블 명
TO disk ='C:\경로\백업명.bak'
MIRROR TO disk = 'D:\경로\백업명.bak'
WITH FORMAT

백업할때는 지정한 모든 백업 미디어에 접근이 가능해야 하지만, 복원시에는 하나의 미디어에만 접근해도 복원을 성공할수 있다.
주의 할점은 미러링된 백업사본에서 복원을 할 경우에는 MOVE 옵션을 이용해야 한다.
RESTORE DATABASE 테이블 명
FROM DISK'D:\경로\백업명.bak' --미러백업된 사본
WITH
MOVE 'Table_Data'
       TO  'C:\경로\Table_Data.mdf',
MOVE 'Table_Log'
      TO  'C:\경로\Table_Log.ldf'
,Checksum

백업 기록과 백업에 관련된 내용을 알고 싶다면 msdb 데이터베이스에 있는 다음의 테이블을 살펴 보면 된다.

backupset
backupmediaset
backupmediafamily
backupfilegroup
backupfile

미러 백업을 할때는 미러 백업에 사용되는 모든 미디어를 필요 하지만 복원작업시에는 복원 작업 당시의 하나의 미디어만 있으면 됩니다.
하지만 복원 시에 에러가 발생 한다면 다른 미러 미디어가 있으면 신속히 해결 할수 있다.


RESTORE 와 RESTORE VERIFYONLY 명령어에는 손상된 미디어에 해당하는 다른 미디어를 이용하여  복원시키는 옵션을 지원 한다.


미러 백업을 사용하기 위해서는 미디어내의 모든 장치가 동일 해야 한다.
심지어 같은 회의 같은 모델이여야 한다.

2005에서 복원을 하다가 오류가 발생하더라도 복원을 마칠수 있도록 하는 옵션이 추가 되었다.

Restore Database 테이블명
From disk='c:\경로\테이블명.bak'
With continue_after_error

백업 미디어 안에 오류가 있다는 표시를 지정하고 msdb데이터베이스의 suspect_pages테이블에 들어 있는 페이지를 추적한다.
그리고 SQL Server 오류에 로그를 남기고 백업시 오류가 발생하면 msdb.backupset 테이블의 is_damaged열에 1값을 기록한다.

이 옵션을 통하여 모든 미디어가 복원 되는건 아니다.
에러 종류에 따라 실패 할수도 있다.
만약 체크섬의 검증 단계에서 오류가 있다면 오류가 없는 다른 데이터에 대한 복원은 성공할수 있다.
하지만 저장된 미디어에 오류가 있다면 복원은 실패하게됩니다.
에러가 있는 상태에서 복원된 데이터베이서는 의심스러운 데이터베이스라는 표시를 하고 조작을 통하여 어떤 영향을 줄수 있는지에 대해 체크 해 볼수 있도록 한다.

체크섬 이용한 백업과 복원의 데이터 신뢰성 향상

Backup 과 RESTORE 명령어에서 CHECSUM 절을 지원한다.
이절은 백업과 복원의 작업에 있어서 데이터베이스 자체의 신뢰성을 향상시킨다.
Checksum 절으리 이용하면 백업과 복원과정에서 데이터베이스의 검증과 에러 탐색을 가능하게 한다.

백업과정에서 이 절을 사용하면 SQL Server는 백업과정에서 Checksum 값을 계산하게 됩니다.
아울러 SQL Server 는 페이지 수준의 정보까지 검증하게 됩니다.
만약에 CheckSum 값이나 Torn 페이지가 있는지 확인합니다.

msdb..backupset 테이블에 has_backup_checksums 컬럼에 해당 백업세트의 Checksum 정보가 있습니다.

백업명령에서 CheckSum 사용하기

BACKUP DATABASE Table_name
TO DISK='C:\경로\Tabke_name.bak'
WITH CHECKSUM,INIT

위 내용대로 백업을 실행할 경우 에러가 발생하면 백업은 중지 된다.
복원시에 이 옵션을 사용하면 복원하는 과정에서 데이터의 정확성을 검사 하게 됩니다.

RESTORE DATABASE TABLE_NAME
FROM 'C:\경로\Tabke_name.bak'
WITH CHECKSUM

만약 CONTINUE_AFTER_ERROR 옵션을 사용하면 CHECKSUM 에러가 발생해도 백업과 복원은 그대로 진행됩니다.

여기서 주의 하셔야 할 사항은 CHECKSUM을 사용하지 않고 백업받은 데이터에 대해서는 WITH CHECKSUM 옵션을 이용하여 복원할수 없으며,
CHECKSUM 은 성능에 영향을 미칠수 있으므로 주의해서 사용하여야 한다.
CHECKSUM 을 사용하지 않고 백업을 이나 복원을 할때 CHECKSUM의 값은 NO_CHECKSUM 이다.