JIRAのデータベースを変更する

#きっかけ & やりたいこと
最近JIRAを使っておりますが、まだ運用経験を蓄積する段階です。
（どこにデータが溜まるのか、とか、停止時になにが起こるか、とか…）

さて、セットアップはしたものの、本当はDBを **HSQLではなくPostgreSQLに指定したかったのに** うっかりHSQLでウィザードを進めてしまった…というケースが数回ありました(^^;

レアケースだとは思いますが、実際にどうしたかをアップします。

# DBの切替方法

## HSQLでデータをいくらか蓄積してしまっていた場合

切替を行う前に、すでにいくらか設定やチケットを作ってしまっていた場合は、いったん綺麗なDBで構成してから、論理バックアップ（XML)を使って復元することができます。

- とりあえずDBを切り替える前に、XMLでのバックアップを取得します。
- PostgreSQLやMySQLでセットアップを完了したあと、『バックアップから復元』を指定して、データをインポートします。

では、以下はDB切替の方法を２つご紹介。

## 新規にJIRAをインストールして、正しいDB設定でウィザードを完了

つまり、やり直しってことです。
一応、既存のインストールディレクトリはrenameしておきましょう…。

## 設定変更用のスクリプトを実行する

インストーラーを使わずに設定変更したい…と思ったのですが、最初は気がつかず、上記の再インストールを実施しました。
が、なにやら **JIRA configuration tool** というのがあるそうです！

今回、（またもDB設定忘れを経験したため）、ここを参考にして切替ました。

- [Connecting JIRA to PostgreSQL](https://confluence.atlassian.com/display/JIRA/Connecting+JIRA+to+PostgreSQL) / Atlassian 


では、手順を。

```
# sh config.sh 
No JRE_HOME or JAVA_HOME environment variable is set - attempting to just run java command
Loading application properties from /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/jira-application.properties
Reading database configuration from /data/application-data/jira/dbconfig.xml
No graphics display available; using console.
----------------------
JIRA Configurator v1.1
----------------------

--- Main Menu ---
  [H] Configure JIRA Home
  [D] Database Selection
  [W] Web Server (incl. HTTP/HTTPs configuration)
  [A] Advanced Settings
  [S] Save and Exit
  [X] Exit without Saving

Main Menu> D
```

DBの設定変更に進みます。

```
--- Database Selection ---
  Database Type : HSQL
  Instance      : (unused)
  Connect As    : sa / (no password)

* [H] HSQL (not for production use)
  [M] MySQL
  [O] Oracle
  [P] PostgreSQL
  [S] SQL Server (MS-SQL)

  [X] Return to Main Menu

Database Selection [H]> P
```

PostgreSQLを選びます。
すると、コマンドラインでDBの設定ウィザードが。

『接続テストしますか？』まで聞いてくれます！

```
PostgreSQL Database Configuration.
Hostname (localhost)> localhost
Port (5432)> 
Database (jira)> jiradb
Username (jira)> jira
Password (*****)> 
Test Connection  ([Y]/N)? > Y
Attempting to connect to localhost:5432/jiradb
Connection successful!

--- Database Selection ---
  Database Type : PostgreSQL
  Instance      : localhost:5432/jiradb
  Connect As    : jira / *****

  [H] HSQL (not for production use)
  [M] MySQL
  [O] Oracle
* [P] PostgreSQL
  [S] SQL Server (MS-SQL)

  [X] Return to Main Menu

```
メインメニューに戻ってSAVE。

```
--- Main Menu ---
  [H] Configure JIRA Home
  [D] Database Selection
  [W] Web Server (incl. HTTP/HTTPs configuration)
  [A] Advanced Settings
  [S] Save and Exit
  [X] Exit without Saving

Main Menu> S
Storing database configuration in /data/application-data/jira/dbconfig.xml
Settings saved successfully.
```

設定ファイルが下記変わった模様です！

## いよいよ起動！

initスクリプトで起動させてみると….。
あれれ？
エラーになってます！

![change-after.png](https://qiita-image-store.s3.amazonaws.com/0/27976/2dbe0fa6-444f-62b4-9253-73d81e5cfac7.png "change-after.png")

```
The schema-name="PUBLIC" only works for a field-type-name of "hsql".
```
と、文句を言われています..。

別環境ですでに稼働しているJIRA / PostgreSQLの設定を確認すると、schema-name="public" と小文字。
早速修正してプロセス再起動をすると….。

めでたく起動すると、セットアップウィザードの画面が出ますが、ここではDBの選択ダイアログは出て来ません。
ちゃんとPostgreSQLを使う前提になっている模様です :)

![jira-setup.png](https://qiita-image-store.s3.amazonaws.com/0/27976/267be39c-f5f5-fe86-276d-acc93b9e4070.png "jira-setup.png")

※なお、dbconfig.xmlを修正しても、再起動しないと反映されませんでした。

# セットアップ完了後に確認

基本のセットアップが終わったので、管理画面の『システム情報』から確認してみます。

![jira-config.png](https://qiita-image-store.s3.amazonaws.com/0/27976/fccb083f-117c-7af1-510f-ba292e9e3b2d.png "jira-config.png")

ちゃんとDBがPostgreSQLになっています :)
よかった良かった。

# 備考

上記、ツールからの設定変更は後から知ったので、それまでは設定用のxmlファイルを調整してあれこれいじったり、インストールツールから最初からやりなおしていました….