自己管理型配置のジャーナリングの構成
項目一覧
MongoDB は、 書込み操作 の耐久性を保証するために、ディスク上の ジャーナル への 先行書込みログ を使用します。
WiredTiger storage engineでは、クラッシュ後の一貫した状態を保証するためにジャーナリングは必要ありません。 リカバリ中に、データベースは最後の整合性のあるチェックポイントに復元されます。 ただし、チェックポイント間で MongoDB が予期せず終了した場合は、最後のチェックポイント後に発生した書込みを回復するためにジャーナリングが必要になります。
注意
WiredTiger ストレージ エンジンを使用するレプリカセット メンバーに対して、 --nojournal
オプションまたはstorage.journal.enabled: false
を指定することはできません。
ジャーナリング が有効になっている場合、 mongod
が予期せず停止した場合、プログラムはジャーナルに書き込まれたすべてを回復できます。 MongoDB は再起動時に書込み操作を再適用し、一貫性のある状態を維持します。 デフォルトでは、失われた書込みの最大量、つまりジャーナルに書き込まれない書込みは、過去の100ミリ秒内に行われた書込みと、ジャーナルへの書込みの実際の実行にかかる時間の合計です。 デフォルトの詳細については、 commitIntervalMs
を参照してください。
手順
ジャーナリングを無効にする
警告
実稼働システムではジャーナリングを無効にしないでください。
WiredTiger ストレージ エンジンを使用するレプリカセット メンバーに対して、
--nojournal
オプションまたはstorage.journal.enabled: false
を指定することはできません。
スタンドアロン配置のジャーナリングを無効にするには、 コマンドライン オプションを使用してmongod
--nojournal
を起動します。
コミット確認の取得
書込み保証 ( 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.journal.enabled
をfalse
に設定します。配置のレプリケーション設定をコメント アウトします。
setParameter
セクションでパラメータdisableLogicalSessionCacheRefresh
をtrue
に設定します。
以下に例を挙げます。
storage: journal: enabled: false #replication: # replSetName: replA setParameter: disableLogicalSessionCacheRefresh: true 構成ファイルの代わりにコマンドライン オプションを使用する場合は、再起動中に コマンドライン オプションを更新する必要があります。
mongod
インスタンスを再起動します。構成ファイルを使用している場合:
mongod -f <path/to/myconfig.conf> 設定ファイルの代わりにコマンドライン オプションを使用している場合は、
--nojournal
オプションを含めますレプリケーション コマンドライン オプション(
--replSet
など)をすべて削除します。--setParameter
オプションでパラメータdisableLogicalSessionCacheRefresh
をtrue
に設定します。mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
mongod
インスタンスのクリーン シャットダウンを実行します。db.getSiblingDB('admin').shutdownServer() プロセスが実行されなくなったことを確認します。
構成ファイル を更新して、新しいジャーナル コンプレッサーを使用してレプリカセット メンバーとして再起動する準備をします。
storage.journal.enabled
設定を削除します。配置のレプリケーション設定のコメントを解除します。
disableLogicalSessionCacheRefresh
パラメータを削除します。デフォルトのジャーナルコンプレッサーを使用するか、新しい値を指定するには、
storage.wiredTiger.engineConfig.journalCompressor
設定を削除します。
以下に例を挙げます。
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: replA 構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。
mongod
インスタンスをレプリカセット メンバーとして再起動します。構成ファイルを使用している場合:
mongod -f <path/to/myconfig.conf> 構成ファイルの代わりにコマンドライン オプションを使用している場合:
--nojournal
オプションを削除します。デフォルトのジャーナルコンプレッサーを使用するか、新しい値に更新するには、
--wiredTigerJournalCompressor
コマンドライン オプションを削除します。レプリケーション コマンドライン オプションとレプリカセット ノードのための追加オプションを含めます。
disableLogicalSessionCacheRefresh
パラメータを削除します。
mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...
シャード レプリカセットまたはコンフィギュレーションサーバー レプリカセットのノードのジャーナル コンプレッサーを変更するには、次の手順に従います。
注意
次の手順では、ジャーナルを使用せずにレプリカ ノードをスタンドアロンとして再起動します。
mongod
インスタンスのクリーン シャットダウンを実行します。 たとえば、mongosh
をインスタンスに接続し、db.shutdownServer()
を発行します。db.getSiblingDB('admin').shutdownServer() 構成ファイルを更新して、スタンドアロンとして再起動する準備をします。
storage.journal.enabled
をfalse
に設定します。パラメータ
skipShardingConfigurationChecks
を true に設定します。setParameter
セクションでパラメータdisableLogicalSessionCacheRefresh
をtrue
に設定します。配置のレプリケーション設定をコメント アウトします。
sharding.clusterRole
設定をコメント アウトします。明示的に設定されていない場合は、メンバーの現在のポートに
net.port
を設定します。
以下に例を挙げます。
storage: journal: enabled: false setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr net: port: 27218 構成ファイルの代わりにコマンドライン オプションを使用する場合は、再起動中に コマンドライン オプションを更新する必要があります。
mongod
インスタンスを再起動します。構成ファイルを使用している場合:
mongod -f <path/to/myconfig.conf> 構成ファイルの代わりにコマンドライン オプションを使用している場合:
--nojournal
オプションを含めます。パラメータ
skipShardingConfigurationChecks
を true に設定します。--setParameter
オプションでパラメータdisableLogicalSessionCacheRefresh
をtrue
に設定します。レプリケーション コマンドライン オプション(
--replSet
など)をすべて削除します。--shardsvr
/--configsvr
オプションを削除します。インスタンスの現在のポートに設定された
--port
を明示的に含めます。
mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
mongod
インスタンスのクリーン シャットダウンを実行します。db.getSiblingDB('admin').shutdownServer() プロセスが実行されなくなったことを確認します。
新しいジャーナル コンプレッサーで再起動する準備として、構成ファイルを更新します。
storage.journal.enabled
設定を削除します。skipShardingConfigurationChecks
パラメータ設定を削除します。disableLogicalSessionCacheRefresh
パラメータ設定を削除します。配置のレプリケーション設定のコメントを解除します。
sharding.clusterRole
設定のコメントを外します。デフォルトのジャーナルコンプレッサーを使用するか、新しい値を指定するには、
storage.wiredTiger.engineConfig.journalCompressor
設定を削除します。
以下に例を挙げます。
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: shardA sharding: clusterRole: shardsvr net: port: 27218 構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。
mongod
インスタンスをレプリカセット メンバーとして再起動します。構成ファイルを使用している場合:
mongod -f <path/to/myconfig.conf> 構成ファイルの代わりにコマンドライン オプションを使用している場合:
--nojournal
オプションを削除します。skipShardingConfigurationChecks
パラメータ設定を削除します。disableLogicalSessionCacheRefresh
パラメータを削除します。デフォルトのジャーナルコンプレッサーを使用するか、新しい値に更新するには、
--wiredTigerJournalCompressor
コマンドライン オプションを削除します。--shardsvr
/--configsvr
オプションを含めます。レプリケーション コマンドライン オプションとレプリカセット ノードのための追加オプションを含めます。
mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...