SQL Server 데이터베이스 백업 및 복원

적용 대상:SQL Server

이 문서에서는 SQL Server 데이터베이스 백업의 이점, 기본 백업 및 복원 조건에 대해 설명하고 SQL Server에 대한 백업 및 복원 전략과 SQL Server 백업 및 복원에 대한 보안 고려 사항을 소개합니다.

이 문서에서는 SQL Server 백업을 소개합니다. SQL Server 데이터베이스를 백업하는 특정 단계는 백업 만들기를 참조 하세요.

SQL Server 백업 및 복원 구성 요소는 SQL Server 데이터베이스에 저장된 중요한 데이터를 보호하기 위한 필수 보호 기능을 제공합니다. 치명적인 데이터 손실 위험을 최소화하려면 정기적으로 데이터베이스를 백업하여 수정 내용을 보존해야 합니다. 잘 계획된 백업 및 복원 전략은 다양한 오류로 인한 데이터 손실로부터 데이터베이스를 보호하는 데 도움이 됩니다. 백업 집합을 복원한 다음 데이터베이스를 복구하여 재해에 효과적으로 대응할 준비를 하여 전략을 테스트합니다.

SQL Server는 백업을 저장하기 위한 로컬 스토리지 외에도 Azure Blob Storage에 대한 백업 및 복원을 지원합니다. 자세한 내용은 Microsoft Azure Blob Storage로 SQL Server 백업 및 복원을 참조하세요. Azure Blob Storage를 사용하여 저장된 데이터베이스 파일의 경우 SQL Server 2016(13.x)은 거의 즉각적인 백업 및 빠른 복원에 Azure 스냅샷 사용하는 옵션을 제공합니다. 자세한 내용은 Azure의 데이터베이스 파일에 대한 파일-스냅샷 백업을 참조 하세요. 또한 Azure는 Azure VM에서 실행되는 SQL Server에 대한 엔터프라이즈급 백업 솔루션을 제공합니다. 완전 관리형 백업 솔루션으로 Always On 가용성 그룹, 장기 보존, 지정 시간 복구, 중앙 관리 및 모니터링을 지원합니다. 자세한 내용은 Azure VM의 SQL Server용 Azure Backup을 참조 하세요.

백업하는 이유

  • SQL Server 데이터베이스를 백업하고, 테스트 복원 절차를 백업에 실행하고, 안전한 오프사이트 위치에 백업 복사본을 저장하면 잠재적으로 치명적인 데이터 손실로부터 보호할 수 있습니다. 백업은 데이터를 보호하는 유일한 방법입니다.

    데이터베이스의 유효한 백업을 사용하면 다음과 같은 많은 오류에서 데이터를 복구할 수 있습니다.

    • 미디어 오류
    • 사용자 오류(예: 실수로 테이블을 삭제).
    • 하드웨어 오류(예: 손상된 디스크 드라이브 또는 서버의 영구 손실)입니다.
    • 자연재해 AZURE Blob Storage에 대한 SQL Server Backup을 사용하여 온-프레미스 위치와 다른 지역에 오프사이트 백업을 만들어 온-프레미스 위치에 영향을 주는 자연 재해 발생 시 사용할 수 있습니다.
  • 또한 데이터베이스 백업은 한 서버에서 다른 서버로 데이터베이스 복사, Always On 가용성 그룹 또는 데이터베이스 미러 설정 및 보관과 같은 일상적인 관리 용도로 유용합니다.

백업 용어집

백업 [동사]
SQL Server 데이터베이스에서 데이터 레코드를 복사하거나 트랜잭션 로그에서 레코드를 기록하여 백업 [명사] 를 만드는 프로세스입니다.

백업 [명사]
오류 발생 후 데이터를 복원하고 복구하는 데 사용할 수 있는 데이터 복사본입니다. 데이터베이스 백업을 사용하여 데이터베이스 복사본을 새 위치로 복원할 수도 있습니다.

