ジャーナルファイル
ジャーナルは、最後のチェックポイントの作成後にデータベースに加えられたすべての変更点を追跡する実行トランザクションログです。これは2つのチェックポイントの架け橋です。
月曜日に作成されたチェックポイントファイルと、その時点から水曜日まで収集されたジャーナルファイルがある場合、それら2つのファイルに含まれる情報は、水曜日に作成されたチェックポイントに含まれる情報と同じです。例えば、水曜日の正午にディスククラッシュが発生してHelixサーバデータベースが破損したとします。この場合、たとえ水曜日のチェックポイントがまだ作成されていなくても、データベースを復元することができます。
デフォルトでは、カレントジャーナルファイル名はjournal
、格納されているディレクトリは
です。ただし、ディスクの故障によりルートディレクトリが破損した場合、ジャーナルファイルにもアクセスできなくなってしまいます。P4ROOT
したがって、ジャーナルファイルがP4ROOT
以外のファイルシステムに書き込まれるようにシステムを設定することを強く推奨します。そのためには、環境変数P4JOURNAL
内のジャーナルファイル名を指定するか、p4d
の起動時に-J
filename
フラグを使用します。
データベースを復元するには、最新のジャーナルファイルに常にアクセスできるようにしておくのみで十分です。ただし、さらに古いチェックポイントを復元する必要が生じる場合、古いジャーナルを古いチェックポイントと一緒にアーカイブすると安心です。
ジャーナル作成は、すべてのWindowプラットフォームおよびUNIXプラットフォームで自動的に有効になります。P4JOURNAL
が未設定のままである(かつコマンドラインで場所が指定されない)場合、ジャーナルの既定の場所は$P4ROOT/journal
になります。
ジャーナルファイルは、新しいチェックポイントが作成されるまで増大し続けます。ジャーナルファイルのサイズを抑制するには、定期的にチェックポイントを作成する必要があります。カレントジャーナルのサイズが極端に大きくなっている場合、それはチェックポイントを作成する必要があるしるしです。
チェックポイントを作成するたびに(2回目以降)、古いジャーナルファイルの名前が変更され、新しいジャーナルファイルへの記録が開始されます。古いjournal
はjournal.n
という名前(n
はシーケンス番号)に変更され、新しいjournal
が作成されます。
デフォルトでは、ジャーナルはサーバルートディレクトリ(P4ROOT
)内のjournal
ファイルに書き込まれます。ディスククラッシュが発生しないという保証はどこにもありません。このため、ジャーナルファイルは、Helixサーバルートとは別のファイルシステムに配置することをお勧めします。別の物理ディスクドライブに配置すると理想的です。ジャーナルの名前と場所を変更することができます。そのためには、環境変数P4JOURNAL
内にジャーナルファイル名を指定するか、p4d
の起動時に-J filename]
フラグを使用します。
ジャーナルファイルの作成時に-J filename
フラグを使用する場合は、それ以降のチェックポイントでも必ず同じファイルを使用してください。同じファイルを使用しないと、ジャーナルファイルの名前が正しく変更されません。
P4JOURNAL
を使用するにせよ、-J
journalfile
にp4d
オプションを指定して使用するせによ、ジャーナルファイル名は、絶対パスでも、サーバルートを基準とする相対パスでも指定できます。
例ジャーナルファイルを指定する
以下のコマンドでサービスを起動します。
$ p4d -r $P4ROOT -p 1666 -J /usr/local/perforce/journalfile
Perforce Server starting...
チェックポイントを作成するには以下のコマンド
$ p4d -r $P4ROOT -J /usr/local/perforce/journalfile -jc
Checkpointing to checkpoint.19...
Saving journal to journal.18...
Truncating /usr/local/perforce/journalfile...
を使用するか、P4JOURNAL
を/usr/local/perforce/journalfile
に設定して以下のコマンドを使用します。
$ p4d -r $P4ROOT -jc
Checkpointing to checkpoint.19...
MD5(checkpoint.19)=48769A82387B04987568309823E784C9
Rotating /usr/local/perforce/journalfile to journal.18
環境変数P4JOURNAL
(またはコマンドラインの指定)が、Perforceサービスの起動時に使用された設定と異なる場合、チェックポイントは依然として作成されますが、ジャーナルは保存も切り捨てもされません。これは実に避けるべきことです。
チェックポイントとジャーナルの履歴
p4 journals
コマンドを使用すると、サーバに対するチェックポイントとジャーナルの履歴を表示することができます。この履歴には、チェックポイント、ジャーナルローテーション、ジャーナルリプレイ、チェックポイントのスケジュールなどのイベントの情報も含まれます。コマンドの出力とオプションに関する詳細については、『Helix Core P4コマンドリファレンス』のp4 journals
コマンドの解説を参照してください。
ジャーナルの整合性を検証する
チェックポイントの整合性を検証するには、p4d
-jv
コマンドを使用します。
ジャーナルのローテーション後のメンテナンス作業を自動化する
ジャーナルがローテーションされたときにHelixサーバがトリガスクリプトを実行するように構成するには、journal-rotate
タイプとjournal-rotate-lock
タイプのトリガを使用します。稼働中のサーバでp4 admin journal
コマンドまたはp4 admin
checkpoint
コマンドを使用してジャーナルのローテーションを実行すると、ジャーナルローテーショントリガ起動します。p4d -jc
またはp4d --jj
コマンドを実行した場合はジャーナルはローテーションされません。
ジャーナルローテーショントリガを使用してサーバ上の定期メンテナンスを実行することができます。データベーステーブルがロックされたままであっても、ロックが解除された状態であっても実行が可能です。これらのトリガは、ジャーナルレコードによってジャーナルローテーションがトリガされているエッジサーバまたはレプリカ上での使用を意図しています。これらのトリガを実行するためには、サーバが稼働中である必要があります。
詳細については、「ジャーナルローテーションでトリガする」を参照してください。
ジャーナル作成を無効にする
ジャーナル作成を無効にするには、サービスを停止し、既存のジャーナルファイル(存在する場合)を削除し、環境変数P4JOURNAL
をoff
に設定し、p4d
に-J
フラグをつけずに再起動します。