記事
· 2022年1月12日 5m read

ミラージャーナルファイルの削除のタイミングと要件

これは、InterSystems FAQサイトの記事です。

ミラージャーナルファイルの削除(パージ)のタイミングは以下のようになります。

・プライマリ・フェイルオーバー・メンバ

 以下の期限のうち長い方に該当するもの
 -ローカルジャーナルファイルの削除条件が満たされたとき ("ジャーナル設定の構成" を参照)  
 -バックアップメンバとすべての非同期メンバに受信されたとき
  ただし、非同期メンバが14日間(既定値)を経過してもジャーナルファイルを受信しない場合は、そのジャーナルファイルは削除対象になります。
  「既定の14日間」は、以下のコマンドで設定が可能になります。
  この保持期間を過ぎると、ジャーナルが削除されてしまいその非同期メンバでは同期が取れなくなるのでご注意ください。

%SYS>write ##class(SYS.Mirror).JrnPurgeDefaultWait(10)       // 引数で保持期間を渡す


・バックアップ・フェイルオーバー・メンバ およびすべての災害復旧 (DR) 非同期メンバ

 以下の期限のうち長い方に該当するもの
 -ローカルジャーナルファイルの削除条件が満たされたとき
 -そのメンバで完全にデジャーナルされたとき
 -すべての非同期メンバに受信されたとき
   ただし、非同期メンバが14日間(既定値)を経過してもジャーナルファイルを受信しない場合は、そのジャーナルファイルは削除対象になります。

・レポート非同期メンバ

 -既定では、ミラージャーナルファイルがデジャーナルされ、トランザクションロールバックで不要になったとき
      管理ポータル:[システム管理] > [構成]> [ミラー設定] > [非同期の構成を編集]
  にて変更可能 ("非同期メンバの編集または削除" を参照)


ミラーではデジャーナリングが完了したジャーナルファイルは逐次システムが削除するので、手動でのミラージャーナルファイルの削除は行わないようにしてください。
もし、プライマリ側で未完了トランザクションが存在する場合、そのトランザクションのデータを含むジャーナルファイルは削除されずにトランザクション終了まで保持されます。
現在開いているトランザクションを含むミラージャーナルファイルはどのミラーメンバでも削除されません。

どのジャーナルファイルまでデジャーナリングが完了しているかは、管理ポータルで確認することができます。
    [システム オペレーション] > [ミラーモニタ] 
で各データベース毎にどのジャーナルファイルまで処理したかを確認できます。

ミラーリングではジャーナルデータの不整合/更新データの欠落を防ぐため、ジャーナルファイルへの書き込みができなくなった場合にデータベースへの更新アクセスをフリーズする動作となっています(この動作は変更できません)。
ジャーナルファイルのディスクの空き容量不足により、業務がその復旧まで停止することとならないよう、代替えディレクトリの設定をするようにしてください。("ジャーナリングの最善の使用方法 "を参照)

詳細は、以下のドキュメントをご覧ください。
ミラー・ジャーナル・ファイルの削除
 

どうしても手動で削除したい場合

ディスク容量が逼迫しどうしても手動で削除する必要がある場合、緊急の処置として以下のユーティリティまたはクラスメッソドにてジャーナルファイルのパージを行うことができます。
ただし、バックアップ取得以降のジャーナルファイルも削除されますので早急にデータベースのバックアップを行うようにしてください。

トランザクションのロールバックに必要なジャーナルファイルを除き全てのジャーナルを削除する場合は、以下の2つの方法があります。

(1) PURGE^JOURNAL ユーティリティ

%SYS>do PURGE^JOURNAL

1) Purge any journal NOT required for transaction rollback or crash recovery

2) Purge journals based on existing criteria (2 days or 2 backups)

Option? 1

 

(2) %SYS.Journal.File クラス の PurgeAll() クラスメソッド

Set RET=##class(%SYS.Journal.File).PurgeAll()

 

ジャーナルファイルの日付・番号を指定し、指定されたファイルより過去のジャーナルファイルを削除する場合は以下の方法になります。

(3) SYS.Mirror クラス の  PurgeJournalFiles() クラスメソッド

%SYS>set CheckOnly=1   // 1の場合はP urge対象のファイルをリストするだけ、 0 の場合は削除
%SYS>set StartFile="c:\intersystems\18p\mgr\journal\MIRROR-NAME-20210714.001"
                                         // 開始ファイル、これより古いファイルが削除対象
%SYS>write ##class(SYS.Mirror).PurgeJournalFiles(CheckOnly,StartFile,,,.PurgeCount,.PurgeMB,.PurgeRange,.PurgeFiles)
1
%SYS>zwrite
PurgeCount=4
PurgeFiles("NAME")=4
PurgeFiles("NAME",1)="c:\intersystems\18p\mgr\journal\MIRROR-NAME-20210708.001"
PurgeFiles("NAME",2)="c:\intersystems\18p\mgr\journal\MIRROR-NAME-20210712.001"
PurgeFiles("NAME",3)="c:\intersystems\18p\mgr\journal\MIRROR-NAME-20210713.001"
PurgeFiles("NAME",4)="c:\intersystems\18p\mgr\journal\MIRROR-NAME-20210714.001"
PurgeMB=9
PurgeRange=" 66 69"


あわせて、以下の関連記事も是非ご覧ください。

Cache Mirroring 101:簡単なガイドとよくある質問  
ミラーリングの機能について
 

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください