개발 이야기/Java

Redmine 백업하기 - MySQL 백업.

시반 2010. 3. 5. 19:19

Redmine 백업하기 – MySQL 백업.

 

지난시간에는 cwRsync를 이용한 Redmine 파일 시스템 백업에 대하여 살펴보았다면 이번에는 DB백업에 대한 부분을 언급할까 한다.

Redmine을 서비스하기 위해 사용되는 DB PostgreSQL,MySQL,SQLite 세가지지만. 우리 팀에서야 MySQL을 사용하고 있으니MySQL을 중심으로 설명을 진행하도록 하겠습니다.

 

 

위 그림에서도 나와 있지만 대부분의 프로젝트들이 CharacterSet 으로  UTF-8을 사용하고 있지만 Redmine의 경우 기본 설치시

기본 인코딩 타입은 Latin1입니다. 그렇다고 Redmine에서 한글 저장이 안되는 것은 아니지만 DB이전등을 하려고 하는 경우

UTF-8 문자열들이 깨지는 경우가 있다고 하니 처음 설치할 때 utf8로 설정하는 것이 좋을 듯 싶습니다.

 

앞서 말한대로 이전작업을 위한 백업 및 복구 절차를 위한 것이기 때문에 이전시에 인코딩타입도 utf8로 한번 바꿔보았습니다.

 

1. 기존 데이터의 백업

mysqldump를 이용하여 기존 데이터를  old_db.sql이라는 이름으로 백업합니다.

 

c:\redmine\mysql>mysqldump –uroot –p –default-character-set=latin1 bitnami_redmine > old_db.sql

Enter password: ********

 

old_db.sql 파일을 열어 latin1 utf8로 일괄변환한 다음 new_db.sql 로 저장합니다.

 

2. 데이터베이스 생성

이전  서버에 mysql을 설치하고 bitnami_redmine이라는 이름으로 데이타베이스를 생성합니다.

 

c:\redmine\mysql>mysql –uroot –p

Enter password: ******** ~중략~

mysql> drop database bitnami_redmine;

mysql> create database bitnami_redmine COLLATE utf8_general_ci;

 

3. 데이터 복구 

새로만든 bitnami_redmine에 앞서 백업 받은 데이타파일을 기본 charactoer-set을 utf8로 해서 복구합니다.

 

c:\redmine\mysql>mysql –ubitnami –p –default-character-set=utf8 bitnami_redmine < new_db.sql

Enter password: ********

 

 

4. Redmine DB접속정보 변경 

MySQL 설치폴더에서  my.ini 파일을 열어 다음과 같이 수정합니다.

 

[client]
default-character-set=utf8

 

[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

 

[mysql]
default-character-set=utf8

 

show variables like 'c%'; 로 확인해보면  대부분의 characterSet들이 utf8로 변경되어 있슴을 확인할 수 있습니다.

 

 

5. Apache 재시작

http://서버주소/redmine redmine이 정상적으로 보여지는지 확인하면 됩니다.

이 때 redmine은 정상적으로 뜨지만 메뉴 등의 글자가 ???? 등으로 표시된다면 redmine 이하 lang 디렉토리에서 ko.yml 파일을 열어 utf8 형식으로 저장합니다.

아니면  get/redmine 등이 표시되면서 redmine 페이지 자체가 열리지 않는 경우 redmine 이하 config 디렉토리의  database.yml  파일의 production 항목에 encoding:utf8을 추가해 줍니다.

간혹 반대로 database.yml encoding:utf8 이 있는 경우에도 동일 증상이 발생할 수 있습니다.

이 경우에는 오히려 이 구문을 삭제한 후 아파치를 재시작하면 정상적으로 로드되는 것을 확인할 수 있습니다.

 

마치며...

Redmine DB이전작업은 별 내용 없이 MySQL 백업 및 복구에 대한 부분만 처리했습니다. 앞서 말한바와 같이 DB이전 부분은 cwRsyn 이용한 백업 및 복구는 해보지 못했지만 차후 한번 시도해 봐야 할 부분이고 한가지 아쉬웠던 점은 Redmiine버젼의 최신버젼이  0.9X버젼인데 비해 현재 연구소 설치버젼은 0.8X 버젼이라 이번 기회에 업그레이드를 하려했지만  DB 마이그레이션 부분이 가이드만큼 쉽게 진행되지는 않아 동일버젼으로만 이전작업을 마치게 되었다는 점이다.

시간을 내서라도 다시 한번 시도해봐야 할듯 싶다. 일단은 여기서 마무리..