재해 복구 계획

SQL Server 데이터베이스를 관리할 때는 재해 복구에 대비하는 것이 중요합니다. 또한 재해가 발생한 후에 데이터베이스를 복구하려면 SQL Server 백업에 대해 잘 디자인되고 테스트를 거친 백업 및 복원 계획이 필요합니다. 자세한 내용은 SQL Server의 백업 및 복원 전략 소개를 참조하십시오. 또한 자연 재해가 발생할 경우 모든 시스템 및 데이터가 신속하게 정상적으로 작동되도록 복원하려면 재해 복구 계획을 세워야 합니다. 이 계획을 세울 때는 화재와 같은 자연 재해와 RAID-5 배열의 두 개 디스크로 인한 오류와 같은 기술적인 재해를 비롯하여 사업에 영향을 줄 수 있는 다양한 재해 유형에 대한 시나리오를 고려해야 합니다. 재해 복구 계획을 세울 때는 각 재해 유형에 대처하는 데 필요한 모든 단계를 확인하여 준비합니다. 각 시나리오의 복구 단계는 반드시 테스트해야 합니다. 이 경우 자연 재해 시뮬레이션을 통해 재해 복구 계획을 확인하는 것이 좋습니다.

백업 및 복원 계획을 디자인할 경우 특정 환경과 비즈니스 요구에 관련된 재해 복구 계획을 고려해야 합니다. 예를 들어 24시간 데이터 센터에 화재가 발생하여 모두 불에 탔다고 가정할 경우 복구가 가능합니까? 시스템을 복구하고 사용할 수 있도록 하는 데 시간이 얼마나 걸립니까? 사용자가 허용하는 데이터 손실은 얼마나 됩니까?

이상적인 재해 복구 계획은 복구 작업의 소요 시간과 사용자가 예상할 수 있는 데이터베이스의 최종 상태를 밝히는 것입니다. 예를 들어 지정된 하드웨어를 확보한 다음 48시간 안에 복구가 완료되어야 하고 데이터는 지난 주의 마지막 날까지 저장한 데이터를 복구하기로 결정합니다.

여러 가지 방법으로 재해 복구 계획을 구성하여 여러 유형의 정보를 이 계획에 포함할 수 있습니다. 재해 복구 계획 유형은 다음과 같습니다.

  • 하드웨어를 확보하는 방법

  • 통신 계획

  • 재해가 발생할 경우 연락할 사람의 목록

  • 재해 처리 관련자에게 문의할 때의 지침

  • 계획 관리 소유자에 대한 정보

  • 각 복구 시나리오에 필요한 태스크 검사 목록. 재해 복구의 진행 상황을 검토하려면 각 태스크가 완료될 때 시작하고 검사 목록에 완료된 시간을 표시합니다.

SQL Server 복구 모델

SQL Server에서는 단순 복구 모델, 전체 복구 모델 및 대량 로그 복구 모델이라는 3가지 대체 복구 모델을 제공합니다. 복구 모델은 데이터베이스에 대한 백업 및 복원 작업의 기본 동작을 제어하는 데이터베이스 속성입니다. 백업 및 복원 전략을 세울 때는 각 데이터베이스에 가장 알맞은 복구 모델을 선택하는 것이 중요합니다. 지정된 데이터베이스에 맞는 복구 모델은 가용성과 복구 요구 사항에 따라 다르게 선택할 수 있습니다. 또한 선택한 복구 모델은 데이터베이스의 재해 복구 가능성에 영향을 미칩니다.

복구 모델에 대한 소개는 복구 모델 개요를 참조하십시오.

백업 미디어 관리

백업 계획을 세울 때는 백업 미디어 관리를 위해 다음 사항을 포함하는 것이 좋습니다.

  • 백업 세트의 저장 및 재활용에 대한 추적 및 관리 계획

  • 백업 미디어를 덮어쓰기 위한 일정

  • 다중 서버 환경에서 중앙 집중화된 백업을 사용할지 아니면 분산 백업을 사용할지 결정

  • 미디어의 유용한 수명을 추적하는 방법

  • 백업 세트 또는 백업 미디어의 손실(예: 테이프 손실) 효과를 최소화하기 위한 절차

  • 온 사이트 또는 오프 사이트에 백업 세트를 저장할지 결정하고 이것이 복구 시간에 미칠 영향 분석

SQL Server에서 백업 장치와 미디어를 사용하는 방법은 SQL Server에서 백업 미디어 작업을 참조하십시오.

기본 기능 스크립트 실행

일반적으로 모든 것이 계획대로 작동하는지 확인하기 위해 재해 복구 계획에 기본 기능 스크립트를 포함합니다. 기본 기능 스크립트에서는 시스템 관리자나 데이터베이스 관리자가 최종 사용자의 확인에 의존하지 않고 데이터베이스가 다시 작업 가능한 상태에 있는지 확인할 수 있도록 신뢰할 수 있는 도구를 제공합니다.

기본 기능 스크립트는 응용 프로그램마다 다르게 사용되며 여러 가지 형식을 사용할 수 있습니다. 예를 들어 의사 결정 지원 또는 보고 시스템에서는 스크립트가 단순히 여러 주요 보고 쿼리의 복사본일 수 있습니다. OLAP(온라인 트랜잭션 처리) 응용 프로그램에서 스크립트는 INSERT, UPDATE, DELETE 문을 실행하는 저장 프로시저의 일괄 처리를 실행할 수 있습니다. 예를 들어 기본 기능 스크립트는 sqlcmd 유틸리티에서 서버로 일괄 처리된 SQL 문을 보내는 .sql 파일과 같이 간단할 수 있으며 bcp 명령과 sqlcmd 명령이 모두 포함된 .bat 파일을 사용할 수도 있습니다.

