웹 업데이트를 통해 내 Discourse 설치를 최신 베타 버전(2.4.0 beta 11)으로 업그레이드하려고 시도했는데, 지금은 접속이 불가능합니다(직접 확인해 보시면 HTTP 500 오류가 반환됩니다).
배경
설치된 버전은 여전히 2.4.0 beta 6이었고, 2.4.0 beta 11로 업그레이드하려고 했습니다.
상당히 기본 설정(vanilla)으로 설치한 것 같고, 커스텀 플러그인이 있었는지 기억이 나지 않습니다(지금은 확인이 불가능하지만) 하지만 많아야 1~2개 정도였을 것입니다. 대부분의 Discourse 기본 설정을 유지했습니다.
수행한 작업
업데이트 알림 메일에서 받은 원클릭 브라우저 업데이트 링크를 클릭했는데, /admin/upgrade 페이지로 이동했습니다.
웹 업데이트 프로그램에 따르면, 실제 Discourse 버전을 업데이트하기 전에 먼저 docker manager 업데이트를 수행해야 한다고 하여 그렇게 선택했습니다. 몇 가지 작업이 실행되었고, 진행도의 약 절반 지점에서 웹 로그 출력 화면 위에 업그레이드 중 문제가 발생했으니 로그를 확인하라는 메시지가 표시되었습니다. 로그를 스크롤해서 살펴봤지만, 바로 눈에 띄는 내용은 없었습니다. 불행히도 로그를 저장하지 못하고 단순히 페이지를 새로고침했는데, 실패로 인해 업그레이드가 단순히 롤백되었기를 바라며 재시도할 수 있을 것이라 가정했습니다.
흥미롭게도, 그 후 admin/upgrade/ 페이지는 docker_manager가 최신 상태이므로 더 이상 업그레이드가 필요하지 않다고 알려주었습니다. 그래서(아마도 잘못) 업그레이드가 실제로 성공했고 오류 메시지는 버그라고 가정했습니다. 또한 포럼이 여전히 실행 중인지 확인했는데, 실행 중이었고 문제가 없어 보였습니다.
이제 Discourse 설치 자체를 업그레이드할 옵션(이전에는 회색으로 비활성화되어 있었음)이 표시되어 이를 수행했습니다. 다시 로그 출력에 작업 내역이 기록되었는데, 크게 신경 쓰지 않았고, 진행 바가 약 절반 정도 채워졌을 때 로그 출력 위에 무언가 잘못되었다는 유사한 오류 메시지가 다시 표시되었습니다.
그전과 같은 방식으로 페이지를 새로고침하기로 결정했습니다(다시 한번 말하지만, 불행히도 로그를 저장하지 않았습니다). 예상대로, Discourse는 이제 "최신 상태(up-to-date)"로 표시되었습니다.
현재 admin/upgrade/에서 보이는 내용은 다음과 같습니다:
하지만 실제 포럼은 더 이상 작동하지 않으며 500 오류만 반환합니다.
여전히 작동하는 부분
/admin/upgrade/는 여전히 작동하며 Discourse가 최신 상태임을 표시합니다.- “Processes” 탭을 클릭하여 실행 중인 프로세스 목록을 볼 수도 있습니다.
하지만 Backups 탭도 이미 500 오류를 반환하며 /admin도 마찬가지입니다. /admin/upgrade/의 두 탭을 제외하고는 포럼에서 작동하는 부분을 찾지 못했습니다.
복구 방법?
무엇이 잘못되었는지 좋은 아이디어가 없으며, 어디서부터 시작해야 할지도 모릅니다. 웹 인터페이스 없이 오류가 무엇인지 파악하기 위해 로그에 접근하는 방법조차 모릅니다. Discourse 설치 환경은 Digital Ocean에 호스팅되어 있으며, 머신과 아마도 컨테이너에 ssh로 접속할 수 있지만, 로그를 어디서 찾아야 하는지 모릅니다.
로그를 어디서 찾아야 하는지 안내해 주시면 감사하겠습니다.
지금은, 마지막 백업 이후에 게시된 내용을 잃어버리는 것을 감수하고 백업으로 돌아가는 것이 최선의 아이디어입니다(다행히 트래픽이 많지 않으므로 하루치의 콘텐츠 손실은 허용 가능한 수준입니다).
현재 계획 및 부족한 부분
Digital Ocean에서 Droplet의 주간 백업을 설정해 두었고, 내 Discourse 설치 환경은 일일 백업으로 설정되어 있다고 믿습니다. S3를 설정한 적이 없으므로, 백업은 여전히 로컬에 저장되어 있어야 합니다. Digital Ocean Droplet 백업은 5일 전 것이지만, 지난 며칠간의 콘텐츠를 잃고 싶지는 않습니다.
내 대략적인 계획은 다음과 같은 작업을 수행하여 현재 알려진 정상 작동 상태로 백업을 통해 돌아가는 것입니다:
- 오늘/어제의 Discourse 백업을 다운로드합니다.
- Digital Ocean을 통해 5일 전의 마지막 백업으로 Droplet 전체를 롤백하여 다시 작동하는 Discourse 설치 환경을 확보합니다.
- 다운로드한 백업을 가져와 콘텐츠를 복원합니다(마지막 Discourse 백업 이후에 발생한 내용은 제외)
DO를 통해 롤백(단계 2)은 수행할 수 있으며, 백업 가져오기 방법(단계 3)은 도달하면 알아낼 것입니다. 하지만 웹 인터페이스 없이 /admin/backups/가 HTTP 500 오류를 반환하는 상황에서 백업에 어떻게 접근해야 하는지 모릅니다.
SSH를 통해 백업을 찾기 위해 어디를 살펴봐야 하며, DO를 통해 구 Droplet 백업으로 롤백한 후 복원하려면 무엇을 알아야 하나요?
포럼을 검색해 보면 백업을 S3에 호스팅하는 방법에 대한 주제만 찾을 수 있고, 로컬에 저장되었을 때 어디에 있는지については 찾을 수 없습니다.
