自己管理型レプリカセットからのノードの削除
レプリカセットのノードを削除するには、次のいずれかの手順を行います。
を使用したノードの削除 rs.remove()
削除するメンバーの
mongod
インスタンスをシャットダウンします。インスタンスをシャットダウンするにはmongosh
を使用して接続し、db.shutdownServer()
メソッドを使用します。レプリカセットの現在のプライマリに接続します。現在のプライマリを確認するには、レプリカセットの任意のノードに接続した状態で
db.hello()
を使用します。以下のいずれかの形式で
rs.remove()
を使用して、ノードを削除します。rs.remove("mongod3.example.net:27017") rs.remove("mongod3.example.net") レプリカセットで新しいプライマリを選択する必要がある場合、MongoDB により shell が一時的に切断されることがあります。このような切断が起きると、shell により自動的に再接続されます。ただし、コマンドが正常に実行されても、shell に
DBClientCursor::init call() failed
エラーが表示される場合があります。
を使用したノードの削除 rs.reconfig()
ノードを削除するには、レプリカ構成ドキュメント を使用してレプリカセットを再構成し、そのノードを members
配列から削除します。
rs.reconfig()
では、一度に最大 1
voting
メンバーを追加または削除できます。レプリカセットから複数の投票メンバーを削除するには、一連の rs.reconfig()
操作を発行して、一度に 1 つのメンバーを削除します。詳しくは、「再構成では一度に 1 人の投票メンバーしか追加または削除できない」を参照してください。
手順
削除するメンバーの
mongod
インスタンスをシャットダウンします。インスタンスをシャットダウンするにはmongosh
を使用して接続し、db.shutdownServer()
メソッドを使用します。レプリカセットの現在のプライマリに接続します。現在のプライマリを確認するには、レプリカセットの任意のノードに接続した状態で
db.hello()
を使用します。rs.conf()
メソッドを発行して現在の構成ドキュメントを表示し、削除するメンバーのmembers
配列内での位置を決定します。例
mongod_C.example.net
は、次の構成ファイルの2
の位置にあります。{ "_id" : "rs", "version" : 7, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" }, { "_id" : 2, "host" : "mongod_C.example.net:27017" } ] } 現在の構成ドキュメントを変数
cfg
に割り当てます。cfg = rs.conf() cfg
オブジェクトを変更してメンバーを削除します。例
mongod_C.example.net:27017
を削除するには、次の JavaScript 操作を使用します。cfg.members.splice(2,1) 次のコマンドを発行して、新しい構成でレプリカセット構成ドキュメントを上書きします。
rs.reconfig(cfg) 新しい構成を確認するには、
rs.conf()
を実行します。上記の例では、出力は次のようになります。
{ "_id" : "rs", "version" : 8, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" } ] }