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

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

데비안 시스템의 Bitbucket에서 MySQL을 PostgreSQL로 옮겼던 과정을 보여주려고 한다. 내가 사용하는 데비안 9(stretch)의 PostgreSQL 버전은 9.6이다. Bitbucket은 버전 7.2.3을 설치하고 있다. 먼저 이 버전의 Bitbucket에서 지원하는 데이터베이스를 볼 필요가 있다. Supported platforms – Bitbucket Server 7.2.x를 보면 PostgreSQL 9.4에서 11까지 지원하므로 마이그레이션을 진행할 수 있다. 작업을 진행하기 전에 기존의 MySQL의 데이터베이스와 Bitbucket 홈 디렉토리를 백업한다. 뒤에서 홈 디렉토리는 내가 사용하는 /var/local/lib/bitbucket으로 표시할 것이다.

PostgreSQL에서 데이터베이스 만들기

Bitbucket 서버에서 사용할 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 bitbucket WITH LOGIN PASSWORD '원하는 암호 입력';
CREATE ROLE
postgres=# CREATE DATABASE bitbucket WITH ENCODING='UTF8' OWNER=bitbucket;
CREATE DATABASE
postgres=# \l
                                  데이터베이스 목록
    이름    |   소유주   | 인코딩 |   Collate   |    Ctype    |      액세스 권한
------------+------------+--------+-------------+-------------+-----------------------
 bitbucket  | bitbucket  | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 confluence | confluence | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 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
(6개 행)

postgres=#

라인 6에서 CREATE ROLEbitbucket 사용자를 만든다. 라인 8에서 CREATE DATABASEbitbucket 데이터베이스를 생성한다. Bitbucket의 데이터베이스는 UTF-8 문자 집합을 사용하도록 설정해야 한다. 라인 10에서 \l 명령어로 새로 생성한 bitbucket 데이터베이스를 확인한다. PostgreSQL의 기본적인 사용은 PostgreSQL의 데이터베이스와 사용자 생성, 백업 및 복구에서 다루었다.

Database Migration Wizard를 사용하여 데이터베이스 마이그레이션 하기

웹 브라우저로 Bitbucket 서버에 접속한다. 설정 아이콘을 클릭하여 Administration 페이지로 들어간 후 다음의 작업을 진행한다.

1. Settings > Database를 클릭한다.

2. Migrate database 버튼을 클릭한다.

Migrate Database to PostgreSQL

3. Migrate Database에서 다음의 설정을 한다.

  • Database Type: 디폴트 선택인 PostgreSQL을 그대로 둔다.
  • Hostname; PostgreSQL을 설치한 시스템의 로컬 IP 주소를 입력한다. (예: 192.168.1.10)
  • Port: PostgreSQL의 포트를 변경하지 않았다면 디폴트 값을 그대로 둔다.
  • Database name: 위에서 생성한 데이터베이스의 이름인 bitbucket을 입력한다.
  • Database username: 위에서 생성한 데이터베이스의 사용자 이름인 bitbucket을 입력한다.
  • Database password: 위에서 생성한 데이터베이스의 ‘암호’를 입력한다.

설정을 마친 후 Start Migration 버튼을 클릭하면 마이그레이션을 진행한다.

4. 마이그레이션 진행을 완료하면 성공 메시지가 나온다.

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

PostgreSQL로 변경했는지 확인하려면 Bitbucket 홈 디렉토리의 bitbucket.properties 파일을 본다. 파일 경로는 /var/local/lib/bitbucket/shared/bitbucket.properties이다. 파일에서 MySQL의 JDBC 설정은 주석으로 처리하고 PostgreSQL을 추가한 것을 볼 수 있을 것이다.

Database Migration Wizard는 마이그레이션할 때 dump 파일을 생성한다. /var/local/lib/bitbucket/export 디렉토리 안에 .zip 확장자로 만들어지는데 삭제하여도 무방하다.

참고 자료