백업 디바이스(backup device)
SQL Server 백업이 작성되고 복원할 수 있는 디스크 또는 테이프 디바이스입니다. SQL Server 백업은 Azure Blob Storage에 쓸 수도 있으며 URL 형식은 백업 파일의 대상과 이름을 지정하는 데 사용됩니다. 자세한 내용은 Microsoft Azure Blob Storage로 SQL Server 백업 및 복원을 참조하세요.

백업 미디어
하나 이상의 백업이 기록된 하나 이상의 테이프 또는 디스크 파일입니다.

데이터 백업(data backup)
전체 데이터베이스(데이터베이스 백업), 부분 데이터베이스(부분 백업) 또는 데이터 파일 또는 파일 그룹 집합(파일 백업)의 데이터 백업입니다.

데이터베이스 백업
데이터베이스의 백업입니다. 전체 데이터베이스 백업은 백업이 완료된 시점의 전체 데이터베이스를 나타냅니다. 차등 데이터베이스 백업에는 가장 최근의 전체 데이터베이스 백업 이후 데이터베이스에 대한 변경 내용만 포함됩니다.

차등 백업(differential backup)
전체 또는 부분 데이터베이스의 최신 전체 백업 또는 데이터 파일 또는 파일 그룹 집합(차등 기반)을 기반으로 하며 해당 기반 이후 변경된 데이터만 포함하는 데이터 백업입니다.

전체 백업
특정 데이터베이스 또는 파일 그룹 또는 파일 집합의 모든 데이터와 해당 데이터를 복구할 수 있는 충분한 로그를 포함하는 데이터 백업입니다.

로그 백업
이전 로그 백업에 백업되지 않은 모든 로그 레코드를 포함하는 트랜잭션 로그의 백업입니다. (전체 복구 모델)

recover
데이터베이스를 안정적이고 일관된 상태로 되돌립니다.

복구
데이터베이스를 트랜잭션 일치 상태로 가져오는 복구를 사용하는 복원 또는 데이터베이스 시작 단계입니다.

복구 모델
데이터베이스의 트랜잭션 로그 기본 테넌트를 제어하는 데이터베이스 속성입니다. 단순, 전체 및 대량 로그의 세 가지 복구 모델이 있습니다. 데이터베이스의 복구 모델에 따라 백업 및 복원 요구 사항이 결정됩니다.

복원(restore)
지정된 SQL Server 백업에서 지정된 데이터베이스로 모든 데이터 및 로그 페이지를 복사한 다음, 기록된 변경 내용을 적용하여 백업에 기록된 모든 트랜잭션을 롤업하여 데이터를 정시에 전달하는 다단계 프로세스입니다.

백업 및 복원 전략

데이터 백업 및 복원은 특정 환경에 맞게 사용자 지정되어야 하며 사용 가능한 리소스로 작업해야 합니다. 따라서 복구를 위해 백업 및 복원을 안정적으로 사용하려면 백업 및 복원 전략이 필요합니다. 잘 설계된 백업 및 복원 전략은 최대 데이터 가용성 및 최소 데이터 손실에 대한 비즈니스 요구 사항의 균형을 유지하면서 백업을 기본 획득 및 저장하는 비용을 고려합니다.

백업 및 복원 전략에는 백업 부분과 복원 부분이 포함됩니다. 전략의 백업 관련 부분에서는 백업 유형 및 빈도, 백업에 필요한 하드웨어의 특성 및 속도, 백업 테스트 방법 및 백업 미디어 보관 위치 및 보관 방법(보안 고려 사항 포함)을 정의합니다. 전략의 복원 부분은 복원을 수행하는 담당자, 데이터베이스 가용성 및 데이터 손실을 최소화하기 위한 목표를 달성하기 위해 복원을 수행해야 하는 방법 및 복원 테스트 방법을 정의합니다.