재해 대비 확인

재해에 대한 대비가 완료되었는지 확인하려면 주기적으로 다음 작업을 수행하는 것이 좋습니다.

  • 실제 오류가 발생하기 전에 백업 및 복구 절차를 철저히 테스트합니다. 그러면 여러 가지 오류를 복구하는 데 필요한 백업을 보관하고 해당 절차를 분명하게 정의하고 문서화하는 것은 물론 해당 운영자가 이러한 절차를 적절하고 신속하게 실행할 수 있습니다.

  • 데이터베이스와 트랜잭션 로그를 정기적으로 백업하여 손실되는 데이터의 양을 최소화합니다. 시스템 데이터베이스와 사용자 데이터베이스를 모두 백업하는 것이 좋습니다.

  • 시스템 로그를 안전하게 유지 관리합니다. Microsoft Windows 및 SQL Server에 설치된 모든 서비스 팩을 기록해 둡니다. 사용한 네트워크 라이브러리 및 보안 모드를 기록해 둡니다. 또한 혼합 모드 인증(SQL Server 및 Windows 인증 모드)에서 SQL Server를 실행 중인 경우 sa 암호를 안전한 장소에 기록해 둡니다. 자세한 내용은 보안 및 보호(데이터베이스 엔진)를 참조하십시오.

    중요 정보중요

    Windows 인증이 SQL Server 인증보다 훨씬 더 안전하므로 가능하면 Windows 인증을 사용해야 합니다.

  • 다른 서버에서 재해 복구에 필요한 단계를 평가합니다. 필요한 경우 로컬 서버 환경에 맞게 단계를 수정하고 수정한 단계를 테스트합니다.

  • 최소 기능을 빨리 판단하기 위해 기본 기능 스크립트를 유지 관리합니다.

위험할 수 있는 사용자 오류 감사 및 축소

가장 까다로운 복구 시나리오 중 하나는 실수로 삭제된 데이터베이스 개체와 같은 심각한 사용자 오류로부터 복구하는 것입니다. 이 섹션에서는 데이터베이스 변경 내용의 감사는 물론 필요한 경우 규제에 도움이 되는 도구를 나열합니다.

  • DDL(데이터 정의 언어) 트리거

    데이터베이스 스키마의 특정 변경 내용을 감사 및 규제하기 위해 이 트리거를 만들 수 있습니다. DDL 트리거는 다양한 DDL 문에 대한 응답으로 저장 프로시저를 실행합니다. 이러한 문은 주로 CREATE, ALTER 및 DROP으로 시작합니다. DDL 트리거의 범위는 특정 데이터베이스나 전체 서버 인스턴스입니다. 자세한 내용은 DDL 트리거 이해를 참조하십시오.

  • 이벤트 알림

    이벤트 알림은 다양한 Transact-SQL DDL 문과 SQL Trace 이벤트에 대한 응답으로 실행되며 이러한 이벤트에 대한 정보를 Service Broker 서비스로 보냅니다.

    SQL Trace에서 캡처한 여러 개의 동일한 이벤트에 대해 이벤트 알림을 프로그래밍할 수 있습니다. 그러나 추적 만들기와는 달리 이벤트 알림은 이벤트에 대한 응답으로 SQL Server 인스턴스 내에서 동작을 수행하는 데 사용할 수 있습니다. 이벤트 알림은 비동기적으로 실행되므로 이 동작은 최근 트랜잭션에서 정의한 어떤 리소스도 소비하지 않습니다. 자세한 내용은 이벤트 알림(데이터베이스 엔진)을 참조하십시오.

    [!참고]

    DDL 트리거에 모든 DDL 이벤트를 사용할 수 있는 것은 아닙니다. 일부 이벤트는 비동기적이고 트랜잭션이 아닌 문에만 사용할 수 있습니다. 예를 들어 CREATE DATABASE 이벤트는 DDL 트리거에서 사용할 수 없습니다. 이러한 이벤트에는 이벤트 알림을 사용해야 합니다.

  • SQL Server 에이전트

    SQL Server 에이전트는 예약된 관리 태스크(작업이라고 함)을 실행하는 Windows 서비스로, SQL Server 에이전트에서는 SQL Server를 사용하여 작업 정보를 저장합니다. 특히 SQL Server 에이전트는 특정 심각도 수준이나 메시지 번호가 지정된 오류와 같은 특정 이벤트에 대한 응답으로 작업을 실행할 수 있습니다.

    SQL Server 에이전트에 대한 개요를 보려면 관리 태스크 자동화(SQL Server 에이전트)를 참조하십시오. 이벤트에 대해 SQL Server 에이전트를 사용하는 방법은 이벤트 모니터링 및 응답을 참조하십시오.

  • SQL Trace

    SQL Trace는 SQL Server 데이터베이스 엔진 인스턴스에서 사용자가 선택한 이벤트 클래스에 대한 추적을 만드는 Transact-SQL 시스템 저장 프로시저를 제공합니다. 이러한 시스템 저장 프로시저를 사용자의 응용 프로그램에서 사용하면 추적을 수동으로 만들 수 있습니다. 자세한 내용은 SQL Trace 소개를 참조하십시오.

    [!참고]

    SQL Server 프로파일러는 SQL Trace가 데이터베이스 엔진이나 Analysis Services의 인스턴스를 모니터링하는 데 필요한 그래픽 사용자 인터페이스입니다. 자세한 내용은 SQL Server 프로파일러 사용을 참조하십시오.