본문 바로가기

프로그래밍/MySQL

레드마인 업그레이드시 DB한글 깨짐 현상 해결

레드마인 업그레이드(0.9.x --> 2.x) MySQL DB 백업 및 복구시 한글 깨짐 현상

 

1. 개요

  레드마인의 0.9.x 버전을 무심코 기본 값으로 설치 했을 경우 MySQL 서버의 기본 문자셋이 "latin1"으로 설정 되어 저장 된다.

그런데 2.x버전대의 레드마인을 설치 하면 기본 값으로 "utf8"로 설치 되기 때문에 문자셋 간의 변경에 신경을 써야 한다.

 

구버전의 mysql DB를 mysqldump를 이용하여 백업하게 되면 백업된 파일내의 한글 TEXT가 모두 깨져 보이게 되는데 구글링을 해 보니 다음과 같이 문자셋을 주어 백업 하라고들 한다.

 

  1)  mysqldump.exe -u username -p --default-character-set='latin1' databasename > D:\backup\backup_redmine.sql

  2)  이렇게 백업된 "backup_redmine.sql " 파일을 에디터로 열어서 "latin1"을 "utf8"로 변경한 후에

        --> 이말은 백업된 파일이 TEXT파일이니 내부에 문자셋 지정 문자열인 "latin1"을 모두 "utf8"로 변경 시키라는 말이다.

  3)  새로 설치한 MySQL DB에서 "mysql.exe -u username -p databasename < backup_redmine.sql" 실행

  4) rake를 이용한 마이그레이션

 

그러나 이번 경우만(0.9.x --> 2.x)로 업그레이드 하는 경우만 그런지는 알 수 없으나 백업한 파일 자체에 한글이 모두 깨져 이게 되어 결과적으로 아무리 복구를 해도 한글 깨짐을 막을 수 없게 된다.

 

2. 해결 방안

 

  1) 첫번째 시도는 백업시 콘솔 창에서 "--default-character-set"을 "euc-kr", "utf8"등 다양하게 바꿔서 백업을 해 보는 등 문자 셋을 주어도 백업된 파일내의 한글은 모두 깨져서 저장 되었다.

 

  2) MySQL GUI 관리자인 "heidisql" 프로그램을 이용하여 해당 레드마인 DB에 접속하여 쿼리를 날리니 결과 값 또한 깨져서 보이는데 이때 heidisql 프로그램의 쿼리 창에서 "show variables" 명령을 내려 보면 다음과 같이 MySQL 서버의 문자셋과 클라이언트의 문자셋 불일치로 인한 한글 깨짐 현상을 인지 할 수 있다.

 

 

3) 다음과 같이 클라이언트 환경과 서버 문자셋 환경을 일치 시켜 준다.

set character_set_client='latin1';
set character_set_connection='latin1';
set character_set_results='latin1';
set collation_connection='latin1_swedish_ci';


 

 

 

 

4) 위 상태가 유지된 상태에서야 쿼리 결과에 한글이 깨지지 않고 나오는 것을 확인할 수 있다.

 

 

5) 백업을 위한 mysqldump.exe로는 해당 클라이언트와 서버의 문자셋 환경을 충분히 맞출수 없다는 가정하에(실제 해결하지 못함.) "heidisql" 프로그램의 기능인 Export 기능을 이용하여 "mysqldump.exe" 프로그램을 대신 할 수 있다.

Export할 경우에 다음 옵션을 지정하여 저장 하게 되면 mysqldump 한것과 동일한 백업 파일을 얻을 수 있으며 해당 파일내의 한글은 깨지지 않는다.

 

5-1) heidisql의 Export 메뉴 선택

 

 

5-2) Export database as SQL의 옵션 설정

  - 모든 데이터베이스 객체 선택

  - Data는 반드시 "INSERT" 선택

  - Output : "One big file" 선택

  - 파일명 : 경로를 포함한 백업 파일명 지정

  - Table(s) 는 "Create"만 선택

 

 

5-3) "Export" 실행

 

 

3. 처리 결과

  이후는 개요 부분에서 언급한

2) 이렇게 백업된 "backup_redmine.sql " 파일을 에디터로 열어서 "latin1"을 "utf8"로 변경한 후에

3) 새로 설치한 MySQL DB에서 "mysql.exe -u username -p databasename < backup_redmine.sql" 실행

4) rake를 이용한 마이그레이션

 

  처럼 실행하면 정상적으로 0.9.x 버전에서 작성된 모든 article들이 2.x 버전에서 정상적으로 보이게 된다.

 

      4) 이후의 마이그레이션 관련된 세부 내용은 다음 글을 참고하면 된다.

 

레드마인(Redmine) 0.9.x 에서 2.3.0으로 업그레이드

 

 

 

'프로그래밍 > MySQL' 카테고리의 다른 글

[Ubuntu] MariaDB + Galera 완벽 설치  (0) 2019.12.28
Ubuntu - MariaDB설치  (1) 2019.12.26