MongoDB は、 書込み操作 の耐久性を保証するために、ディスク上の ジャーナル への 先行書込みログ を使用します。
WiredTiger storage engineでは、クラッシュ後の一貫した状態を保証するためにジャーナリングは必要ありません。 リカバリ中に、データベースは最後の整合性のあるチェックポイントに復元されます。 ただし、チェックポイント間で MongoDB が予期せず終了した場合は、最後のチェックポイント後に発生した書込みを回復するためにジャーナリングが必要になります。
 mongodが予期せず停止した場合、プログラムはジャーナルに書き込まれたすべてを回復できます。 MongoDB は再起動時に書込み操作を再適用し、一貫性のある状態を維持します。 デフォルトでは、失われた書込みの最大量(つまり、ジャーナルに書き込まれない書込み)は、過去 100 ミリ秒内に行われた書込みと、ジャーナル書込みを実際に実行するのにかかる時間です。 デフォルトの詳細については、 commitIntervalMsを参照してください。
手順
コミット確認の取得
書込み保証 ( write concern ) とjオプションを使用してコミット確認を取得できます。 詳細については、「 書込み保証 ( write concern) 」を参照してください。
ジャーナル ステータスの監視
serverStatusコマンド/ db.serverStatus()メソッドからは、ジャーナルに関する統計を含むwiredTiger.logが返されます。
予期しないシャットダウン後のデータの回復
クラッシュ後の再起動では、サーバーが使用可能になる前に、MongoDB は ジャーナル ディレクトリ内のすべてのジャーナル ファイルを再生します。 MongoDB がジャーナル ファイルを再生する必要がある場合、 mongodはログ出力でこれらのイベントを記録します。
--repairを実行する理由はありません。
WiredTiger Journal Compressor を変更する
WiredTiger storage engine では、MongoDB はデフォルトでジャーナルにsnappyコンプレッサーを使用します。 mongodインスタンスに別の圧縮アルゴリズムを指定するか、圧縮を行わない場合は次のようにします。
Tip
この手順の実行中にmongodの不正なシャットダウンが発生した場合は、ジャーナル ファイルを使用して回復するために古いコンプレッサー設定を使用する必要があります。 回復したら、手順を再試行できます。
スタンドアロンのmongodインスタンスのジャーナルコンプレッサーを変更するには、次の手順に従います。
- storage.wiredTiger.engineConfig.journalCompressorを新しい値に更新します。- 構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中に - --wiredTigerJournalCompressorコマンドライン オプションを更新する必要があります。
- mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、- mongoshをインスタンスに接続し、- db.shutdownServer()を発行します。- db.getSiblingDB('admin').shutdownServer() 
- プロセスが実行されなくなったことを確認したら、 - mongodインスタンスを再起動します。- 構成ファイルを使用している場合: - mongod -f <path/to/myconfig.conf> 
- 構成ファイルの代わりにコマンドライン オプションを使用している場合は、 - --wiredTigerJournalCompressorを新しい値に更新します。- mongod --wiredTigerJournalCompressor <differentCompressor|none> ... 
 
レプリカセットのノードのジャーナルコンプレッサーを変更するには、次の手順に従います。
- mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、- mongoshをインスタンスに接続し、- db.shutdownServer()を発行します。- db.getSiblingDB('admin').shutdownServer() 
- storage.wiredTiger.engineConfig.journalCompressorを新しい値に更新します。- 構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。 
- mongodインスタンスを再起動します。- 構成ファイルを使用している場合: - mongod -f <path/to/myconfig.conf> 
- 構成ファイルの代わりにコマンドライン オプションを使用している場合は、 - --wiredTigerJournalCompressorを新しい値に更新します。- mongod --wiredTigerJournalCompressor <differentCompressor|none> ... 
 
シャード レプリカセットまたはコンフィギュレーションサーバー レプリカセットのノードのジャーナル コンプレッサーを変更するには、次の手順に従います。
- mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、- mongoshをインスタンスに接続し、- db.shutdownServer()を発行します。- db.getSiblingDB('admin').shutdownServer() 
- storage.wiredTiger.engineConfig.journalCompressorを新しい値に更新します。- 構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。 
- mongodインスタンスを再起動します。- 構成ファイルを使用している場合: - mongod -f <path/to/myconfig.conf> 
- 構成ファイルの代わりにコマンドライン オプションを使用している場合は、 - --wiredTigerJournalCompressorを新しい値に更新します。- mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...