2016-06-28 8 views
4

私は、 'admin' dbの管理者ユーザーに 'userAdminAnyDatabase'ロールがない3人のメンバ(バージョン2.4)のmongodbレプリカセットを持っています。mongodbレプリカセットの外にロック

このロールは、すべてのデータベースのユーザーを管理するために必要です。私は現在している

役割:私は自分自身のための役割を更新したり、新しいユーザーを作成しようとした[「readWriteAnyDatabase」、「dbAdminAnyDatabase」、「clusterAdmin」]

は、しかし、私はdb.systemにアクセスする権限がありません管理者のデータベースに.users。

noauth = trueに設定しようとしましたが、それは役に立たなかった。 keyFileも削除すると、dbは他のメンバーと同期できず(明らかに)、回復状態になってしまいました。

私はsimilar questionというスタンドアローンのdb(レプリカセットなし)を参照しています。この場合、実際には役に立ちません。

システムのダウンタイムを最小限に抑えながらこの役割を追加するにはどうすればよいでしょうか?

答えて

1

mongodumpmongorestoreを使用してデータをバックアップし、適切な権限でノードを再構築してデータを復元します。

しかし、このアプローチは、workべき:

あなたは次のことを行う必要があり、その後に自分自身をロックアウトしている場合:

  1. /--authを削除し、
  2. あなたのMongoDBインスタンスを停止または--keyfileオプションをに設定して認証を無効にする
  3. 認証なしでインスタンスを起動する
  4. 編集あなたはストレージエンジンとしてMMAPを持っていることを意味しモンゴ2.4を使用しているとして認証で必要な
  5. 再起動など、ユーザーインスタンスが
+0

質問に書いたように、レプリカセットのマスターノードからの認証を無効にしても、クラスタに接続できません。また、mongodump&restoreは非常に長いダウンタイムを引き起こします。 – odedfos

1

を可能にしました。

私の提案は次のようになります。

  1. は、現在のものと同じメディア上の各ホストが異なるポート、および設定されたデータベースのディレクトリに設定された同様のレプリカを作成します。
  2. のconfigure新しいレプリカでローカル
  3. 変更ポートを除く
  4. ストップ古いレプリカセットメンバー
  5. MOVEデータベースファイルを新しいディレクトリに実行されているものと同じすべての認証のものが
  6. がそれを起動する設定しました

他のディレクトリへのファイルの移動はポインタの変更であるためeこれには数秒かかります。

実装前にテストしてください。

すべての歓迎!

+0

オペレーションログのないデータベースファイル(ローカルを除く)を移動すると、新しいレプリカセットにどのように影響しますか?同期方法を知っていますか?また、レプリケーションの遅れのためにすべてのメンバー間でデータが正確でない場合はどうなりますか?ところで、私のストレージエンジンはtokumx – odedfos

+0

tokmuxとの経験がなかった...あなたは最初にマスターだったものを復元する必要があります – profesor79

+0

ちょっと考えて... oplogも転送する必要があります - しかし、ストレージエンジンと方法についてはまだ考えている私たちはそれを乗り越えることができた.... – profesor79

関連する問題