DB

MSSQL 2008 R2 MDF 대용량 데이타베이스 파일 복구

by 장석홍 posted Mar 26, 2017
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

MSSQL 2008 R2 로 데이타베이스를 사용하여 어플리케이션과 연동하여 업무를 진행하는 고객으로 어플리케이션에서 일부 데이타가 나타나지 않아 복구 문의를 받은 경우 입니다

서버는 정상작동하여 외장하드를 연결하여 데이타베이스파일인 MDF 파일들을 복사하였고 MDF 파일의 총 용량이 343GB 입니다. 대용량 데이타베이스의 경우입니다

데이타베이스 손상의 경우 소프트웨어 손상으로 데이타베이스 엔진과 연결이 안되거나 이 경우처럼 일부 테이블이나 레코드가 일부 보이지 않는 경우거나 하드디스크에 스크레치(Bad Sector)로 인해 일부 테이블이나 레코드가 일부 보이지 않는 경우입니다

대용량 데이타베이스의 경우 테이블에 레코드 수가 많으면 복구 시간이 상당히 소요됩니다. 접수 시 총 예상시간은 1개월에서 1.5 개월로 산정하였고 급한 테이블부터 복구하여 고객에게 먼저 전달하여 어부의 지장을 최소화하기로 하였습니다

MDF 를 복구하여 확인하면 테이블수가 354개이며 테이블의 레코드 수가 2억개가 넘는 파일이 3개나됩니다. 

[데이타베이스 복구 작업순서]

1. 작업 순서는 테이블을 복구하여 

2. MSSQL에 Import 한 후 

3. MSSQL 에서 백업파일로 받아냅니다.

이 과정에서 MSSQL에 Import 하는 과정 중 레코드가 손상되어 있는 경우 레코드 값이 엉뚱한 값이라 오류가 발생하여 멈추는 경우가 있습니다. 이 레코드를 삭제 후 다시 import 진행하여야 하므로 이 과정에서 시간이 상당히 소요됩니다.

레코드 수가 2억4천만 건인 테이블은 Import 시간만 3일 정도 소요되었습니다. 단, 레코드수도 중요하지만 레코드의 사이즈가 크면 시간이 더 소요됩니다

Import가 완료된 후에도 레코드에 설정된 레코드 Type 과 다른 데이타가 저장된 경우 레코드의 데이타가 손상된 것으로 판단하고 이러한 레코드도 삭제합니다

접수한 데이타베이스 복구는 고객이 우선 순위를 정해준 테이블부터 복구하여 순차적으로 전달하여 최종 마무리까지 예상한 시간인 1.5개월이 소요되었습니다

고객이 보관하고 있는 테이블, 레코드 리스트와 비교하여 판단하는 복구율은 90% 이상입니다. 아마도 하드디스크에 일부 스크레치로 인해 손상된 데이타가 있었던 것으로 판단합니다. 이 경우 시스템을 중지시키고 레리드가 구성되어 있는 하드디스크를 모두 빼서 보내주셨으면 복구율은 더 높았을 것으로 예상됩니다