SharedIT | 묻고 답하기(AMP)

레이드 카드 드라이버가 고장나면서 MSSQL DB에 문제가 생겼습니다..ㅠ

안녕하세요 외국에 거주중인 서버 관리자+잡무 관리자 입니다.

4년정도 잘 사용하던 델 R610서버가 갑자기 먹통이 되어있길래 확인해보니 레이드로 묶어놓은 하드가 패일 되서 부팅이 불가능하다고 떠있더라구요. 레이드는 10으로 묶어놨습니다.(아마 여기서부터 에러인거 같습니다.... 왜 10 인지....ㅡㅡ;;)
그래서 확인해보니 그중 한개의 드라이브가 패일이 뜨더라구요.. 그래서 다른 하드로 교체 하고 다시 이니셜라이즈 하고 부팅이 되긴 했는데.. DB가 깨져있는거 같습니다. 그래서 급하게 DB만 백업 받아놓고 다른 서버로 옴겨서 리스토어 시켰는데 게속해서 이런 메세지가 뜨네요...

"SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0x00000001; actual: 0x25c12e81). It occurred during a read of page (1:37824) in database ID 5 at offset 0x00000012780000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\CountDB2.mdf'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online."

그리고 원래 사용하던 서버는 또다시 하드 패일이라고 뜹니다... 하드를 여러개 바꿔보았지만 잘되다 몇일지나면 또 패일... 나중엔 하드가 죽어버리는 일이 발생했습니다..ㅠ 레이드 카드가 문제였던거 같습니다. 그래서 일단 새로 오더 하고 사용하니 전혀 문제가 없네요....

가장 큰 문제는 지금 DB복구가 안된다는 점입니다....외부업체를 통해서 사용하는 DB랑 프로그램인데 그쪽에서도 전혀 손을 못쓰고 있습니다... 테이블 하나만 가져오면 되는데.. 그 테이블에서 게속 저 에러 메세지가 뜹니다.. 이건 복구 불가능한건가요???? 3년치 데이타가 사라져서.... 미치겠습니다....ㅠ

5개의 답변이 있습니다.

차바라기
  0 추천 | 5년 이상 전
백업을 해놓았으면 문제가 없을텐데 레이드 컨트롤 장애면 문제가 있을듯 합니다.
양성환
  0 추천 | 6년 이하 전
DB에서 1+0 는 성능상 많이 사용합니다. 
우선, 디스크를 온라인에서 변경을 하는 것은 매우 위험한 작업입니다. 

현재는 데이터가 깨진 것인데 단일사용자모드로 변경 하여서 CHECKDB 를 수행하여야 합니다. 
OMEGA 님이 알려주신 CHECKTABLE 을 모두 묶어서 확인 가능한것이 CHECKDB 이고 옵션이 3가지가 있는데 REPAIR_ALLOW_DATA_LOSS 는 복구가 불가능한 부분은 삭제까지 할 수 있습니다.

하지만, 살아남기 힘들것 같습니다.
낭만생선
  0 추천 | 6년 이하 전
아래 오메가 님이 깔끔하게 답변을 주셨네요.

1. Raid 1+0 구성은 잘한일
2. C에 DB 파일까지 배치한것은 못한일 ㅜㅜ
3. 하드의 문제가 아니라 말씀 하신것처럼 Raid 카드의 문제인걸로 보이네요. 쓰기가 제대로 안되면서 DB 파일안에 페이지 단위로 깨진..
4. 오메가님이 주신 명령으로 돌려 보면 아마 접근은 가능하게 될겁니다.
5. 아마도 복구가 끝나도 저 페이지에 해당 하는 데이터를 조회 할때 결과가 안나오고 에러가 뜰수 있으니 피해서 쿼리하여 다른 테이블로 Export 하여 살리는게 유일한 방법일듯합니다.
6. 나중에라도 재구성 하실 수 있다면 C 영역은과 D(Data) 영역은 구분 하시는게 좋을듯합니다.
    지금 처럼 두면 MSSQL Data 늘어 나고 I/O 많아지면 OS 자체가 엄청 버벅입니다.
omega
  0 추천 | 6년 이하 전
DB에서 1+0를 쓰는건 전혀 이상한 일이 아닙니다만, 시스템 영역과 DB영역 구분을 하지 않고 통으로 해두신 것 같네요
I/O 이상으로 DB일관성이 깨진 경우인데, DBCC를 통해서 복구를 해보실 수 있으나, 백업이 없다면 어느정도 손실은 감수하셔야 될 것 같습니다. DBCC CHECKTABLE ('Table_name', REPAIR_ALLOW_DATA_LOSS) 명령으로 진행을 한번 해보세요
백업은 반드시 하세요...SQL유지관리기능으로만 하셔도 됩니다.
wansoo
  0 추천 | 6년 이하 전
디스크가 오류나면서 mdf DB file에 오류가 생긴것 같네요.
백업 자료를 복구하는게 맞을것 같습니다.