Docker 업데이트 중 손상된 Digital Ocean의 Discourse 설치 복구

@waffleslop 의 서버를 가능한 한 빨리 정상적으로 가동하고 싶었기 때문에 문제의 원인을 파악하는 데 시간을 들이지 않았습니다. 저는 DigitalOcean에 호스팅된 Discourse 서버를 업그레이드하면서 문제가 없었습니다. 다만, 비표준 설치를 사용하고 있기 때문에 GUI 대신 커맨드 라인을 사용합니다.

긴 시간의 다운타임을 최소화하기 위해 몇 가지 사항을 권장합니다:

  1. 무엇이든 하기 전에 백업을 만드세요! 업데이트를 수행하기 전에 백업을 강력히 권장하는 경고가 인터페이스에 있어야 하지 않을까요? 최근 백업이 있으면 최악의 경우에도 새로운 Droplet을 구동하고 데이터를 복원할 수 있다는 안도감을 줍니다.
  2. 백업에 접근할 수 있는지 확인하세요! @waffleslop 과 저는 /var/discourse 의 사본을 새로운 Droplet으로 가져오는 방법을 파악하는 데 상당한 시간을 보냈습니다. 원래 Droplet에서 매우 이상한 일이 발생하여 파일을 새 Droplet으로 단순히 scp 명령으로 전송할 수 없었습니다. 제 개인 서버의 경우 백업을 S3에 저장하고 매일 밤 로컬 머신으로 복사합니다. 지나치게 과한 조치일까요? 아마도 그렇겠죠. 하지만 어떤 이유로든 시스템이 작동하지 않을 때 다양한 선택지를 제공해 줍니다.
  3. 가끔씩 백업을 테스트하세요. 프로덕션 서버가 다운된 상황에서는 자신이 무엇을 하고 있는지 확신을 가질 필요가 있습니다. 이상적으로는 업데이트를 수행하기 직전에 백업을 테스트하여 프로덕션에서 문제가 발생했을 경우로 돌아갈 수 있는 준비를 해두는 것이 좋습니다. 하지만 프로세스를 머릿속에 생생하게 유지하기 위해 필요한 만큼 백업을 테스트하는 것만으로도 보통 충분합니다.
  4. 두 사람의 머리가 한 사람보다 낫습니다. 이것이 제 이기적인 생각일 수도 있지만, 이러한 상황에 익숙한 누군가와 화면을 공유하며 통화를 할 수 있다면 비상 상황을 훨씬 쉽게 헤쳐 나갈 수 있습니다. 이상적으로는 커맨드 라인을 사용하는 방법을 아는 사람이 좋습니다.

백업만 잘 해두면 업그레이드를 꽤 안전하게 진행할 수 있습니다.

5개의 좋아요