自己管理型レプリカセット ノードの 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
を実行しても利点はありません。
重要
レプリカセットメンバーは、oplog.rs
でcompact
操作が進行中の場合、oplogの同期を妨げるため、oplogエントリを複製できません。メンテナンスウィンドウ中にoplogでcompact
件の操作をスケジュールする必要があります。その時間ウィンドウでは、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
に必要な特権」を参照してください。