10

もしそうなら、どのように?

レプリカ セットを最初に作成したとき、紛らわしい名前を付けました。今すぐ変更したいです。

レプリカ セット名は に記載され/etc/mongod.confていますが、それがいつ読み取られるか、または再読み取られるかはわかりません。レプリカ セット名はコマンド ライン パラメーターとして渡すこともできるため、次のことを想定しています (現在テスト中です)。

  • 他のノードと同期している間、起動時に一度レプリカセット名を使用するだけです
  • replSetのCLI 引数またはreplSet値を再構成、停止、変更して/etc/mongod.confから、再起動する必要があります

つまり、元の質問に対する答えは、「いいえ、再起動する必要があります」または「いいえ、レプリカ セット名は不変です」であると想定しています。ローカルで試しているので、おそらくすぐにこれを理解できるでしょう。

4

3 に答える 3

36

ダウンタイムでそれを行う方法は次のとおりです。

  1. すべてのサーバーを停止します
    • 認証が有効になっている場合は、無効になっていることを確認してください。そうしないと、local.system.replset コレクションへの変更が承認されない可能性があります。
  2. --replSet オプションを指定せずに各サーバーを起動し、正しいデータ ディレクトリを指定します。
  3. 各サーバーの local.system.replset doc を新しいレプリカ セット名で更新します。 ここですべてのサーバーを変更する必要があります。
    mongo シェルで local.system.replset を更新する方法は次のとおりです。

    use local  
    var doc = db.system.replset.findOne()  
    doc._id = 'NewReplicaSetName'
    db.system.replset.save(doc)  
    db.system.replset.remove({_id:'OldReplicaSetName'})
    
  4. それらを再度シャットダウンします。
  5. すべてのサーバーで /etc/mongod.conf replSet オプションを新しい名前に変更します。
  6. それらをすべて元のオプションで開始します。
于 2012-06-29T17:44:00.543 に答える
0

いいえ。

mongodb-user のスレッド「レプリカ セット名の変更」を参照してください... Kristina Chodorow は、ダウンタイムが必要であると主張しています。

レプリカ セットの名前を変更する方法については、(ダウンタイムを含めて) わかり次第、ここに追加します (他の誰かが私を打ち負かさない限り)。

于 2012-06-29T17:39:39.337 に答える