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

自己管理型レプリカセット ノードの oplog サイズの変更

項目一覧

  • A. レプリカセット ノードに接続します
  • B.(オプション)oplog の現在のサイズを確認します
  • C. レプリカセット ノードの oplog サイズを変更します
  • D. (オプション)ディスク領域を再利用するために oplog.rsを圧縮します

警告

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

この手順では、レプリカセットの各ノードに対して [1] のサイズを変更するために、replSetResizeOplog コマンドを使用します。操作は、セカンダリ ノードから開始し、次に プライマリ ノードに進みます。

これらの手順は、最初にそれぞれのセカンダリ レプリカセット ノードに対して実行します。すべてのセカンダリ ノードの oplog サイズを変更したら、プライマリ ノードで次の手順を実行します。

mongosh を使用してレプリカセット ノードに接続します。

mongosh --host <hostname>:<port>

注意

レプリカセットで認証が強制される場合は、 clusterManagerまたはclusterAdminロールなど、 local データベースを変更する権限を持つユーザーとして認証を受ける必要があります。

oplog の現在のサイズを表示するには、 local データベースに切り替えて、 oplog.rsコレクションに対して db.collection.stats() を実行します。stats() oplog サイズを maxSizeとして表示します。

use local
db.oplog.rs.stats().maxSize

maxSizeフィールドにはコレクションのサイズがバイト単位で表示されます。

replSetResizeOplog コマンドを使用して oplog のサイズを変更します。size は double であり、990 MB より大きくなければなりません。mongosh で oplog size を明示的に投じるには、Double() コンストラクターを使用します。

以下の操作は、レプリカセット ノードの oplog サイズを 16 ギガバイト(16,000 メガバイト)に変更します。

db.adminCommand({replSetResizeOplog: 1, size: Double(16000)})
[1] oplog は、majority commit point が削除されるのを回避するために、設定されたサイズ制限を超えて大きくなることがあります。

oplog のサイズを圧縮しても、元の oplog サイズに割り当てられていたディスク領域が自動的に再利用されることはありません。ディスク領域を再利用するには、 localデータベースのoplog.rsコレクションに対して compact を実行する必要があります。oplog サイズを増やした後、 oplog.rsコレクションでcompactを実行しても利点はありません。

重要

レプリカセット ノードは、compact 操作の実行中に oplog エントリを複製できます。その結果、oplog のレプリケーションは圧縮中も通常どおり継続できるため、oplog での圧縮操作をメンテナンスウィンドウに制限する必要がなくなりました。

プライマリ レプリカセット ノードに対しては compact を実行しないでくださいmongoshellを(レプリカセットではなく)プライマリに直接接続し、 rs.stepDown()を実行します。成功した場合、プライマリはセカンダリに降格します。mongo shellから、セカンダリとなったノードで compact コマンドを実行します。

次の操作は、 oplog.rsコレクションに対してcompactコマンドを実行します。

use local
db.runCommand({ "compact" : "oplog.rs" } )

認証が強制されるクラスターの場合は、 localデータベースとoplog.rsコレクションに対するcompact特権アクションが可能なユーザーとして認証を受けます。compactのための認証要件の詳細なドキュメントについては、 compactに必要な特権」を参照してください。

戻る

を維持する