242. 미디어 회복 (Media Recovery) - 디스크 손상 백업 덤프(Dump) 아카이브 로그 롤포워드(Roll-forward) 데이터베이스 재난 복구 장애

핵심 인사이트: (232번 최악의 3번 장애 극복법) "야!! 234번 Redo, 235번 Undo, 241번 Checkpoint 다 필요 없어 ㅆㅂ!! 지진이 나서 우리 회사 은행 원본 엑셀이 저장된 '하드디스크(쇳덩어리)' 자체가 불타서 산산조각이 났어(미디어 장애)!! 로그 파일? 그것도 같은 쇳덩어리 안에 있어서 같이 타버렸어!! 우주 멸망이야!!" 사장님이 권총을 꺼낸다. DBA(관리자)가 덜덜 떨며 창고에서 낡은 카세트테이프 하나를 꺼내 든다. "사..사장님!! 제가 쫄보라서 매일 밤 12시에 은행 엑셀 원본 전체를 복사(Dump)해서 저기 강원도 비밀 벙커의 안전한 테이프에 몰래 백업해 뒀습니다!! 그리고 밤 12시부터 오늘 불타기 직전까지의 변경 기록(Archive Log)도 USB에 따로 빼놨어요!! 당장 용산 가서 새 빈 하드디스크 하나 사 오십쇼!! 어젯밤 12시 백업본(Dump)을 새 하드에 콸콸 들이붓고!! 그 뒤에 오늘 낮까지의 USB 기록(Archive Log)을 처음부터 끝까지 미친 듯이 Redo(롤포워드) 때려버리면 10시간 뒤에 100% 완벽하게 부활합니다!!" 쇳덩어리의 죽음을 뛰어넘어 영혼을 부활시키는 DB 최후의 연금술, 미디어 회복이다.

Ⅰ. Redo/Undo의 무력함 (미디어 장애의 공포)

  • 234번 Redo(재실행)와 235번 Undo(취소)는 어디까지나 "원본 하드디스크(Data File)와 로그 파일(Log File)은 흠집 하나 없이 멀쩡하게 살아있고, 메모리(RAM)만 뻗었을 때(시스템 장애)" 부리는 잔재주입니다.
  • 미디어 장애 (Media Failure): 불이 나거나, 디스크 헤드가 긁혀서 쇳덩어리(디스크) 원본 자체가 물리적으로 박살 나버리면, 로그 파일도 같이 잿더미가 되므로 Redo/Undo 흑마법을 부릴 주문서조차 사라집니다.

Ⅱ. 미디어 회복 (Media Recovery)의 개념 🌟

  • Media (매체, 즉 디스크/테이프 등 하드웨어 저장소)
  • 개념: 데이터베이스가 저장된 비휘발성 저장 장치(디스크)가 물리적으로 손상되었을 때, 물리적으로 다른 안전한 장소에 주기적으로 복사해 둔 '전체 백업(Dump)' 데이터와, 백업 이후의 변경 기록을 따로 빼둔 '아카이브 로그(Archived Log)'를 조합하여 새로운 빈 디스크에 시스템을 처음부터 재건축해 내는 최후의 재난 복구(DR) 기법입니다.

Ⅲ. 미디어 회복을 굴리는 3대 구원의 성물 🌟 핵심 기출 🌟

1. 덤프 (Dump / 전체 백업) - "과거 사진 통째로 굽기"

  • 미디어 회복의 시작점입니다.
  • 관리자는 DB 트래픽이 가장 없는 새벽 3시에, 시스템을 잠깐 멈추거나 락을 걸고 그 시점의 DB 엑셀 원본(수백 GB) 전체를 통째로 복사해서 물리적으로 다른 건물(또는 테이프 장치)에 콸콸 쏟아버립니다(Dump).
  • 이 덤프 파일 하나만 부으면 무조건 완벽한 '어제 새벽 3시'의 은행 상태로 돌아갑니다.

