이음만을 위한 사흘째 – 데이타의 복구

1.
2004년부터 사용한 듯 합니다. 회사의 제품개발을 위해 Atalassian을 도입하여 사용하였습니다. 처음에는 Jira, Confluence 그리고 마지막은 Fisheye입니다. 소스관리시스테으로 CVS를 사용할 때 Fisheye가 보여주는 화면은 놀라웠습니다. 이 때부터 기회가 닿으면 Atalassian의 제품을 애용합니다.

트레이딩컨설팅그룹 이음을 만들도 파트너들과 함께 일을 시작하면서 다시 Atlassian 제품을 도입하였습니다. 이번에는 정품을 구입하고자 회사 홈페이지를 찾았죠. startup을 위한 라이센스가 있더군요. 10을 기준으로 10달러에 1년을 사용하는 서비스입니다. Fisheye와 Confluence를 구입하였습니다. 2012년 말입니다. 파트너와 협력이라 이용을 잘하는 분도 있고 거의 이용을 하지 않은 분도 있지만 유용하게 사용하였습니다. 그러다 여러가지 이유로 정비할 필요가 생겼고 하루를 잡아서 시스템을 복구하였습니다.

이음만을 위한 하루 – 개발환경 정비

이 때 하지 못한 일이 데이타복구입니다. 개천절 휴일을 이용하여 데이타복구를 시도하였습니다.

2.
먼저 Jira의 복구입니다. 간단히 작업을 하였습니다. 이미 Jira에서 백업을 해두었던 XML데이타를 이용하여 복구하였습니다. 이미 생성한 프로젝트를 정비하였죠. 이미 사라진 프로젝트인 ZeroM을 ZeroAOS 1.0이라는 카테고리를 만들어 옮겼습니다. 개별 프로젝트로 나뉘어 있던 제품들도 ZeroAOS 2.0 프로젝트의 Component로 옮겼습니다. ZTerminal, ZeroOMS, ZeroBOG, ZeroVE 등.

Jira는 다양한 시스템으로부터 데이타를 가져올 수 있습니다. External System Import입니다. 가장 많이 사용하는 것이 CSV입니다. 이 때 유념해야 할 것이 UTF8입니다. 아무 생각없이 Excel에서 CSV로 저장하면 데이타가 깨집니다. 여러가지를 시험해볼 결과 가장 편하고 표준을 지켜주는 것이 Google drive가 제공하는 spreadsheet입니다.

다음은 문제의 Confluence입니다. 두가지 문제였습니다. MySQL로 지정하여 복구를 하였는데 시스템환경을 보니까 HSQLDB로 되어 있더군요. 다른 하나는 데이타의 복구입니다.

먼저 MySQL로 설치를 다시하는 것입니다. 여러가지 시도를 하다 환경설정에 놓쳤던 부분을 발견하였습니다. 정리합니다.

우선 MySQL의 JDBC Driver를 /confluence/WEB-INF/lib에 복사를 합니다.

둘째 /lib에 있는 server.xml에 아래를 추가합니다.물론 환경에 맞도록 수정하여야 합니다.

마지막으로 /confluence/WEB-INF/web.xml에 아래를 추가합니다.

이상을 자세히 보려면 Configuring a MySQL Datasource in Apache Tomcat을 참고하세요.

이제 문제의 두번째입니다. 시스템을 재설치를 할 때 Confluence는 로그인 문제로 시스템에서 데이타를 백업하지 못했습니다. 그래서 MySQL의 데이타베이스 파일을 복사해놓고 OS를 설치했습니다. 사단의 시작은 MySQL의 파일구조를 잘 몰랐다는 점입니다. 데이타베이스 디렉토리에 있던 frm 파일을 백업하면 가능하리라 생각했지만 어제 검색을 해보니 ibdata, ib_logifle이 더 있어야 하더군요. 사고치기 전에 먼저 준비하고 생각하자. 이것이 교훈입니다.(^^)

How to Recover InnoDB MySQL Table Data from ibdata and .frm Files

어떤 분은 복구를 하는 쉘 프로그램을 만들어 공개했습니다. 저는 시험해볼 경우가 아니지만…

3.
ZeroAOS를 위한 프로젝트 도구를 정비한 이유중 하나는 ZeroAOS와 관련한 문서를 잘 정리해서 고객에게 제공하기 위함입니다. 그래서 Confluence가 무척이나 중요했습니다. 분실한 문서는 문서고, 다시금 ZeroAOS 2.0을 위한 문서를 새롭게 만들려고 합니다. 오래전에 등록하였던 zeroaos.com을 이용하여 제공합니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.