警告
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 を実行しないでください。mongoshellを(レプリカセットではなく)プライマリに直接接続し、 rs.stepDown()を実行します。成功した場合、プライマリはセカンダリに降格します。mongo shellから、セカンダリとなったノードで compact コマンドを実行します。
次の操作は、 oplog.rsコレクションに対してcompactコマンドを実行します。
use local db.runCommand({ "compact" : "oplog.rs" } )
認証が強制されるクラスターの場合は、 localデータベースとoplog.rsコレクションに対するcompact特権アクションが可能なユーザーとして認証を受けます。compactのための認証要件の詳細なドキュメントについては、 compactに必要な特権」を参照してください。