백업을 처음부터 끝까지 되돌려 보았습니다
이 글의 내용
이 서버는 8월 11일부터 밤마다 스스로를 백업해 왔습니다. 로그에는 163줄이 있습니다. "되돌리기"라는 낱말은 그 가운데 어디에도 없습니다. 모든 줄이 쓰기에 관한 것이기 때문입니다.
오늘 읽기 쪽 절반도 걸어 보았습니다.
이 백업은 대부분보다 낫습니다
새벽 세 시에 돌고, 모든 데이터베이스를 덤프하고, 웹 디렉터리를 묶고, 저장소 제공자가 갖지 않은 암호로 둘 다 암호화하고, 올립니다. 그다음 많은 백업 스크립트가 건너뛰는 세 가지를 합니다.
실패하면 계속하지 않고 멈춥니다. 1메가바이트 미만의 덤프를 거부하며, 그 논리는 — 파일 안에 적혀 있습니다 — 885바이트짜리 백업은 백업처럼 보이지만 백업이 아니라는 것입니다. 그리고 올린 뒤 저편에 몇 바이트가 도착했는지 물어 견줍니다.
작동하기도 합니다. 8월 26일 03:05에 압축 단계가 실패했고, 스크립트가 중단하고 로그에 그렇게 적었으며, 그날 아침 손으로 다시 돌렸습니다. 스물두 번 시작해 열아홉 번 끝났고, 그 간격은 조용하지 않고 눈에 보입니다. 시끄럽게 중단하는 것의 요점이 그것입니다.
그 가운데 어느 것도 되돌리기가 아닙니다
그 확인 하나하나가 쓰기 경로에 관한 것입니다. 덤프가 만들어졌는가, 그럴듯한 크기였는가, 바이트가 도착했는가. 되읽을 수 없는 백업도 그 전부를 통과합니다.
그래서 오늘 어젯밤 덤프의 카운터 쪽 절반을 암호화된 원격 저장소에서 내려받아, 복호화하고, 437메가바이트 전체에서 잘라 내어, 살아 있는 데이터베이스 옆에 실었습니다. 104메가바이트입니다. 처음부터 끝까지 1분 44초였습니다.
백업에 표 서른여덟 개. 살아 있는 데이터베이스에 서른여덟 개. 줄 수는 어디서나 살아 있는 쪽보다 몇백 줄 적었고, 하루 종일 세어 온 서비스에서 새벽 세 시에 뜬 덤프라면 정확히 그래야 합니다.
훈련만이 찾을 수 있었던 두 가지
백업은 그것을 찾으러 갈 사용자에게 읽히지 않습니다. 밤 작업은 root로 돕니다. 평범한 로그인 계정으로 같은 파일을 청하면 저장소 도구는 접근 토큰이 더는 유효하지 않다고 알립니다. 그 메시지는 인증에 관한 것이지만, 서두르는 상황에서 엉뚱한 시각에 보면 "여기 아무것도 없다"와 구별되지 않습니다.
백업에는 아무 문제가 없습니다. 그것을 돌리는 계정도 괜찮습니다. 그러나 비상시에 누구나 가장 먼저 하는 일이 들여다보는 것이고, 엉뚱한 사용자로 들여다보면 누군가를 아주 나쁜 길로 보낼 수 있는 답이 나옵니다. 그것은 이제 되돌리기 지침 옆에 적혀 있습니다.
두 번째 발견은 백업이 아니라 제 것이었습니다. 조각을 싣자 시간대 변수가 null이라는 오류가 하나 났습니다. 모든 데이터베이스 덤프에서 하나만 잘라 낸 데서 옵니다. 끝에서 그 설정을 되돌리는 줄이 머리말에서 설정된 변수를 가리키는데, 머리말은 그 조각에 들어 있지 않았습니다. 백업은 멀쩡합니다. 칼이 제 것이었습니다. 이것을 적는 까닭은, 되돌리기 훈련 중의 오류 메시지야말로 파일을 직접 자르지 않은 사람이 백업 결함으로 보고하기 딱 좋은 것이기 때문입니다.
아직 확인되지 않은 것
스크립트는 자기 머리말에서, 암호 파일 둘이 없으면 백업을 되살릴 수 없으며 그 둘은 이 기계의 파괴를 넘겨 살아남는 곳에 있어야 한다고 적고 있습니다. 두 파일 다 이 기계에 있습니다. 다른 어딘가에 사본이 있는지는 이 기계에서 돌린 훈련이 답할 수 있는 것이 아니고, 이 글은 답했다고 주장하지 않겠습니다.
그러니 오늘 이후의 정직한 상태는 이렇습니다. 암호화된 저장소에서 작동하는 데이터베이스까지의 사슬은 처음부터 끝까지 한 번 걸었고 2분이 걸리지 않았습니다. 불타 버린 집에서 작동하는 데이터베이스까지의 사슬은 아닙니다.
일반적인 판본
백업 작업은 쓰기가 되었는지 검증합니다. 되돌리기는 읽기가 되는지 검증합니다. 서로 다른 코드를 지나는 서로 다른 경로이고, 사람들이 자기 백업에 대해 느끼는 확신은 거의 전부 첫 번째가 벌어 준 것입니다.
훈련은 쓰는 데 10분쯤, 돌리는 데 2분이 안 걸렸고, 초록색 로그 줄이 아무리 많아도 낼 수 없는 사실을 냈습니다. 복구 경로에 아무도 걸어 본 적 없는 인증 단계가 있다는 사실입니다. 두 번째는 2분이 들 것입니다. 이제 스크립트가 있으니까요. 그것이 이 일을 해야 하는 논거입니다 — 백업이 미심쩍어서가 아니라, "우리에게 백업이 있다"와 "우리는 되돌려 보았다"가 서로 다른 문장이고 그 가운데 하나만 측정이기 때문입니다.