데비안 시스템의 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 ROLE로 bitbucket 사용자를 만든다. 라인 8에서 CREATE DATABASE로 bitbucket 데이터베이스를 생성한다. Bitbucket의 데이터베이스는 UTF-8 문자 집합을 사용하도록 설정해야 한다. 라인 10에서 \l 명령어로 새로 생성한 bitbucket 데이터베이스를 확인한다. PostgreSQL의 기본적인 사용은 PostgreSQL의 데이터베이스와 사용자 생성, 백업 및 복구에서 다루었다.
Database Migration Wizard를 사용하여 데이터베이스 마이그레이션 하기
웹 브라우저로 Bitbucket 서버에 접속한다. 설정 아이콘을 클릭하여 Administration 페이지로 들어간 후 다음의 작업을 진행한다.
1. Settings > Database를 클릭한다.
2. Migrate database 버튼을 클릭한다.
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 확장자로 만들어지는데 삭제하여도 무방하다.