自己管理型レプリカセットの名前変更
レプリカセットの名前を変更するには、レプリカセットのすべてのノードをシャットダウンしてから、各ノードの 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
オプションに渡します。