Jira アプリケーションを MySQL 5.6 に接続する

ここでは、サポート対象の MySQL データベースに Jira を接続する方法を解説します。

はじめる前に

  • 以下の既知の問題を確認してください。
  • Jira を他のサーバーに移行する場合は、データのエクスポートを XML バックアップ形式で作成します。その後、「データベースの切り替え」で説明されているように、元のデータベースから新しいデータベースにデータを移行できます。
  • Confluence と Jira を同じ MySQL サーバーでセットアップする場合は、「Confluence MySQL セットアップ ガイド」をお読みください。Confluence の要件は Jira のそれよりも厳格であるため、MySQL は Confluence に適するように構成してください。この構成は、Jira でも適用できます。
  • セットアップ ウィザードを実行中の場合を除き、開始する前に Jira をシャットダウンします。

このページの内容:

1. MySQL データベースの作成および設定

  1. Jira の接続時に使用するデータベース ユーザーを作成し、名前をつけます (例: jiradbuser)。
    以降のステップにおいて Jira の接続を設定する際に利用されるため、このデータベース ユーザー名を覚えておく必要があります。
  2. Jira が課題を格納するデータベースを作成します (例: jiradb)。このデータベースには、UTF8 の文字コードが設定されている必要があります。MySQL のコマンド クライアントから、以下のコマンドを入力します。
    このデータベース名を覚えておきます。これは以降のステップにおいて Jira の接続を設定する際に使用します。

    CREATE DATABASE jiradb CHARACTER SET utf8 COLLATE utf8_bin;

    (データベース名を jiradb にした場合)。 

  3. 必ず、ユーザにはデータベースに接続する権限、並びにテーブルの作成・事前設定を行う権限を与えます。これは、以下の方法で行います:

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>';
    flush privileges;

    ポイント:

    権限が正常に付与されたかを確認するには、Jira DB ユーザを使用して DB サーバにログインし、以下のコマンドを実行します:

    SHOW GRANTS FOR <USERNAME>@<JIRA_SERVER_HOSTNAME>;
  4. my.cnf ファイル (Windows OS では通常 my.ini) を編集します (my.cnf および my.ini を編集する際の詳細な手順については、MySQL オプション ファイルを参照してください)。ファイルの [mysqld] セクションを見つけ、以下のパラメータを追加あるいは修正します。

    • デフォルトのストレージエンジンを InnoDB に設定します:

      [mysqld]
      ...
      default-storage-engine=INNODB
      ...
    • max_allowed_packet の値が 256 M 以上になるように指定します。

      [mysqld]
      ...
      max_allowed_packet=256M
      ...
    • innodb_log_file_size の値が 2 GB 以上になるように指定します。

      [mysqld]
      ...
      innodb_log_file_size=256M
      ...
    • sql_mode パラメーターが NO_AUTO_VALUE_ON_ZERO に指定されていないことを確認します。

      // remove this if it exists
      sql_mode = NO_AUTO_VALUE_ON_ZERO
  5. 変更内容を有効にするには、MySQL サーバーを再起動します:

    • Windows 上では、Windows サービスマネージャーを利用してサービスを再起動します。
    • Linux の場合
      • お使いのセットアップに応じて、以下のコマンドを実行します: "/etc/init.d/mysqld stop"、"/etc/init.d/mysql stop”、"service mysqld stop"。
      • 次に "stop" を "start" に置き替えて同じコマンドを再び実行します。

2. お使いのアプリケーションサーバに MySQL JDBC ドライバーをコピーする

Jira のアップグレードにあたって、推奨される MySQL ドライバ (Connector/J JDBC driver v5.1) を利用している場合、本セクションの手順をスキップして構いません。Jira のアップグレード タスクは、既存のドライバをアップグレードされたインストレーションに自動的にコピーします。

お使いのアプリケーションサーバに MySQL JDBC ドライバーをコピーする:

  1. MySQL ドライバーを取得します:
    • Jira をインストールする場合、 推奨される MySQL ドライバである JDBC Connector/J 5.1 をダウンロードします。
      "Platform Independent" オプションを選択することで、.tar.gz あるいは .zip ファイルをダウンロードできます。ドライバー用の jar ファイルを取得します (mysql-connector-java-5.x.x-bin.jar)。
    • Jira をアップグレードしようとしていて、推奨される MySQL ドライバ (JDBC Connector/J 5.1) を使用していない場合、アップグレード前に Jira インストレーションからドライバをバックアップします。
      ドライバは <Jira installation directory>>/lib/ ディレクトリにあります。
  2. 新しい / アップグレードされたインストレーション用に、MySQL JDBC ドライバの jar を <Jira installation directory>>/lib/ ディレクトリにコピーします。Windows インストーラーを利用して Jira をインストールしている場合、このステップは、Windows インストーラーの実行後、セットアップ ウィザードの実行に行います。
  3. Jira / Jira サービスを再起動します。
  4. Jira をインストールする場合、このページの残りの説明をスキップし、ブラウザで Jira にアクセスしてセットアップ ウィザードを実行します。

注意:

  • 我々は、MySQL の Connector/J ドライバーを推奨しています(上にリンクあり)。あるユーザから、MySQL の Resin JDBC ドライバーを使用した際に問題があったという報告がありました。

3. MySQL データベースに接続するための Jira サーバーの設定