효과적인 백업 및 복원 전략을 설계하려면 신중한 계획, 구현 및 테스트가 필요합니다. 테스트 필요: 복원 전략에 포함된 모든 조합의 백업을 성공적으로 복원하고 복원된 데이터베이스의 물리적 일관성을 테스트해야만 백업 전략이 완성됩니다. 다양한 요소를 고려해야 합니다. 여기에는 다음이 포함됩니다.

  • 프로덕션 데이터베이스, 특히 데이터 손실 또는 손상으로부터의 가용성 및 보호 요구 사항에 대한 조직의 목표입니다.

  • 각 데이터베이스의 특성: 크기, 사용 패턴, 콘텐츠의 특성, 데이터 요구 사항 등입니다.

  • 하드웨어, 인력, 백업 미디어 저장 공간, 저장된 미디어의 물리적 보안 등과 같은 리소스의 제약 요건

모범 사례 권장 사항

백업 또는 복원 작업을 수행하는 계정에는 필요한 것보다 더 많은 권한이 부여되어서는 안 됩니다. 백업을 검토하고 특정 사용 권한 세부 정보를 복원합니다. 백업 을 암호화 하고 가능한 경우 압축하는 것이 좋습니다.

보안을 유지하려면 백업 파일에 적절한 규칙을 따르는 확장명이 있어야 합니다.

  • 데이터베이스 백업 파일에 확장명이 .BAK 있어야 합니다.
  • 로그 백업 파일에는 확장명이 .TRN 있어야 합니다.

별도의 스토리지 사용

Important

데이터베이스 파일과는 별도의 물리적 위치 또는 디바이스에 데이터베이스 백업을 저장해야 합니다. 데이터베이스를 저장하는 실제 드라이브가 오작동하거나 충돌하는 경우, 복구 기능은 복원을 수행하기 위해 백업을 저장한 별도의 드라이브나 원격 디바이스에 액세스할 수 있는지 여부에 따라 달라집니다. 동일한 실제 디스크 드라이브에서 여러 논리 볼륨 또는 파티션을 만들 수 있습니다. 백업에 대한 스토리지 위치를 선택하기 전에 디스크 파티션 및 논리 볼륨 레이아웃을 신중하게 연구합니다.

적절한 복구 모델 선택

백업 및 복원 작업은 복구 모델의 컨텍스트에서 수행됩니다. 복구 모델은 트랜잭션 로그를 관리하는 방법을 제어하는 데이터베이스 속성입니다. 따라서 데이터베이스의 복구 모델은 데이터베이스에 대해 지원되는 백업 및 복원 시나리오 유형과 트랜잭션 로그 백업의 크기를 결정합니다. 일반적으로 데이터베이스는 단순 복구 모델 또는 전체 복구 모델을 사용합니다. 대량 작업 전에 대량 로그 복구 모델로 전환하여 전체 복구 모델을 보강할 수 있습니다. 이러한 복구 모델 및 이러한 복구 모델이 트랜잭션 로그 관리에 미치는 영향에 대한 자세한 내용은 트랜잭션 로그(SQL Server)를 참조하세요.

데이터베이스에 가장 적합한 복구 모델은 비즈니스 요구 사항에 따라 다릅니다. 트랜잭션 로그 관리를 방지하고 백업 및 복원을 간소화하려면 간단한 복구 모델을 사용합니다. 작업 손실 노출을 최소화하려면 관리 오버헤드의 비용으로 전체 복구 모델을 사용합니다. 대량 로그된 작업 중 로그 크기에 미치는 영향을 최소화하는 동시에 이러한 작업의 복구를 허용하려면 대량 로그된 복구 모델을 사용합니다. 백업 및 복원에 대한 복구 모델의 영향에 대한 자세한 내용은 Backup 개요(SQL Server)를 참조하세요.

백업 전략 디자인

