Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

自己管理型配置のジャーナリングの構成

項目一覧

  • 手順

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 storage engine では、MongoDB はデフォルトでジャーナルにsnappyコンプレッサーを使用します。 mongodインスタンスに別の圧縮アルゴリズムを指定するか、圧縮を行わない場合は次のようにします。

Tip

この手順の実行中にmongodの不正なシャットダウンが発生した場合は、ジャーナル ファイルを使用して回復するために古いコンプレッサー設定を使用する必要があります。 回復したら、手順を再試行できます。

スタンドアロンのmongodインスタンスのジャーナルコンプレッサーを変更するには、次の手順に従います。

  1. storage.wiredTiger.engineConfig.journalCompressor設定を新しい値に更新します。

    構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中に--wiredTigerJournalCompressorコマンドライン オプションを更新する必要があります。

  2. mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、 mongoshをインスタンスに接続し、 db.shutdownServer()を発行します。

    db.getSiblingDB('admin').shutdownServer()
  3. プロセスが実行されなくなったことを確認したら、 mongodインスタンスを再起動します。

    • 構成ファイルを使用している場合:

      mongod -f <path/to/myconfig.conf>
    • 構成ファイルの代わりにコマンドライン オプションを使用している場合は、 --wiredTigerJournalCompressorオプションを更新します。

      mongod --wiredTigerJournalCompressor <differentCompressor|none> ...

レプリカセットのノードのジャーナルコンプレッサーを変更するには、次の手順に従います。

注意

次の手順では、ジャーナルを使用せずにレプリカ ノードをスタンドアロンとして再起動します。

  1. mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、 mongoshをインスタンスに接続し、 db.shutdownServer()を発行します。

    db.getSiblingDB('admin').shutdownServer()
  2. 構成ファイルを更新して、スタンドアロンとして再起動する準備をします。

    以下に例を挙げます。

    storage:
    journal:
    enabled: false
    #replication:
    # replSetName: replA
    setParameter:
    disableLogicalSessionCacheRefresh: true

    構成ファイルの代わりにコマンドライン オプションを使用する場合は、再起動中に コマンドライン オプションを更新する必要があります。

  3. mongodインスタンスを再起動します。

    • 構成ファイルを使用している場合:

      mongod -f <path/to/myconfig.conf>
    • 設定ファイルの代わりにコマンドライン オプションを使用している場合は、

      • --nojournalオプションを含めます

      • レプリケーション コマンドライン オプション--replSetなど)をすべて削除します。

      • --setParameterオプションでパラメータdisableLogicalSessionCacheRefreshtrueに設定します。

        mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
  4. mongodインスタンスのクリーン シャットダウンを実行します。

    db.getSiblingDB('admin').shutdownServer()

    プロセスが実行されなくなったことを確認します。

  5. 構成ファイル を更新して、新しいジャーナル コンプレッサーを使用してレプリカセット メンバーとして再起動する準備をします。

    以下に例を挙げます。

    storage:
    wiredTiger:
    engineConfig:
    journalCompressor: <newValue>
    replication:
    replSetName: replA

    構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。

  6. mongodインスタンスをレプリカセット メンバーとして再起動します。

    • 構成ファイルを使用している場合:

      mongod -f <path/to/myconfig.conf>
    • 構成ファイルの代わりにコマンドライン オプションを使用している場合:

      mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...

シャード レプリカセットまたはコンフィギュレーションサーバー レプリカセットのノードのジャーナル コンプレッサーを変更するには、次の手順に従います。

注意

次の手順では、ジャーナルを使用せずにレプリカ ノードをスタンドアロンとして再起動します。

  1. mongodインスタンスのクリーン シャットダウンを実行します。 たとえば、 mongoshをインスタンスに接続し、 db.shutdownServer()を発行します。

    db.getSiblingDB('admin').shutdownServer()
  2. 構成ファイルを更新して、スタンドアロンとして再起動する準備をします。

    以下に例を挙げます。

    storage:
    journal:
    enabled: false
    setParameter:
    skipShardingConfigurationChecks: true
    disableLogicalSessionCacheRefresh: true
    #replication:
    # replSetName: shardA
    #sharding:
    # clusterRole: shardsvr
    net:
    port: 27218

    構成ファイルの代わりにコマンドライン オプションを使用する場合は、再起動中に コマンドライン オプションを更新する必要があります。

  3. mongodインスタンスを再起動します。

    • 構成ファイルを使用している場合:

      mongod -f <path/to/myconfig.conf>
    • 構成ファイルの代わりにコマンドライン オプションを使用している場合:

      mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
  4. mongodインスタンスのクリーン シャットダウンを実行します。

    db.getSiblingDB('admin').shutdownServer()

    プロセスが実行されなくなったことを確認します。

  5. 新しいジャーナル コンプレッサーで再起動する準備として、構成ファイルを更新します。

    以下に例を挙げます。

    storage:
    wiredTiger:
    engineConfig:
    journalCompressor: <newValue>
    replication:
    replSetName: shardA
    sharding:
    clusterRole: shardsvr
    net:
    port: 27218

    構成ファイルの代わりにコマンドライン オプションを使用する場合は、以下の再起動中にコマンドライン オプションを更新する必要があります。

  6. mongodインスタンスをレプリカセット メンバーとして再起動します。

    • 構成ファイルを使用している場合:

      mongod -f <path/to/myconfig.conf>
    • 構成ファイルの代わりにコマンドライン オプションを使用している場合:

      mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...

戻る

インメモリ

項目一覧