디스크 장애에 의해 SQL Server 데이터베이스 파일이 손상되는 시나리오에 대해서 생각해 봤습니다. 만약 이러한 손상이 발생한다면 데이터 파일 손상(mdf, ndf)과 트랜잭션 로그 파일 손상(ldf)으로 나눌 수 있겠죠? 복구 절차에 대해서 아래와 같이 정리하였습니다.
1. 데이터 파일이 손상된 경우 복구 절차
장애 발생으로 인해 이미 데이터베이스 액세스가 실패되는 상황이라면 현재의 트랜잭션 로그를 백업 받을 수 없으므로 마지막 전체(Full) 또는 트랜잭션 로그를 백업 받은 시점까지 복원 가능합니다. (단, 데이터베이스 복구 모델이 ‘Full’ 로 설정되어 있어야 합니다)
가. 데이터베이스 오프라인 상태로 만들기
나. 데이터베이스 분리
다. 손상된 파일 이름 변경
탐색기를 사용하여 기존 MDF,NDF,LDF 파일의 이름을 변경하거나 다른 폴더로 이동합니다.
라. 백업 세트를 사용하여 데이터베이스 복구 (마지막 트랜잭션 로그 백업 시점까지 복원 가능)
// Full Backup이후 복구 시점까지의 트랜잭션 로그 복원
RESTORE LOG [LAIGODB] FROM DISK = ‘os_file_name‘ WITH NORECOVERY
...
RESTORE LOG [LAIGODB] FROM DISK = ‘os_file_name’ WITH RECOVERY
2. 트랜잭션 로그 파일이 손상된 경우 복구 절차
가. 트랜잭션 로그 파일 생성
나. 액세스 제한을 멀티 유저로 변경
복원이 완료되면 일관성 검사 및 로그 설정 등의 작업이 추가적으로 이뤄져야겠습니다.
아,.... 이런 일은 발생하지 않아야 할 텐데 말이죠.....;;;
[참고자료]
데이터베이스 시점 복원 방법
http://laigo.kr/61
작성자 : Lai Go / 작성일자 : 2011.03.16