이 연재는 NAS가 죽으면서 시작했습니다. 하드디스크는 멀쩡했는데 꺼내는 방법을 몰라 데이터를 잃었고, 새 NAS를 사서 처음부터 다시 지었습니다.
마지막 편은 그 이야기로 돌아갑니다. 같은 일을 두 번 겪지 않으려면 무엇이 필요한가.
RAID는 백업이 아닙니다
제가 오래 오해했던 게 이겁니다. 디스크 두 개를 묶어 같은 내용을 저장해 두었으니 안전하다고 생각했습니다.
아니었습니다. RAID가 막아주는 건 디스크 한 개가 고장 나는 상황 하나뿐입니다. 그 외에는 아무것도 막지 못합니다.
| 이런 일이 생기면 | RAID가 막아주나 |
|---|---|
| 디스크 하나 고장 | 막아줌 |
| NAS 본체 고장 | 못 막음 — 제 경우가 이것이었습니다 |
| 실수로 파일 삭제 | 못 막음 — 양쪽에서 같이 지워집니다 |
| 랜섬웨어 감염 | 못 막음 — 양쪽 다 암호화됩니다 |
| 화재·도난·침수 | 못 막음 |
제 NAS는 디스크가 아니라 본체가 죽었습니다. RAID로 아무리 잘 묶여 있어도 소용없는 상황이었습니다. 그리고 그게 RAID의 결함이 아닙니다. 애초에 그걸 막으라고 만든 물건이 아니니까요.
RAID는 기계가 멈추지 않게 해주는 장치이지, 데이터를 지켜주는 장치가 아닙니다.
3-2-1이라는 기준
백업을 얘기할 때 흔히 나오는 원칙입니다. 저는 이걸 알면서도 지키지 않고 있었습니다.
- 3 — 사본을 세 벌 둔다 (원본 포함)
- 2 — 서로 다른 매체에 둔다
- 1 — 그중 하나는 다른 장소에 둔다
제 상태는 1-1-0이었습니다. NAS 한 대에 원본만 있고, 다른 매체도 없고, 집 밖에도 없었습니다. RAID를 백업으로 착각하고 있었으니까요.
세 벌을 다 갖추는 게 부담스러우면 마지막 하나(다른 장소)부터 챙기시길 권합니다. 집에 있는 사본은 집에 무슨 일이 생기면 같이 사라집니다.
중요한 순서대로 나눴습니다
전부 백업하려니 용량도 비용도 부담이었습니다. 그래서 잃었을 때 아픈 순서로 나눴습니다.
| 등급 | 무엇 | 다시 만들 수 있나 |
|---|---|---|
| 절대 | 가족 사진·영상, 개인 문서 | 불가능 |
| 중요 | 블로그 데이터베이스, 설정 파일 | 어렵고 오래 걸림 |
| 보통 | 받아둔 자료, 미디어 파일 | 다시 구할 수 있음 |
기준은 하나입니다. 돈으로 다시 살 수 있는가. 살 수 있으면 없어져도 복구가 됩니다. 아이 사진은 돈으로 못 삽니다.
맨 윗줄만 확실히 챙겨도 제가 겪은 일의 대부분은 피할 수 있었습니다. 용량으로 따지면 전체의 아주 작은 부분입니다.
데이터베이스는 파일 복사로 백업하면 안 됩니다
블로그를 돌린다면 이건 따로 알아둬야 합니다. 9편에서 데이터베이스를 도커 볼륨으로 옮기면서 알게 된 것이기도 합니다.
돌아가고 있는 데이터베이스의 파일을 그대로 복사하면 깨진 백업이 됩니다. 복사하는 도중에도 내용이 계속 바뀌기 때문에, 앞부분과 뒷부분의 시점이 어긋납니다.
덤프를 떠야 합니다. 데이터베이스가 스스로 일관된 시점의 내용을 뽑아줍니다.
docker exec 컨테이너이름 mariadb-dump -u root -p"비밀번호" DB이름 > backup.sql
워드프레스는 데이터베이스와 업로드 폴더 두 가지가 있어야 복원됩니다. 글과 설정은 데이터베이스에, 사진은 폴더에 들어 있습니다. 한쪽만 있으면 반쪽짜리입니다.
복원해 보지 않은 백업은 백업이 아닙니다
마지막이자 가장 중요한 이야기입니다.
백업을 켜두면 안심이 됩니다. 그런데 그 파일이 실제로 되살아나는지 확인해 본 적이 없다면, 안심하고 있을 뿐 지켜지고 있는지는 모르는 상태입니다.
백업이 조용히 실패하는 경우가 생각보다 흔합니다. 용량이 차서 멈췄거나, 경로가 바뀌었거나, 권한 때문에 빈 파일만 쌓이고 있을 수 있습니다. 이 연재 9편이 바로 권한 하나 때문에 아무것도 안 써지던 이야기였습니다.
그러니 한 번은 꺼내 보셔야 합니다. 사진 몇 장을 다른 곳에 복원해 열어보고, 데이터베이스 덤프로 사이트를 한 번 되살려 보는 겁니다. 그때 비로소 백업이 있는 겁니다.
정리
- RAID는 백업이 아닙니다. 디스크 한 개 고장만 막아줍니다. 본체 고장·실수 삭제·랜섬웨어는 못 막습니다.
- 3-2-1을 다 못 지키겠다면 “다른 장소에 하나”부터 챙기십시오.
- 전부 백업하려 하지 마시고 돈으로 다시 못 사는 것부터 나누십시오.
- 데이터베이스는 파일 복사가 아니라 덤프로 뜹니다. 워드프레스는 데이터베이스와 업로드 폴더가 모두 필요합니다.
- 복원해 보지 않은 백업은 백업이 아닙니다. 한 번은 꺼내서 열어보십시오.
NAS 한 대가 죽으면서 시작한 이야기를 여기서 마칩니다. 잃은 데이터는 돌아오지 않지만, 덕분에 알게 된 것들을 적어두었습니다. 같은 자리에서 막히신 분께 조금이라도 시간을 아껴드렸으면 합니다.
NAS 복구·재구축 연재 — 전 11편 중 11편
1막 · 잃음
2막 · 다시 지음
3막 · 그 위에 블로그를 올림
- 나스 한 대로 블로그 두 개, 병목은 CPU가 아니었습니다
- 도커로 워드프레스 스택 분리하기, 멀티사이트를 안 쓴 이유
- MariaDB가 Permission denied로 죽는다, 시놀로지 ACL 함정
- 포트포워딩 없이 도메인 붙이기, 관리자 화면은 숨기기
- 같은 일을 두 번 겪지 않으려고, RAID는 백업이 아닙니다 — 지금 읽는 글