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

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

はじめる前に

前提条件として次の情報を確認しておくことをおすすめします。

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

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

あとから Jira をデータベースに接続する際に必要になるため、データベースを作成するときに、データベース名ユーザー名、およびポート番号を記録しておきます。


  1. Jira が接続時に使用するデータベース ユーザーを作成し、名前をつけます (例: jiradbuser)。

  2. 課題を格納するための Jira 用データベースを作成します (例: jiradb)。

    このデータベースでは UTF8 の文字セットが設定されている必要があります。設定するには、MySQL コマンド クライアントから以下のコマンドを入力します。

    CREATE DATABASE jiradb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
  3. データベースへの接続権限とテーブルの作成および更新権限がユーザーに割り当てられていることを確認します。これらの権限は次のコマンドで付与できます。

    MySQL 5.7.0 - 5.7.5:

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


    MySQL 5.7.6 以降 (REFERENCES 権限も含める必要があります):

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER,INDEX on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>';
    flush privileges;
  4. MySQL Server の my.cnf または my.ini (Windows) ファイルを編集します (ファイルの編集の詳細な手順については MySQL オプション ファイル を参照してください)。

  5. ファイルで [mysqld]  セクションを見つけ、次のパラメータを追加あるいは修正します。

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

      [mysqld]
      ...
      default-storage-engine=INNODB
      ...
    • データベース サーバーが使用する文字セットを指定します。

      [mysqld]
      ...
      character_set_server=utf8mb4
      ...
    • 初期設定の行形式を DYNAMIC に設定します。

      [mysqld]
      ...
      innodb_default_row_format=DYNAMIC
      ...
    • large プレフィックスを有効にします。

      [mysqld]
      ...
      innodb_large_prefix=ON
      ...
    • InnoDB ファイル形式を Barracuda に設定します。

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

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

      // remove this if it exists
      sql_mode = NO_AUTO_VALUE_ON_ZERO
  6. MySQL サーバーを再起動して変更内容を反映します。

    Windows...

    Windows サービス マネージャーを利用してサービスを再起動します。

    Linux...

    お使いのセットアップに応じて、以下のいずれかのコマンドを実行します:

    /etc/init.d/mysqld stop
    /etc/init.d/mysql stop
    service mysqld stop


    次に "stop" を "start" に置き替えて同じコマンドを実行します。

2. MySQL JDBC ドライバのコピー

MySQL の JDBC ドライバを Jira インストール ディレクトリにコピーします。

  1. 次のいずれかの推奨 MySQL ドライバーをダウンロードします。
  2. ドライバを次のディレクトリにコピーします。

    <Jira-installation-directory>/lib

    Windows インストーラーを利用して Jira をインストールしている場合、このステップを、Windows インストーラーの実行後、セットアップ ウィザードの実行に行う必要があります。

  3. Jira サービスを再起動します。

  4. Jira をインストールする場合、このページの残りの説明をスキップし、ブラウザで Jira にアクセスしてセットアップ ウィザードを実行します。

3. Jira を構成してデータベースに接続する

ご使用の MySQL データベースに接続するために Jira サーバーを設定する方法は 2 つあります。

セットアップ ウィザード

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

セットアップ ウィザードで MySQL に接続する

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

  1. 最初の画面の [Configure Language and Database] で、[Database Connection] に [ My own database] を設定します。
  2. [Database Type] を MySQL 5.7+ に設定します。
  3. 下記の「データベース コネクション フィールド」セクションを参照して各フィールドを入力します。
  4. 接続をテストし、保存します。

設定ツール

既存の Jira インスタンスがある場合は、設定ツールを使用します。設定は、Jira ホーム ディレクトリdbconfig.xml ファイルに保存されます。

設定ツールで MySQL に接続する
  1. Jira 設定ツールを次のように実行します。

  2. [Database] タブに進み、[Database Type] を MySQL 57+ に設定します。
  3. 下記の「データベース コネクション フィールド」セクションを参照して各フィールドを入力します。
  4. 接続をテストし、保存します。
  5. Jira を再起動します。

4. Jira の起動

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


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

以下の表では、セットアップ ウィザード、Jira 設定ツール、または dbconfig.xml ファイルにあるデータベース コネクション フィールドについて説明します。

データベース接続フィールドを表示する
セットアップウィザード/設定ツール説明 dbconfig.xml
ホスト名MySQL サーバがインストールされている、マシンの名前あるいは IP アドレス。

<url> タグにあります。以下の例では dbserver です。

<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 サーバがリッスンしている TCP/IP ポート。デフォルトのポートを利用する際は、ここを空白にします。

<url> タグにあります。以下の例では 3306 です。

<url>jdbc:mysql://dbserver:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
データベースお使いの MySQL データベースの名前 (Jira データの保存先)。上記 ステップ 1 で作成したものです。

<url> タグにあります。以下の例では jiradb です。

<url>jdbc:mysql://dbserver:3306/jiradb ?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
ユーザ名MySQL サーバーに接続する際に Jira が利用するユーザーです。上記のステップ 1 で作成したものです。
<username>jiradbuser</username>
パスワードMySQL サーバとの認証に利用する、ユーザのパスワードです。
<password>jiradbuser</password>
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 パラメーターが含まれます。データ破損を防ぐために、このパラメーターを追加することを強くお勧めします。


<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql57</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>

既知の問題

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

ヘルス チェックで照合がサポートされていないという警告が表示される

データベースのヘルス チェックは、MySQL 5.7 を使用するように Jira が構成されている場合も次の警告を表示します。

Your mysql database is currently using an unsupported collation: utf8mb4_bin. You should change this to a supported collation: utf8_bin

ソリューション

この問題は dbconfig.xml ファイルが適切なデータベース タイプで更新されず、mysql57 ではなく mysql を使用している場合に生じる可能性があります。ファイルを手動で編集することで、この問題を修正できます。

  1. Jira ホーム ディレクトリに移動し、dbconfig.xml ファイルを編集します。
  2. database-typemysql57 に変更します。

これは上述のように、Jira 構成ツールを使用して変更することもできます。

権限に含まれるホスト名が文字列として比較される

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 で課題を作成する際に問題が生じる可能性があります。

最終更新日: 2023 年 1 月 26 日

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

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