2017-07-11 2 views
2

MongoサーバーからローカルのMongoインスタンスにデータベースをコピーしようとしています。pymongoを使ってパスワードで保護されたMongo Serverからデータベースをコピーするには?

私はこれをPythonで実行する必要があり、を実行していますが、もうcopy_databaseメソッドはありません。代わりに、代わりにclient.admin.command('copydb', ...)関数を使用しようとしました。しかし、それはもはやソースMongo Serverの認証をサポートしていないようです。

これに対処する方法はありますか?

おかげ

+0

認証が必要なデータをコピーする前に、https://api.mongodb.com/python/current/examples/copydb.html#copying-a-databaseのドキュメントから '' 'command()' 'メソッドを参照してくださいdb.admin。 –

+1

@juliansalasこれは、OPが使用しようとしているものです。しかし、SCRAM認証では不可能です。実際、そこに書かれていることは、ページの一番下にあります。しかし、質問は基本的に「あなたができない」と答えています。その理由は、[現在シェルで使用されているメカニズム](https://github.com/mongodb/mongo/blob/940a6b62189bface6aec2af698e5e9c4149af258/src/mongo/scripting/mozjs/mongo.cpp#L531)は、ワイヤープロトコル、かなり低レベルのものをしています。理論的には、純粋なBSONで実装することができます。しかし、それは厳しいだろう。 –

+0

「データベースをコピーする必要がある」に関しては、通常のアプリケーションには本当に「そうしてはいけません」というような要求があることをお勧めします。 「管理ツールとスイス軍ナイフ」のようなものを作成しようとするのではなく、必要と思われる場合は、プロセスに欠陥があり、「データベースをコピーする必要性」を再検討する必要があります。汎用アプリケーションは、そのようなことを気にしてはいけません。それが「ツール用」の場合は、SASLハンドシェイクとraw BSONコマンドを実装するのが楽しいです。 –

答えて

0

はこれに回避策はありますか?コメントに述べたように

は、現在、その背後にある理由の詳細説明については(バージョン3.4)

PyMongoを介して他のサーバに認証された元のMongoDBサーバーをコピーするための回避策はありません、Blog: PyMongo's 'copy_database'

をお読みください

要件に応じて、mongoシェルメソッドdb.copyDatabase()を使用して、mongodから別のものにコピーすることができます。

関連する問題