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

replSetResizeOplog

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
replSetResizeOplog

replSetResizeOplog は、oplog エントリを保持する最小時間数の指定もサポートしています。

バージョン5.0での変更: mongoshreplSetOplogサイズを設定するには、 Double()コンストラクターを使用します。

replSetResizeOplog を使用すると、 mongodプロセスを再起動せずに、oplog またはその最小保持期間のサイズを動的に変更できます。

このコマンドは、 adminデータベースに対して実行する必要があります。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M 10クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

コマンドの形式は次のとおりです。

db.adminCommand(
{
replSetResizeOplog: <int>,
size: <double>,
minRetentionHours: <double>
}
)

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
replSetResizeOplog
整数
1 に設定します。
size
double

oplog の最大サイズ(メガバイト単位)。

minRetentionHours
double

任意。 oplog エントリを保持する最小時間数。10 進数値は時間単位を表します。 たとえば、 1.5の値は 1 時間と 30 分を表します。

値は 0 以上である必要があります。値が 0 の場合、構成された最大 oplog サイズを維持するために、mongod は最も古いエントリから oplog を切り詰める必要があることを示します。

minRetentionHoursで構成されたmongodは、次の場合にのみ oplog エントリを削除します。

  • oplog が設定された最大サイズに達し、かつ

  • oplog エントリーは、ホスト システム クロックに基づいて構成された時間数よりも以前のものです。

現在構成されている最小 oplog 保持期間を確認するには、oplogTruncation.oplogMinRetentionHours コマンドの出力のserverStatus を参照してください。

Tip

以下も参照してください。

replSetResizeOplogmongodWired Tiger ストレージ エンジン または インメモリ ストレージ エンジンで 実行されている インスタンスで を使用できます。

コマンドを使用して のサイズを変更する手順については 、「 oplog自己管理型レプリカセット ノードの サイズの変更replSetResizeOplogoplog 」チュートリアルを参照してください。

oplog は、majority commit point が削除されるのを回避するために、設定されたサイズ制限を超えて大きくなることがあります。

local.oplog.rsコレクションは削除できません。 この制限の詳細については、「 oplogコレクションの動作 」を参照してください。

replSetResizeOplog は、次の方法で設定された最大 oplog サイズまたは最小 oplog 保持期間を上書きします。

次の場合を 除き 、サーバーの再起動後も新しい oplog サイズが維持されます。

重要

最大 oplog サイズを小さくすると、oplog が新しい構成サイズに達するまで、最も古い oplog エントリが切り捨てられます。

同様に、oplog の最小保持期間を短縮すると、oplog が設定された最大サイズを超えた場合に、指定された期間よりも古い oplog エントリが切り捨てられます。

oplogサイズまたは保持期間の減少によってoplogが切り捨てられると、それらのoplogエントリーをまだ読み取っているクライアントから次のような予期しない動作が発生する可能性があります。

oplog 保持期間が最小に設定されている場合、 mongodは次のように動作します。

  • oplog は、設定された時間数だけ oplog エントリーを保持できるように、制約なしに拡張されます。そのため、書き込みが大量で保存期間が長い組み合わせにした場合は、システム ディスク容量が減少または枯渇する可能性があります。

  • oplog が最大サイズを超えた場合、mongod oplog が最大サイズに戻った、 または 最大サイズが小さく設定された場合にも、 はそのディスク領域を保持し続ける可能性があります。「 oplog サイズを縮小してもディスク領域は即座に解放されない 」を参照してください。

  • mongod は、oplog エントリの保持を強制するときに、システム ウォール クロックと oplog エントリ作成ウォール クロック タイムを比較します。クラスター コンポーネント間でのクロックのズレにより、予期しない oplog 保持動作が発生する可能性があります。クラスター ノード間のクロック同期の詳細については、「クロック同期」を参照してください。

replSetResizeOplogを使用して特定のレプリカセット ノードの oplog サイズまたは最小 oplog 保持期間を変更しても、レプリカセット内の他のノードの oplog サイズは変更されません。 すべてのノードの oplog サイズまたは最小保持期間を変更するには、クラスター内の各レプリカセット ノードに対してreplSetResizeOplogを実行する必要があります。

oplog サイズを圧縮しても、そのディスク領域はすぐに再利用されることは ありません 。 これには、最小 oplog 保持期間よりも古い oplog イベントが切り捨てられることによる oplog サイズの縮小が含まれます。

oplog サイズを縮小した後、未使用のディスク領域をすぐに解放するには、メンテナンス期間中にlocalデータベースのoplog.rsコレクションに対してcompactを実行します。 compactは、実行されるデータベースに対するすべての操作をブロックします。 したがって、 oplog.rs compactを実行すると、oplog 同期が防止されます。 oplogのサイズを変更して oplog.rs を圧縮する手順については、「自己管理型レプリカセット ノードのoplogサイズの変更 」を参照してください。

replSetResizeOplogoplogに対して排他的ロック(W)を取得し、完了するまでコレクションに対する他の操作をブロックします。

MongoDB でのロックの詳細については、「FAQ: 同時実行性」を参照してください。

現在の最大 oplog サイズmaxSizeをメガバイト単位で表示するには、 db.collection.stats() mongoshメソッドを使用します。 例:

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

上記のコマンドは、このノードの oplog サイズをメガバイト単位で返します。

990

次のコマンドは、 replSetResizeOplogを使用して、このノードの oplog サイズを16384メガバイトに変更します。

db.adminCommand({ "replSetResizeOplog": 1, size: Double(16384)})

新しい oplog サイズを確認するには、 db.collection.stats()メソッドを再実行します。

db.getSiblingDB("local").oplog.rs.stats(1024*1024).maxSize

上記のコマンドは、次の値を返します。

"maxSize": NumberLong("16834")

警告

ノード内の oplog のサイズを縮小すると、ノードからデータが削除されます。 これにより、そのノードと同期しているレプリカ ノードが古くなる可能性があります。 これらのノードを再同期するには、「自己管理型レプリカセットのノードの再同期 」を参照してください。

  1. mongoshmongodレプリカセット ノードに接続します。

  2. 任意db.serverStatus()コマンドを使用して、現在の最小 oplog 保持値がoplogTruncation.oplogMinRetentionHoursであることを確認します。

    db.getSiblingDB("admin").serverStatus().oplogTruncation.oplogMinRetentionHours

    コマンドは、現在構成されているmongodの最小 oplog 保持期間を返します。 例:

    1.5

    mongodに最小 oplog 保持期間がない場合、操作は空の結果を返します。

  3. 構成された最小 oplog 保持期間を変更するには、 replSetResizeOplogコマンドを使用します。 たとえば、次の例では、oplog の最小保持期間を2時間に設定します。

    db.adminCommand({
    "replSetResizeOplog" : 1,
    "minRetentionHours" : 2
    })

戻る

replSetReconfig