특정 데이터베이스에 대한 비즈니스 요구 사항을 충족하는 복구 모델을 선택한 후에는 해당 백업 전략을 계획하고 구현해야 합니다. 최적의 백업 전략은 다양한 요인에 따라 달라지며, 그 중에서 특히 중요한 요소는 다음과 같습니다.

  • 애플리케이션에서 데이터베이스에 액세스해야 하는 시간은 하루 몇 시간입니까?

    예측 가능한 사용량이 적은 기간이 있는 경우 해당 기간 동안 전체 데이터베이스 백업을 예약하는 것이 좋습니다.

  • 얼마나 자주 변경과 업데이트가 발생합니까?

    변경 내용이 자주 발생하면 다음 사항을 고려하세요.

    • 간단한 복구 모델에서 전체 데이터베이스 백업 간에 차등 백업을 예약하는 것이 좋습니다. 차등 백업은 마지막 전체 데이터베이스 백업 이후의 변경 내용만 캡처합니다.

    • 전체 복구 모델에서는 자주 로그 백업을 예약해야 합니다. 전체 백업 사이에 차등 백업을 예약하면 데이터를 복원한 후 복원해야 하는 로그 백업 수가 감소하므로 복원 시간이 줄어들 수 있습니다.

  • 변경이 데이터베이스의 일부분에서만 발생합니까? 아니면 데이터베이스의 대부분에서 발생합니까?

    변경 내용이 파일 또는 파일 그룹의 일부에 집중되어 있는 대규모 데이터베이스의 경우 부분 백업 또는 전체 파일 백업이 유용할 수 있습니다. 자세한 내용은 부분 백업(SQL Server)전체 파일 백업(SQL Server)을 참조하세요.

  • 전체 데이터베이스 백업에 필요한 디스크 공간은 얼마인가요?

  • 비즈니스에서 백업을 기본 획득하는 데 필요한 과거는 얼마나 됩니까?

    애플리케이션 및 비즈니스 요구 사항에 따라 적절한 백업 일정이 설정되었는지 확인합니다. 백업이 오래되면 오류 지점까지 모든 데이터를 다시 생성할 수 있는 방법이 없다면 데이터 손실 위험이 더 높습니다. 스토리지 리소스 제한으로 인해 이전 백업을 삭제하도록 선택하기 전에 지금까지 복구가 필요한지 고려합니다.

전체 데이터베이스 백업의 크기 예측

백업 및 복원을 구현하기 전에 전체 데이터베이스 백업에 어느 정도의 디스크 공간이 필요한지 예측해야 합니다. 백업 작업은 데이터베이스의 데이터를 백업 파일로 복사합니다. 백업에는 데이터베이스의 실제 데이터만 포함되고 사용하지 않은 공간은 포함되지 않습니다. 따라서 백업은 일반적으로 데이터베이스 자체보다 작습니다. sp_spaceused 시스템 저장 프로시저를 사용하여 전체 데이터베이스 백업의 크기를 예측할 수 있습니다. 자세한 내용은 sp_spaceused(Transact-SQL)를 참조 하세요.

백업 예약

백업 작업을 수행해도 실행 중인 트랜잭션에 미치는 영향이 최소화됩니다. 따라서 백업 작업은 정기적인 작업 중에 실행할 수 있습니다. 프로덕션 워크로드에 미치는 영향을 최소화하면서 SQL Server 백업을 수행할 수 있습니다.

백업 중 동시성 제한에 대한 자세한 내용은 백업 개요(SQL Server)를 참조하세요.

필요한 백업 유형과 각 형식을 수행해야 하는 빈도를 결정한 후에는 데이터베이스에 대한 데이터베이스 기본 테넌트 계획의 일부로 정기 백업을 예약하는 것이 좋습니다. 기본 테넌스 계획 및 데이터베이스 백업 및 로그 백업에 대해 계획을 만드는 방법에 대한 자세한 내용은 유지 관리 계획 마법사 사용을 참조하세요.

백업을 테스트하세요!

