Maria DB 내용을 잃어버린 상태에서의 복구 방법 - yona-projects/yona GitHub Wiki
출처: https://github.com/yona-projects/yona/issues/379
데이터베이스(DB)를 사용하는 모든 시스템이 그러하겠지만 Yona에서도 DB의 백업은 물리적인 파일들의 백업 만큼이나 매우 중요합니다. 클러스터링으로 구성하거나 적어도 주기적으로 백업을 받도록 만들어 놓아야 합니다.
일정 시간의 손실을 감수하지만 가장 쉽고 간단한 방법은 백업 스크립트를 만들어서 일정 시간마다 cronjob으로 실행하도록 만들어 놓는 방법이다.
다음은 만약 불의의 사고로 DB가 영구 손상되었고 DB백업 파일이 없으며 파일시스템만 건재한 경우 남은 데이터를 복구해 내는 방법을 기술합니다.
개요
- 우선 저장소의 코드는 100% 복구 할 수 있습니다. (repo 폴더 이하)
- 업로드 파일도 upload 폴더에 모두 잘 보관되어 있긴합니다만 중복파일 업로드시 편의를 위해 hash id로 이름이 변경되어 있고 실제 파일명은 DB에 저장되어 있어서 DB 파일이 없으면 이름을 살려내긴 현실적으로 어렵습니다.
- 다만 유닉스 명령어를 이용해서 어떤 종류의 파일인지 직접 찾아내고 확장자를 변경해서 읽을 수 있게 변경가능합니다.
file --mime-type 55c15232e51565530d73ed71ab7eb00e51bfa97573aa96b043ceabd34724ebc6
55c15232e51565530d73ed71ab7eb00e51bfa97573aa96b043ceabd34724ebc6: image/png
git 저장소 복구 방법
방법1 - Yona 에서 다시 표시되도록 만드는 방법
- 새로 이전한 Yona 서버에서 미리 동일 소유자 및 동일 이름의 프로젝트를 만듭니다.
- 그 다음 repo/git 폴더에 이전 폴더를 덮어쓰기로 넣어 놓습니다.
예를 들면 이전에 JeongJun 소유자 하위에 translation 이라는 저장소가 있었다면 repo/git 폴더에 JeongJun 폴더와 그 하위에 translation 이라는 폴더가 보이실겁니다. 이 부분을 새 서버에 미리 만들어 놓은 폴더로 기존 파일들을 디렉터리째 붙여 넣으시면 저장소 코드가 보이기 시작하실 겁니다.
방법2 - 로컬PC에서 저장소만 복구하는 방법
백업받은 폴더가 /backup/repo/... 식일 경우 내 /home 아래로 저장소 코드 살려낸다고 가정한다면
git clone /backup/repo/JeongJun/translation
하시면 현재 명령 실해 폴더(/home 으로 가정) 아래로 소스코드들이 되살아난 것이 보이실 겁니다.
방법3 - 개발자 PC로부터 서버 코드 저장소 복구
Yona 에 프로젝트를 만드시고 가장 최신 소스코드를 가지고 있는 개발자가 자신의 local pc의 소스 코드를 해당 프로젝트로 push 합니다.
git push --mirror new-remote-url
기타
극단적인 방법이긴 하지만 만약 메일 발송기능으로 그동안 알림을 받았을 경우 팀 멤버들과 헙력해서 집단지성급(collective intelligence라고 쓰고 메일 노가다 라고 읽는 방법)으로 이슈를 복구해 내는 것도 가능합니다.