web-dev-qa-db-ja.com

dbファイルを直接コピーして、mongoDBのコレクションを1つのデータベースから別のデータベースにコピーできますか?

CloneCollection http://docs.mongodb.org/manual/reference/command/cloneCollection/ を使用してみましたが、データのインデックス作成が開始されるため、大きなコレクションの場合、clonecollectionには多くの時間がかかります。

私のユースケース:

マシン1:膨大なデータを含む1つのコレクション(コレクションxとしましょう)マシン2:複数のコレクション。 (コレクションy、zとしましょう)

コレクションxをマシン1からマシン2にコピーして、マシン2がすべてのコレクション(x、y、z)を持つようにする必要があります。また、すべてのインデックスが損なわれていないことも必要です。

3
geek2coder

この方法でデータベース全体をコピーできます。ファイルを新しいインスタンスにコピーしますが、コレクションはコピーできません。名前空間の衝突を回避するために、データベースfooからデータベースファイルを単純にコピーし、ファイルシステムレベルでファイル名を(bar.0、bar.1などに)変更することもできません。名前は同じままにする必要があります。

データベース全体ではなく単一のコレクション(またはコレクションのサブセット)を移動する場合は、前述のコマンドを使用するか、または mongodump / mongorestore を使用する必要があります。移行を行います。ただし、コレクションごとの方法では、インデックスを最初から再構築する必要があります。データファイルをコピーできる(つまり、データベース全体を移動できる)場合にのみ、インデックスを配置できます。

他のコレクションが比較的小さい場合は、現在のデータベースから他のコレクションをコピーして、移動したい大きなコレクションだけを残すことができます。その後、データベース全体をコピーし、前述のようにデータベースファイルを移動できます。

1
Adam C