백업을 테스트할 때까지 복원 전략이 없습니다. 데이터베이스의 복사본을 테스트 시스템에 복원하여 각 데이터베이스에 대한 백업 전략을 철저히 테스트하는 것이 매우 중요합니다. 사용하려는 모든 유형의 백업 복원을 테스트해야 합니다. 백업을 복원한 후에는 데이터베이스의 DBCC CHECKDB를 통해 데이터베이스 일관성 검사 수행하여 백업 미디어가 손상되지 않은지 확인하는 것이 좋습니다.

미디어 안정성 및 일관성 확인

백업 유틸리티에서 제공하는 확인 옵션(BACKUP T-SQL 명령, SQL Server 유지 관리 계획, 백업 소프트웨어 또는 솔루션 등)을 사용합니다. 예제는 [RESTORE VERIFYONLY](.)를 참조하세요. /t-sql/statements/restore-statements-verifyonly-transact-sql.md) BACKUP CHECKSUM과 같은 고급 기능을 사용하여 백업 미디어 자체의 문제를 검색합니다. 자세한 내용은 백업 및 복원 중 가능한 미디어 오류(SQL Server)를 참조 하세요.

문서 백업/복원 전략

백업 및 복원 절차를 문서화하고 설명서의 복사본을 실행 책에 보관하는 것이 좋습니다. 또한 각 데이터베이스에 대한 작업 설명서를 기본 것이 좋습니다. 이 작업 설명서에서는 백업 위치, 백업 디바이스 이름(있는 경우) 및 테스트 백업을 복원하는 데 필요한 시간을 문서화해야 합니다.

xEvent를 사용하여 진행률 모니터링

백업 및 복원 작업은 데이터베이스의 크기와 관련된 작업의 복잡성으로 인해 상당한 시간이 걸릴 수 있습니다. 두 작업 중 하나에서 문제가 발생하면 backup_restore_progress_trace 확장 이벤트를 사용하여 진행률을 실시간으로 모니터링할 수 있습니다. 확장 이벤트에 대한 자세한 내용은 확장 이벤트를 참조하세요.

Warning

backup_restore_progress_trace 확장 이벤트를 사용하면 성능 문제가 발생하고 상당한 양의 디스크 공간을 사용할 수 있습니다. 프로덕션 환경에서 구현하기 전에 짧은 시간 동안 사용하고, 주의를 기울이고, 철저히 테스트합니다.

-- Create the backup_restore_progress_trace extended event esssion
CREATE EVENT SESSION [BackupRestoreTrace] ON SERVER 
ADD EVENT sqlserver.backup_restore_progress_trace
ADD TARGET package0.event_file(SET filename=N'BackupRestoreTrace')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=5 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO

-- Start the event session  
ALTER EVENT SESSION [BackupRestoreTrace]  
ON SERVER  
STATE = start;  
GO  

-- Stop the event session  
ALTER EVENT SESSION [BackupRestoreTrace]  
ON SERVER  
STATE = stop;  
GO  

확장 이벤트의 샘플 출력

Example of back up xevent outputExample of restore xevent output

백업 작업에 대한 자세한 정보

백업 디바이스 및 백업 미디어 작업

백업 만들기

참고 항목

부분 또는 복사 전용 백업의 경우 각각 PARTIAL 또는 COPY_ONLY 옵션과 함께 Transact-SQLBACKUP 문을 사용해야 합니다.

SSMS 사용

T-SQL 사용

데이터 백업 복원

SSMS 사용

T-SQL 사용

트랜잭션 로그 복원(전체 복구 모델)

SSMS 사용

T-SQL 사용

추가 정보 및 리소스

백업 개요(SQL Server)
복원 및 복구 개요(SQL Server)
BACKUP(Transact-SQL)
RESTORE(Transact-SQL)
Analysis Services 데이터베이스 백업 및 복원
전체 텍스트 카탈로그와 인덱스 백업 및 복원
복제된 데이터베이스 백업 및 복원
트랜잭션 로그(SQL Server)
복구 모델(SQL Server)
미디어 세트, 미디어 패밀리 및 백업 세트(SQL Server)