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

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

はじめる前に

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

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

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

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


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

    CREATE USER '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>';
  2. 課題を格納するための Jira 用データベースを作成します (例: jiradb)。

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

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

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,REFERENCES,ALTER,INDEX on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>';
    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
      ...
    • innodb_redo_log_capacity の値が 4G 以上になるように指定します。

      [mysqld]
      ... 
      innodb_redo_log_capacity=4G
      ...

      (info) innodb_redo_log_capacity パラメーターは innodb_log_file_sizeinnodb_log_files_in_group の各パラメーターを置き換えています。詳細は MySQL ドキュメントをご確認ください。

    • 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 ドライバ、JDBC Connector/J 8.0 をダウンロードします。 

  2. ドライバを次のディレクトリにコピーします。

    <Jira-installation-directory>/lib

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

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

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

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

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

セットアップ ウィザード

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

手順を表示する...

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

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

設定ツール

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

手順を表示する...
  1. Jira 設定ツールを次のように実行します。

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

4. Jira の起動

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


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

次の表では、セットアップ ウィザード、Jira 設定ツール、または dbconfig.xml ファイルにある "データベース接続" フィールドについて説明しています。MySQL コネクタ 8.0 以降をご利用の場合は、次に記載されている必須パラメーターを追加してください。

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

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

<url>jdbc:mysql:/dbserver:3306/jiradb?
useUnicode=true&characterEncoding=UTF8&
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&characterEncoding=
UTF8&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 パラメーターが含まれます。データ破損を防ぐために、このパラメーターを追加することを強くお勧めします。
  • MySQL コネクタ 8.0 以降をご利用の場合は、このパラメーターをホスト URL に追加してください。
    • MySQL コネクタ 8.0 以降: nullCatalogMeansCurrent=true
    • MySQL コネクタ 8.0.17 以降: nullDatabaseMeansCurrent=true


<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql8</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.cj.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 8.0 を使用するように Jira が構成されている場合も次の警告を表示します。

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

ソリューション

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

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

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

問題が解消されない場合は、MySQL サーバーで使用されている照合が utf8mb4_bin に設定されていることを確認します。

サーバーのタイムゾーン値 "CET" が認識されない

Jira を MySQL 8.0 と実行すると、タイムゾーンに関連する次の問題が発生することがあります。

これが発生した場合は、2 つの方法で解決できます。

オプション 1:

  1. MySQL サーバーの my.cnf または my.ini (Windows) ファイルを編集します (これらのファイルの編集の詳細な手順については「MySQL オプション ファイル」を参照してください)。

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

    default_time_zone='+00:00' 
  3. MySQL サーバーを再起動します。

オプション 2:

  1. Jira ホーム ディレクトリで dbconfig.xml ファイルを編集します。
  2. 以下の例のように、serverTimezone=UTC<url> に追加します。
<url>jdbc:mysql://address=(protocol=tcp)(host=0.0.0.0)(port=3306)/jiradb?sessionVariables=default_storage_engine=InnoDB&amp;serverTimezone=UTC</url>
権限のホスト名が文字列として比較される...

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 年 11 月 16 日

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

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