監査ログ項目を期限切れにする
大規模なインスタンスでは時間の経過とともに大量の監査ログが蓄積されて、Jira データベースのパフォーマンスに影響を与えてディスク容量を圧迫する可能性があります。このガイドでは、不要になった古い監査ログ項目を定期的に削除する方法について説明します。
監査ログの期限設定
Automation for Jira 3.12 以上の実行時に、グローバル管理者が監査ログの有効期限を設定できるようになりました。
[グローバル設定] セクションに進んで監査ログの有効期限を希望の値にスライドさせ、監査ログの有効期限を有効にします。
[保存] をクリックすると完了です。そのスケジュールで監査ログの有効期限が切れるようになりました。
警告
監査ログ項目が多い場合、この操作はコストがかかり、データベースに余分な負荷をかける可能性があります。適切な時間を選択して最大実行時間を制限し、Jira インスタンスが最もビジーになりにくい時間 (週末など) にのみ有効期限が切れるようにしてください。
監査項目のバックログが大量にある場合はグローバル設定で監査ログの自動期限切れを設定する前に、スケジュールされたダウンタイム中に次のデータベースクエリによって最初にすべての監査項目を一括削除することをお勧めします。
データベースのアイテムを直接期限切れにする
警告
これは破壊的なプロセスであり、正しく実行しないとデータが損失/破損する可能性があります。ロールバックが必要になった場合に備えて、バックアップを実行することをお勧めします。
この手順は、古いバージョンの Automation for Jira をご利用、またはスケジュールされたダウンタイム中に一括で削除する監査項目が多数ある場合にのみ必要です。
テーブルを特定して項目の数を確認し、最後にそれらを削除するという 3 ステップで行います。この情報はキャッシュされないため、最後に Jira やアドオンを再起動する必要はありません。
まず、必要なテーブルの数を確認します。
SELECT count(*) FROM "AO_589059_AUDIT_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_ASC_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_CGE_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_COMP_CGE";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_PROJECT";
次に、日付を選択して削除する項目の数を確認します。
SELECT count(*)
FROM "AO_589059_AUDIT_ITEM_ASC_ITEM"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
SELECT count(*)
FROM "AO_589059_AUDIT_ITEM_CGE_ITEM"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
SELECT count(*)
FROM "AO_589059_AUDIT_ITEM_COMP_CGE"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
SELECT count(*)
FROM "AO_589059_AUDIT_ITEM_PROJECT"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
SELECT count(*)
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508';
このタイミングでバックアップすることをお勧めします。
次に、項目を削除します。
DELETE FROM "AO_589059_AUDIT_ITEM_ASC_ITEM"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
DELETE FROM "AO_589059_AUDIT_ITEM_CGE_ITEM"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
DELETE FROM "AO_589059_AUDIT_ITEM_COMP_CGE"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
DELETE FROM "AO_589059_AUDIT_ITEM_PROJECT"
WHERE "AUDIT_ITEM_ID" IN (SELECT "ID"
FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508');
DELETE FROM "AO_589059_AUDIT_ITEM"
WHERE "CREATED" < '2016-09-12 07:20:17.508';
テーブルの新しい数を確認します。
SELECT count(*) FROM "AO_589059_AUDIT_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_ASC_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_CGE_ITEM";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_COMP_CGE";
SELECT count(*) FROM "AO_589059_AUDIT_ITEM_PROJECT";