Jira サーバで MySQL データベースへの接続を構成するには、2 つの方法があります。

  • Jira セットアップ ウィザード を使用する — Jira をインストールした直後で、初めて Jira をセットアップする場合はこの方法を使用します。設定は、Jira ホーム ディレクトリdbconfig.xml ファイルに保存されます。
  • Jira 設定ツール を使用する — 既存の Jira インスタンスがある場合はこの方法を使用します。設定は、Jira ホーム ディレクトリdbconfig.xml ファイルに保存されます。

各設定手法の手順説明

Jira セットアップ ウィザード

ブラウザから初めて Jira にアクセスすると、Jira セットアップ ウィザード が表示されます。

  1. 最初の画面 の “Configure Language and Database” で、 “Database Connection” に My own database を選択します。
  2. データベース タイプMySQL に設定します。
  3. 下記の データベース接続関連フィールド を参照し、フィールド入力を行います。
  4. 接続をテストし、保存します。

Jira 設定ツール

  1. Jira 設定ツールを次のように実行します。
  2. データベース タブへ進み、データベースの種類 MySQL に設定します。
  3. 下記の データベース接続関連フィールド セクションを参照し、各フィールドに入力します。
  4. 接続をテストし、保存します。
  5. Jira を再起動します。

データベース接続フィールド

セットアップウィザード/設定ツール dbconfig.xml 説明
ホスト名

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

IPv6 アドレスを使用している場合は、URL を以下のようにする必要があります。

<url>jdbc:mysql://address=(protocol=tcp)(host=dbserver)(port=3306)/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

MySQL サーバがインストールされている、マシンの名前あるいは IP アドレス。
ポート

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

MySQL サーバがリッスンしている TCP/IP ポート。デフォルトのポートを利用する際は、ここを空白にします。
データベース

<url> タグに配置されます (下記の例の太字部分):
<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>

お使いの MySQL データベースの名前 (JIRA データの保存先)。上記 ステップ 1で作成済みのはずです。
ユーザ名

<username> タグに配置されます (下記の例の太字部分):
<username>jiradbuser</username>

MySQL サーバに接続する際に JIRA が利用するユーザ。上記 ステップ 1で作成済みのはずです。
パスワード <password> タグに配置されます (下記の例の太字部分):
<password>jiradbuser</password>
MySQL サーバとの認証に利用する、ユーザのパスワードです。

dbconfig.xml ファイルのサンプル

  • 上記の dbconfig.xml ファイルに含まれる、pool で始まる <jdbc-datasource/> の子要素の詳細については、「データベース接続のチューニング」を参照してください。
  • Jira セットアップ ウィザードとデータベース設定ツールも、<validation-query>select 1</validation-query> 要素をこのファイルに追加します。これは通常、既定の MySQL インストールで Jira を実行する際に必要です。詳細は、「コネクション切断の問題への対処方法」を参照してください。
  • 以下の例のデータベース URL は、UTF-8 データベースを想定しています。つまり、データベースが create database jiradb character set utf8; などのコマンドを使用して作成されています。このデータベースの作成時に character set utf8 を指定しない場合、データのインポート時に "Data truncation: Data too long for column" エラーが発生したり、サポート対象外の文字の文字化けが発生したりする可能性があります。
  • 以下の例のデータベース URL には、sessionVariables=default_storage_engine=InnoDB パラメーターが含まれます。データ破損を防ぐために、このパラメーターを追加することを強くお勧めします。
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <username>jiradbuser</username>
    <password>password</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
 
    <validation-query>select 1</validation-query>
    <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
  
    <pool-test-while-idle>true</pool-test-while-idle>
    <pool-test-on-borrow>false</pool-test-on-borrow>
    <validation-query-timeout>3</validation-query-timeout>
  </jdbc-datasource>
</jira-database-config>

4. Jira の起動

これで、MySQL データベースに接続するための Jira の設定が完了しました。次のステップでは、これを起動させます。

(tick) これで、Jira を MySQL に接続することができました。

既知の問題

以下は、このデータベースに関する既知の問題の一覧です。詳細については、それぞれを展開してください。

権限のホスト名が文字列として比較される...

localhost などのホスト名に MySQL の権限を付与する場合、Jira からデータベースに接続するときと同じ文字列を使用する必要があります。同じ場所に解決される場合であっても、127.0.0.1を使用することはできません。これを行わない場合、Jira がセットアップされたときに JDBC 接続に新しいテーブルを作成する権限がないため、テーブルが見つからない旨の警告が表示されます。

コネクションの問題...

以下のいずれかを利用して MySQL データベースを使用している場合、コネクションが切断される問題が発生する可能性があります (詳しくは JRA-15731 を参照してください)。

  • JIRA 3.13 以降、
  • Tomcat 5 のバージョン 5.5.25 以上
  • Tomcat 6 のバージョン 6.0.13 以上

これに対処する方法の詳細については、「コネクション切断の問題を乗り越える方法」を参照してください。

データベース パスワードで特殊文字がサポートされない...

Jira が特殊文字を解釈できないため、データベース パスワードでは特殊文字はサポートされていません。

バイナリ ログ...

Jira は、MySQL の "READ-COMMITTED" トランザクション分離レベルを使用しており、これは現在は行ベースのバイナリ ログのみに対応しています。

MySQL のバイナリ ログ機能が必要な場合、MySQL のバイナリ ログの形式を '行ベース' に設定する必要があります。これを行わない場合、Jira で課題を作成する際に問題が生じる可能性があります。

4 バイト文字がサポートされない...

このバージョンの MySQL では、4 バイト文字 (絵文字など) はサポートされておらず、クエスチョン マーク (?) として表示されます。これらは MySQL 5.7 ではサポートされます。

最終更新日 2019 年 9 月 9 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.