Archiving issues for the upgrade

Jira Data Center のアップグレードで高速な再インデックスを実行

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

ユーザーのダウンタイムを最小化するため、課題をアーカイブしてインデックスから除外することによってインデックスのサイズを削減します。アップグレード直後はユーザーはアーカイブされた課題を利用できませんが、実行中の Jira であとからそれらを復元できます。

概要

このアプローチの詳細を読む...

Jira 7.x では課題のアーカイブは利用できないため、データベースを書き換えて課題をアーカイブします。Jira では新しいバージョンにアップグレードするまで課題が変更されることはありません。アップグレード後、初回の再インデックスを行います。アーカイブされた課題は除外されるため、より短い時間で完了できます。動作するインデックスを用意し、Jira をユーザーに開放したら、アーカイブ済みの課題を必要な数だけ復元し、再びインデックスを作成できます。2 回目の再インデックスは 1 回目よりも時間がかかりますが、Jira をユーザーに提供した状態で 1 つのノードで実行できます。

アップグレード後、アーカイブされた課題は読み取り専用になり、直接リンクからのみアクセスできるようになります。2 回目の再インデックスが完了するまで、ユーザーがそれらを参照したり検索することは難しくなります。このため、アーカイブ可能でクリティカルではない課題を特定する必要があります。アップグレード後のアーカイブされた課題の挙動の詳細については「課題のアーカイブ」をご参照ください。

はじめる前に

これらのステップは Jira Data Center をシャット ダウンすることなく行なえます。

アーカイブする課題の特定

このステップでは、アップグレード直後は不要な課題を特定します。

アーカイブすべき課題について

課題の数だけではなく、添付ファイル、作業ログ、カスタム フィールド、履歴、およびコメントなどの課題のコンテンツを主に考慮する必要があります。課題が "重い" ほど再インデックスに影響します。任意の課題を選択できますが、もっとも簡単な方法は、アップグレード直後に確実に必要な課題を特定し、残りすべてをアーカイブすることです。

課題をアーカイブするための SQL クエリの作成

アーカイブする課題を特定したら、それらをアーカイブする SQL クエリを作成する必要があります。弊社で用意したサンプル クエリをいくつか紹介します (PostgreSQL データベースを使用)。

例 1: 特定の日以前に作成されたすべての課題

このクエリは よりも前に作成されたすべての課題をアーカイブします。

update jiraissue 
	set 
		archived='Y', 
		archivedby='admin', 
		archiveddate=current_timestamp 
	where id in (
		select 
			i.id 
		from jiraissue i 
		where i.created < timestamp '2019-01-01'	
);
例 2: 最近更新されていないすべての課題

このクエリは 2 年間更新されていないすべての課題をアーカイブします。

update jiraissue 
	set 
		archived='Y', 
		archivedby='admin', 
		archiveddate=current_timestamp 
	where id in (
		select 
			i.id 
		from jiraissue i 
		where i.updated < (current_timestamp - interval '2 year')	
);
例 3: 特定のプロジェクトで特定の期間に作成されたラベルつきの課題

このクエリは、Jira プロジェクトで archive ラベルを持ち、から の間に作成された課題をアーカイブします。

update jiraissue 
	set 
		archived='Y', 
		archivedby='admin', 
		archiveddate=current_timestamp 
	where id in (
		select 
			i.id 
		from jiraissue i 
		inner join project p on i.project = p.id
		inner join label l on l.issue = i.id
		where UPPER(p.pkey) = 'JIRA' 
			and l.label = 'archive'
			and i.created  between timestamp '2019-01-01' and timestamp '2019-10-01'	
);

データベースの書き換え

ダウンタイムを最小化するため、稼動中のデータベースで次のステップを実行できます。

これらのステップはデータベース スキームを書き換え、課題のアーカイブに必要なコラムを含めるようにします。

  1. 課題のアーカイブをサポートするようにデータベース スキームを書き換えます。次の SQL クエリは、jiraissue  テーブルに 3 つの新しいコラムを追加します。 

    • PostgreSQL

      alter table jiraissue
              add archived char default null,
              add archivedby varchar(255) default null,
              add archiveddate timestamp with time zone default null;
    • Oracle

      alter table jiraissue add (
          archived CHAR default null,
          archivedby varchar2(255) default null,
          archiveddate date default null);
  2. 新しいコラムが追加されたら、すべての課題のステータスを "not archived" に設定する別の SQL クエリを実行します。 

    update jiraissue set archived='N', archivedby=null, archiveddate=null;
  3. 念のため、Jira を開き、新しい課題をいくつか作成して、すべてが正常に動作していることを確認します。

  4. 選択した課題をアーカイブする SQL クエリを実行します。これは「課題をアーカイブするための SQL クエリを作成する」で用意したものです。ソース バージョンの 7.x では、"archived" 課題が変更されることはありません。

Jira Data Center のアップグレード

ここでは Jira Data Center をシャットダウンし、アップグレードを開始する必要があります。

Jira Data Center のアップグレード」のステップにしたがい、Jira Data Center クラスタ全体を通常の手順でアップグレードします。 

再インデックスについて

上述のアップグレード手順では、アップグレード済みの最初のノードで再インデックスを行い、インデックス (およびインストール ディレクトリ) を残りのノードにコピーします。archived とマークされた課題は含まれないため、この初回インデックスを素早く完了できます。アップグレードを完了し、Jira をユーザーに開放すると、ユーザーはアーカイブされていない課題にアクセスし、新しい課題を作成することができます。

アーカイブされた課題の復元と再インデックス

Jira Data Center のアップグレードが完了し、機能していることを確認したら、アーカイブされた課題を復元して再びインデックスを作成します。再インデックスは 1 つのノードで行われるため、ユーザーは引き続き Jira を利用できます。

  1. アーカイブされた課題のステータスを "not archived" に変更する、逆の SQL クエリを実行します。次のクエリを使用してすべての課題のステータスを変更できます。

  2. 再インデックスを実行します。

    1. > [システム] > [再インデックス] に移動します ("." を押して検索できます)。

    2. [完全な再インデックス] を選択します。 

再インデックスの完了には時間がかかりますが、ユーザーは引き続き Jira を利用できます。完了後、新しいインデックスが残りのノードに自動的に配布されます。

最終更新日 2020 年 9 月 16 日

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

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