전체 복구 모델에서의 백업
전체 복구 모델은 광범위한 오류 발생 시나리오에서의 데이터 손실을 방지하기 위해 로그 백업을 사용합니다. 이 모델에서는 트랜잭션 로그(로그 백업)를 백업 및 복원해야 합니다. 로그 백업 사용의 장점은 데이터베이스를 로그 백업 내에 포함된 임의 시점으로 복원할 수 있다는 것입니다(지정 시간 복구). 일련의 로그 백업을 사용하여 로그 백업 중 하나에 포함된 시점으로 데이터베이스를 롤포워드할 수 있습니다. 복원 시간을 최소화하기 위해 같은 데이터를 포함하는 일련의 차등 백업으로 각 전체 백업을 보완할 수 있습니다.
재해 발생 후 활성 로그를 백업할 수 있다고 가정하면 데이터 손실 없이 데이터베이스를 오류 시점까지 복원할 수 있습니다. 로그 백업 사용의 단점은 저장 공간이 필요하고 복원 시간 및 복잡성이 증가할 수 있다는 것입니다.
[!참고]
백업 관리 비용에 관계없이 로그 백업을 사용하여 이점을 얻으려면 단순 복구 모델을 사용하는 것이 좋습니다.
정기적으로 전체 복구 모델을 사용하는 데이터베이스의 경우 임시로 대량 로그 복구 모델을 사용하여 특정 대량 작업을 최적화할 수 있습니다. 대량 로그 복구 모델은 일상 작업에는 적합하지 않은 여러 제한을 발생시킵니다. 자세한 내용은 대량 로그 복구 모델에서의 백업을 참조하십시오.
예제 백업 전략
다음 그림에서는 전체 복구 모델의 가장 간단한 백업 전략을 보여 줍니다. 이 그림에서는 전체 데이터베이스 백업 하나(Db_1)와 일상적인 로그 백업 두 개(Log_1 및 Log_2)가 수행되었습니다. Log_2 로그 백업이 수행되고 잠시 후 데이터베이스에서 데이터 손실이 발생합니다. 이 3개의 백업을 복원하기 전에 데이터베이스 관리자는 활성 로그(비상 로그)를 백업해야 합니다. 그리고 데이터베이스를 복구하지 않고 Db_1, Log_1 및 Log_2를 복원합니다. 그런 다음 데이터베이스 관리자는 비상 로그 백업을 복원 및 복구합니다. 이렇게 하면 데이터베이스가 오류 지점으로 복구되고 모든 데이터가 복구됩니다.
자세한 내용은 전체 데이터베이스 백업 및 트랜잭션 로그 백업 작업를 참조하십시오.
작업 손실 가능성 최소화
첫 번째 전체 데이터베이스 백업이 완료되고 정기적인 로그 백업이 시작되면 잠재적 작업 손실 가능성이 데이터베이스가 손상된 시간과 가장 최근의 정기적 로그 백업 사이의 시간으로 제한됩니다. 따라서 로그 백업을 자주 수행하여 작업 손실 가능성을 비즈니스 요구 사항에 필요한 범위 내로 유지하는 것이 좋습니다.
다음 그림에서는 전체 데이터베이스 백업 및 로그 백업을 차등 데이터베이스 백업으로 보완하는 백업 전략을 보여 줍니다. 트랜잭션 로그 백업은 최신 로그 백업(t14에 수행됨) 이후의 시간까지 잠재적 작업 손실 가능성을 줄일 수 있습니다. 세 번에 걸친 일련의 차등 백업은 오류 발생 시 복원되어야 하는 트랜잭션 로그의 수를 줄이기 위해 수행됩니다. 세 번째 차등 백업은 다음 백업 시 전체 데이터베이스 백업을 수행해야 할 만큼 커집니다. 이 데이터베이스 백업으로 인해 새 차등 기반이 구축됩니다.
이 그림에서 첫 번째 데이터베이스 백업 전에 데이터베이스는 t0 시간에서 t1 시간까지 잠재적 작업 손실 위험에 노출됩니다. 그 이후 일상적인 로그 백업을 통해 작업 손실 가능성을 최신 로그 백업(이 그림에서 t14 시간에 수행된 로그 백업) 이후의 변경 내용 손실로 줄입니다. 최신 백업 이후 오류가 발생할 경우 데이터베이스 관리자는 비상 로그(아직 백업되지 않은 로그)를 백업하려고 시도합니다. 비상 로그 백업이 성공한 경우 데이터베이스 관리자는 데이터베이스를 오류 지점까지 복원하여 작업 손실을 방지할 수 있습니다.
차등 데이터베이스 백업에 대한 자세한 내용은 차등 백업 사용을 참조하십시오.
대량 작업 및 전체 복구 모델
SELECT INTO, CREATE INDEX와 같은 대량 작업을 비롯한 모든 작업을 기록하고 데이터를 대량 로드함으로써, 사용자는 전체 복구 모델을 사용하여 데이터베이스를 오류 지점 또는 이전 시점(지정 시간 복원이라고 함)으로 복구할 수 있습니다.
전체 복구 모델을 사용하는 많은 사용자들이 데이터를 대량 로드할 때, 성능 향상이 발생할 수 있는 데이터 손실 위험보다 중요한 경우 일시적으로 대량 로그 복구 모델로 전환합니다. 대량 로그 복구 모델은 다른 트랜잭션은 전체 기록하지만 대량 작업은 최소한으로 기록합니다. 대량 로그 복구 모델에 대한 자세한 내용은 대량 로그 복구 모델에서의 백업을 참조하십시오.
[!참고]
SQL Server 2005 이상 버전에서 sp_dboption의 select into/bulkcopy 데이터베이스 옵션은 필요하지 않으며 사용하지 말아야 합니다. ALTER DATABASE를 사용해야 합니다. 이후 버전의 SQL Server에서는 sp_dboption 저장 프로시저가 제거됩니다.
백업을 사용하여 데이터베이스 복원
데이터베이스를 복원하려면 복원 작업을 위한 시퀀스(복원 시퀀스)가 필요합니다. 복원 시퀀스는 하나 이상의 전체 백업 복원으로 시작하여 필요에 따라 해당하는 차등 백업을 복원합니다.
각 전체 백업 및 차등 백업에는 데이터베이스를 복구하는 데 사용할 수 있을 만큼의 로그 레코드가 들어 있습니다. 그러나 일반적으로 후속 로그 백업을 순서대로 복원하고 비상 로그 백업(있는 경우)을 복원해야 합니다. 따라서 데이터베이스 복원을 시작하기 전에 비상 로그 백업을 만들어야 합니다. 비상 로그 백업을 통해 데이터베이스를 오류 지점까지 복원할 수 있습니다. 마지막 로그 백업이 복원되면 데이터베이스를 복구해야 합니다.
[!참고]
전체 복구 모델이나 대량 로그 복구 모델에서는 SQL Server 2005 Enterprise Edition 이상 버전에서 데이터베이스가 온라인 상태일 때 파일이나 페이지 또는 둘 다를 복원할 수 있는데 이를 온라인 복원이라고 합니다. 파일 또는 페이지 복원에 대한 RESTORE 구문은 데이터베이스가 오프라인이거나 온라인인 경우 모두 동일합니다.
자세한 내용은 복원 및 복구 개요(SQL Server)를 참조하십시오.