自己管理型レプリカセット ノードの oplog サイズの変更
項目一覧
警告
local.oplog.rs
コレクションは削除できません。 この制限の詳細については、「 oplogコレクションの動作 」を参照してください。
この手順では、レプリカセットの各ノードに対して [1] のサイズを変更するために、replSetResizeOplog
コマンドを使用します。操作は、セカンダリ ノードから開始し、次に プライマリ ノードに進みます。
これらの手順は、最初にそれぞれのセカンダリ レプリカセット ノードに対して実行します。すべてのセカンダリ ノードの oplog サイズを変更したら、プライマリ ノードで次の手順を実行します。
A. レプリカセット ノードに接続します
mongosh
を使用してレプリカセット ノードに接続します。
mongosh --host <hostname>:<port>
注意
レプリカセットで認証が強制される場合は、 clusterManager
またはclusterAdmin
ロールなど、 local
データベースを変更する権限を持つユーザーとして認証を受ける必要があります。
B.(オプション)oplog の現在のサイズを確認します
oplog の現在のサイズを表示するには、 local
データベースに切り替えて、 oplog.rs
コレクションに対して db.collection.stats()
を実行します。stats()
oplog サイズを maxSize
として表示します。
use local db.oplog.rs.stats().maxSize
maxSize
フィールドにはコレクションのサイズがバイト単位で表示されます。
C. レプリカセット ノードの oplog サイズを変更します
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 が削除されるのを回避するために、設定されたサイズ制限を超えて大きくなることがあります。 |
D.(任意)ディスク領域を再利用するために oplog.rs
を圧縮する
oplog のサイズを圧縮しても、元の oplog サイズに割り当てられていたディスク領域が自動的に再利用されることはありません。ディスク領域を再利用するには、 local
データベースのoplog.rs
コレクションに対して compact
を実行する必要があります。oplog サイズを増やした後、 oplog.rs
コレクションでcompact
を実行しても利点はありません。
重要
レプリカセット ノードは、compact
操作の実行中に oplog エントリを複製できます。その結果、oplog のレプリケーションは圧縮中も通常どおり継続できるため、oplog での圧縮操作をメンテナンスウィンドウに制限する必要がなくなりました。
プライマリ レプリカセット ノードに対しては compact
を実行しないでください。mongo
shellを(レプリカセットではなく)プライマリに直接接続し、 rs.stepDown()
を実行します。成功した場合、プライマリはセカンダリに降格します。mongo
shellから、セカンダリとなったノードで compact
コマンドを実行します。
次の操作は、 oplog.rs
コレクションに対してcompact
コマンドを実行します。
use local db.runCommand({ "compact" : "oplog.rs" } )
認証が強制されるクラスターの場合は、 local
データベースとoplog.rs
コレクションに対するcompact
特権アクションが可能なユーザーとして認証を受けます。compact
のための認証要件の詳細なドキュメントについては、 compact
に必要な特権」を参照してください。