レプリカセットの名前を変更するには、レプリカセットのすべてのノードをシャットダウンしてから、各ノードの localデータベースを新しいレプリカセット名で構成する必要があります。
この手順では、ダウンタイムが必要です。
前提条件
レプリカセットがシャーディングされていないことを確認します。 名前変更手順は、シャーディングされていないレプリカセットのみ。
レプリカセットの名前を変更する前に、MongoDB 配置の完全なバックアップを実行してください。
認証が有効になっている場合は、各ノードの
localデータベース内のsystem.replsetコレクションに対してfind、insert、およびremove特権があることを確認します。Tip
showPrivilegesフィールドとshowBuiltinRolesフィールドの両方をtrueに設定してrolesInfoコマンドを発行すると、ロールの権限を表示できます。
手順
レプリカセット メンバーをシャットダウンします。
「レプリカセットの停止 」の手順に従って、レプリカセット メンバーがシャットダウンされていることを確認します。
警告
この手順では、すべてのレプリカ ノードをシャットダウンする必要があるため、ダウンタイムが必要になります。
レプリカセットの名前を変更します。
レプリカセットの各ノードに対して次の手順を実行します。
--replSetオプションを使用せずに、別のポートでレプリカセット メンバーを起動します。レプリカセット名を更新します。
構成ファイルを使用する場合は、
replication.replSetNameを新しい名前に設定します。mongodオプションとともに スタートアップ--replSetコマンドを使用する場合は、ステップ f で使用する新しいレプリカセット名を書き留めておきます。
レプリカセット メンバーに接続します。
次のコマンドを使用して、ローカルデータベース内のレプリカセット名を更新します。
/* Set `newId` to the new replica set name */ var newId = '<new replica set name>' var doc = db.getSiblingDB("local").system.replset.findOne() var oldId = doc._id doc._id = newId db.getSiblingDB("local").system.replset.insertOne(doc) db.getSiblingDB("local").system.replset.deleteOne({_id: oldId}) レプリカセット メンバーをシャットダウンします。
注意
Ops Manager
MongoDB Ops Managerを使用している場合は、レプリカセット メンバーをシャットダウンする前に、 MongoDB Ops Managerによるレプリカセットの管理を停止する必要があります。 この手順の詳細については、「 Ops Manager からのプロセスの削除」を参照してください。
レプリカセット メンバーを元のポートで起動します。
構成ファイルを使用する場合は、
replication.replSetNameが新しいレプリカセット名に設定されていることを確認します。オプションとともに
mongodスタートアップ--replSetコマンドを使用する場合は、レプリカセットの新しい名前を--replSetオプションに渡します。