Jira 서버의 MySQL을 PostgreSQL로 마이그레이션 하기

In 데이터베이스 시스템, 네트워크와 시스템 관리 by Choi Kyung-sik

Jira 서버의 MySQL을 PostgreSQL로 마이그레이션 한 작업 과정을 정리해 본다. 내가 사용하는 데비안 9(stretch)의 PostgreSQL 버전은 9.6이다. Jira 서버는 버전 7.13.0을 설치하고 있다. 먼저 이 버전의 Jira에서 지원하는 데이터베이스를 봐야 한다. Supported platforms – Jira Server 7.13을 보면 PostgreSQL 9.4, 9.5, 9.6을 지원하므로 마이그레이션을 진행할 수 있다. 아래에서 내가 사용하는 Jira 홈 디렉토리인 /var/local/lib/jira로 예를 들 것이다.

단계 1. XML 포맷으로 Data를 백업하기

Jira 서버에서 제공하는 백업 도구를 사용하여 XML 포맷의 파일로 Data를 백업한다. 백업한 파일은 단계 4에서 PostgreSQL로 마이그레이션 하기 위해 사용할 것이다.

  1. Jira의 환경 설정인 System으로 들어한다.
  2. IMPORT AND EXPORTBackup System을 클릭한다.
  3. Backup Jira data 화면에 ‘데이터베이스의 내용을 XML 포맷으로 백업할 것이고 Jira 홈 디렉토리 안의 export 디렉토리에 저장할 것’이라고 나온다. File name에 백업할 파일의 이름을 입력하고 Backup 버튼을 클릭한다. 나는 jira_backup으로 입력하였다.
  4. 실행을 완료하면 자신이 입력한 파일명에 .zip 확장자를 붙여 내보냈음을 알려준다. 나의 경우 /var/local/lib/jira/export/jira_backup.zip 파일로 저장되었다.
단계 2. PostgreSQL의 데이터베이스 만들기

Jira 서버에서 사용할 PostgreSQL 데이터베이스를 만든다. 다음은 psql 클라이언트를 사용한 진행 과정이다.

# psql -h localhost -U postgres -d postgres
psql (9.6.17)
SSL 연결정보 (프로토콜: TLSv1.2, 암호화기법: ECDHE-RSA-AES256-GCM-SHA384, 비트: 256, 압축: off)
도움말을 보려면 "help"를 입력하십시오.

postgres=# CREATE ROLE jira WITH LOGIN PASSWORD '암호 입력';
CREATE ROLE
postgres=# CREATE DATABASE jira WITH OWNER=jira ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0;
CREATE DATABASE
postgres=# \l
                                 데이터베이스 목록
   이름    |  소유주  | 인코딩 |   Collate   |    Ctype    |      액세스 권한
-----------+----------+--------+-------------+-------------+-----------------------
 jira      | jira     | UTF8   | C           | C           |
 postgres  | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 template0 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres          +
           |          |        |             |             | postgres=CTc/postgres
(4개 행)

라인 6에서 CREATE ROLEjira 사용자를 생성했다. 라인 8에서 CREATE DATABASEjira 데이터베이스를 만들었다. 주의해야 할 것은 Jira 서버는 LC_COLLATE와 LC_CTYPE을 ‘C’로 설정해야 한다. 새 로케일로 데이터베이스를 만들려면 template0을 사용해야 한다. 라인 10에서 \l 명령어로 새로 만든 jira 데이터베이스를 확인한다. PostgreSQL의 기본적인 사용은 PostgreSQL의 데이터베이스와 사용자 생성, 백업 및 복구를 참고할 수 있다.

단계 3. JIRA setup을 실행하기 위한 준비

Jira 서버의 설치 화면(JIRA setup)으로 진입하기 위한 작업을 한다.

  1. Jira 서버를 종료한다.
  2. 서버 종료 뒤가 백업의 적기이다. 현재 사용하고 있는 MySQL의 Jira 데이터베이스와 Jira 홈 디렉토리를 백업해 둔다.
  3. Jira 홈 디렉토리(/var/local/lib/jira) 안의 dbconfig.xml 파일을 삭제한다. 이 파일의 삭제로 JIRA setup으로 진입하는 것이다.
단계 4. JIRA setup을 사용하여 PostgreSQL로 마이그레이션 하기

Jira 서버를 다시 시작하고 웹 브라우저로 접속하면 JIRA setup 화면이 나올 것이다. PostgreSQL로 마이그레이션 하기 위해 다음과 같이 작업한다.

  1. Jira 설치 화면이 나오면 ‘직접 설정하겠습니다.‘를 선택하고 다음 버튼을 클릭한다.
  2. 데이터베이스 설정 화면이 나오면 내 데이터베이스(운영 환경에 권장)을 선택하고 다음의 내용을 입력한다.
    • 데이터베이스 유형: PostgreSQL
    • 호스트 이름: PostgreSQL을 설치한 시스템의 로컬 IP 주소를 입력한다. (예: 192.168.1.20)
    • 포트: 디폴트 값인 5432를 그대로 둔다.
    • 데이터베이스: 위에서 생성한 데이터베이스의 이름인 jira를 입력한다.
    • 사용자 아이디: 위에서 생성한 데이터베이스의 사용자 이름인 jira를 입력한다.
    • 비밀번호: 위에서 생성한 데이터베이스의 ‘암호’를 입력한다.
    • 스키마: 디폴트 값인 public을 그대로 둔다.
  3. 다음 버튼을 클릭한다.
  4. 응용프로그램 속성을 설정하십시오. 화면에서 ‘… 데이터를 가져올 수 있습니다.‘를 클릭한다.
  5. 기존 데이터 가져오기 화면의 파일 이름에 단계 1에서 생성한 /var/local/lib/jira/export/jira_backup.zip을 입력하고 가져오기 버튼을 클릭한다.

가져오기 작업이 끝나면 Jira의 Dashboards 화면이 나온다.

데이터베이스의 마이그레이션 확인하기

Jira 홈 디렉토리 안에 dbconfig.xml 파일이 새로 생성되고, PostgreSQL의 JDBC 설정을 볼 수 있다.

참고 자료