Helix Coreサーバ管理者ガイド: 基本 (2019.1)

ジャーナルファイル

ジャーナルは、最後のチェックポイントの作成後にデータベースに加えられたすべての変更点を追跡する実行トランザクションログです。これは2つのチェックポイントの架け橋です。

月曜日に作成されたチェックポイントファイルと、その時点から水曜日まで収集されたジャーナルファイルがある場合、それら2つのファイルに含まれる情報は、水曜日に作成されたチェックポイントに含まれる情報と同じです。例えば、水曜日の正午にディスククラッシュが発生してHelixサーバデータベースが破損したとします。この場合、たとえ水曜日のチェックポイントがまだ作成されていなくても、データベースを復元することができます。

警告

デフォルトでは、カレントジャーナルファイル名はjournal、格納されているディレクトリはP4ROOTです。ただし、ディスクの故障によりルートディレクトリが破損した場合、ジャーナルファイルにもアクセスできなくなってしまいます。

したがって、ジャーナルファイルがP4ROOT以外のファイルシステムに書き込まれるようにシステムを設定することを強く推奨します。そのためには、環境変数P4JOURNAL内のジャーナルファイル名を指定するか、p4dの起動時に-J filenameフラグを使用します。

データベースを復元するには、最新のジャーナルファイルに常にアクセスできるようにしておくのみで十分です。ただし、さらに古いチェックポイントを復元する必要が生じる場合、古いジャーナルを古いチェックポイントと一緒にアーカイブすると安心です。

ジャーナル作成は、すべてのWindowプラットフォームおよびUNIXプラットフォームで自動的に有効になります。P4JOURNALが未設定のままである(かつコマンドラインで場所が指定されない)場合、ジャーナルの既定の場所は$P4ROOT/journalになります。

ジャーナルファイルは、新しいチェックポイントが作成されるまで増大し続けます。ジャーナルファイルのサイズを抑制するには、定期的にチェックポイントを作成する必要があります。カレントジャーナルのサイズが極端に大きくなっている場合、それはチェックポイントを作成する必要があるしるしです。

チェックポイントを作成するたびに(2回目以降)、古いジャーナルファイルの名前が変更され、新しいジャーナルファイルへの記録が開始されます。古いjournaljournal.nという名前(nはシーケンス番号)に変更され、新しいjournalが作成されます。

デフォルトでは、ジャーナルはサーバルートディレクトリ(P4ROOT)内のjournalファイルに書き込まれます。ディスククラッシュが発生しないという保証はどこにもありません。このため、ジャーナルファイルは、Helixサーバルートとは別のファイルシステムに配置することをお勧めします。別の物理ディスクドライブに配置すると理想的です。ジャーナルの名前と場所を変更することができます。そのためには、環境変数P4JOURNAL内にジャーナルファイル名を指定するか、p4dの起動時に-J filename]フラグを使用します。

警告

ジャーナルファイルの作成時に-J filenameフラグを使用する場合は、それ以降のチェックポイントでも必ず同じファイルを使用してください。同じファイルを使用しないと、ジャーナルファイルの名前が正しく変更されません。

P4JOURNALを使用するにせよ、-J journalfilep4dオプションを指定して使用するせによ、ジャーナルファイル名は、絶対パスでも、サーバルートを基準とする相対パスでも指定できます。

ジャーナルファイルを指定する

以下のコマンドでサービスを起動します。

$ 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コマンドを実行した場合はジャーナルはローテーションされません。

ジャーナルローテーショントリガを使用してサーバ上の定期メンテナンスを実行することができます。データベーステーブルがロックされたままであっても、ロックが解除された状態であっても実行が可能です。これらのトリガは、ジャーナルレコードによってジャーナルローテーションがトリガされているエッジサーバまたはレプリカ上での使用を意図しています。これらのトリガを実行するためには、サーバが稼働中である必要があります。

詳細については、「ジャーナルローテーションでトリガする」を参照してください。

ジャーナル作成を無効にする

ジャーナル作成を無効にするには、サービスを停止し、既存のジャーナルファイル(存在する場合)を削除し、環境変数P4JOURNALoffに設定し、p4d-Jフラグをつけずに再起動します。