2. 아카이브 로그 (Archived Log) - "USB에 빼돌린 일기장"

  • 어제 새벽 3시에 덤프(백업)를 떴고, 오늘 오후 3시에 디스크가 불탔습니다.
  • 덤프만 부으면 은행은 12시간 전인 어제 새벽 3시로 타임머신을 탑니다. 오늘 아침에 입금한 10만 명의 고객 돈이 허공으로 날아가(데이터 유실) 폭동이 터집니다.
  • 방어책: 237번에서 배운 로그 파일(블랙박스)이 꽉 찰 때마다, 덮어쓰지 않고 USB나 다른 안전한 디스크로 로그 파일 자체를 복사해서 빼돌려 영구 보존합니다. 이것이 아카이브 로그입니다. 이 로그에는 어제 새벽 3시부터 오늘 오후 불타기 직전까지의 12시간 치 고객 입금 내역이 빼곡히 살아 숨 쉬고 있습니다.

3. 복구 로직: 롤 포워드 (Roll-forward)의 미친 질주 🌟

새 하드디스크를 서버에 꽂았습니다.

  1. 덤프 들이붓기: 어젯밤 12시 덤프 파일을 붓습니다. DB가 어젯밤 상태로 부활했습니다.
  2. 롤포워드(Redo) 폭격: 아카이브 로그(USB)를 꽂습니다. 로그에 적힌 오늘 아침 9시의 "홍길동 1만 원 입금"부터 오후 2시 59분의 "이순신 출금"까지, 수백만 개의 쿼리를 시간 순서대로 미친 듯이 Redo(재실행) 덮어쓰기하며 미래로 쫙쫙 진도를 밀고 나갑니다(Roll-forward).
  3. 부활: 로그를 끝까지 다 밀고 나면, 기적처럼 오늘 오후 3시 불타기 0.1초 전의 완벽한 최신 상태로 DB가 100% 수복됩니다.

Ⅳ. 치명적 단점 (다운타임 폭발)

  • 속도: 100GB짜리 덤프를 디스크에 붓고, 12시간 치 로그를 앵무새처럼 처음부터 끝까지 다 다시 실행(Redo)해야 합니다.
  • 복구하는 데 짧게는 수십 분, 길게는 며칠이 걸립니다(Downtime 폭발). 이 며칠 동안 회사는 영업을 못 해 수십억을 날립니다. 그래서 현대 은행은 이 미디어 회복을 안 쓰려고 아예 똑같은 DB 기계 2대를 1,000km 떨어진 곳에 동시에 살려두는 '이중화(Active-Active 클러스터링, 213번 MSA)' 돈지랄을 필수적으로 해둡니다.

📢 섹션 요약 비유: **미디어 회복(Media Recovery)**은 불에 타 잿더미가 된 소설가의 집(하드디스크 파괴)에서 **'외장하드와 복사본으로 소설 1,000페이지를 영혼까지 재건축하는 최후의 발악'**입니다. 소설가의 메인 노트북이 불탔습니다. 원본 파일 1,000페이지가 잿더미가 됐습니다(미디어 장애). 소설가가 오열할 때, 매니저(DBA)가 나타납니다. "어제 밤에 당신이 잔소리 듣고 짜증 내며 외장하드에 통째로 압축해서 복사해 둔 900페이지짜리 백업 파일(Dump)이 우리 집에 안전하게 있습니다! 그리고 당신이 오늘 아침 카페에서 100페이지를 더 쓰면서, 1장 쓸 때마다 카톡 내게쓰기(아카이브 로그 Archived Log)로 꼬박꼬박 문장을 백업해 뒀더군요!" 매니저는 하이마트에서 새 노트북을 사 옵니다. 일단 어젯밤의 900페이지 복사본을 바탕화면에 풉니다(Dump 복원). 그다음 카톡 내게쓰기 기록(로그)을 보면서, 오늘 아침에 쳤던 100페이지 분량의 글씨를 토시 하나 안 틀리고 미친 속도로 다시 타이핑(Redo / Roll-forward)해서 원고지에 쏟아붓습니다. 10시간의 피 터지는 타이핑 노가다(복구 시간 지연) 끝에, 불타기 1초 전의 완벽한 1,000페이지짜리 소설이 새 노트북에 100% 동일하게 부활하는 데이터베이스의 궁극적 기적입니다.