4

サイズが 600GB のデータベースに対して 3 シャード クラスターで「mongodump」を実行し、3 つのシャードすべてに均等に分散されたチャンクを実行しました。

私のmongodumpコマンドは次のようなものでした:

mongodump --db mydb123 --authenticationDatabase admin --journal -u root -p password123 -o mydb123

チャンクは 3 つのシャードすべてにほぼ均等に分散されました。++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++

次に、ダンプ ファイルを新しいクラスターに移動し、新しい 2 シャード クラスターでこのダンプ ファイルの "mongorestore" を実行しました。現在、このデータベースのサイズはわずか 80 GB です。これは予想通りだと思います(コンパクトアクション)。しかし、ここに私の問題があります。新しい 2 シャード クラスターで、コマンド "sh.status()" を実行しても、このデータベースのチャンクは表示されません。私のmongorestoreコマンドは次のようでした:

mongorestore -u root -p newpass123 --authenticationDatabase admin --verbose /data/db/backups/new_dir/mydumpfile

++++++++++++++++++++++++++++++++++++++ このmongorestoreコマンドの実行でエラーはありませんでした。SH.STATUS() の実際の出力を以下に示します。

mongos> sh.status() --- シャーディング ステータス --- シャーディング バージョン: { "_id" : 1, "version" : 3, "minCompatibleVersion" : 3, "currentVersion" : 4, "clusterId" : ObjectId(" 52efaaa0a83668acafc3bcb0") } シャード: { "_id" : "sh1", "host" : "sh1/hfdvmprmongodb1:27000,hfdvmprmongodb2:27000" } { "_id" : "sh2", "host" : "sh2/hfdvmprmongodb1:27001" ,hfdvmprmongodb2:27001" } データベース: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "test", "partitioned" : false, "primary" : "sh1" } { "_id" : "価格"、"パーティション": true、"プライマリ": "sh2" } { "_id": "mokshapoc"、"パーティション": true、"プライマリ": "sh1" }

mongos> isBalancerRunning() Tue Feb 4 11:09:39.242 ReferenceError: isBalancerRunning が定義されていません mongos> sh.isBalancerRunning() true

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ これで、mongorestore が完全に完了し、80 GB データベース (mongodump の実行時には 600 GB データベースでした) のチャンクは表示されませんでした。

チャンクがまったく表示されないという事実に、私は非常に混乱しています。(サイズはもっと小さいと予想されていて、はるかに小さいです)

両方のクラスターのバージョンは同じです: MongoDB シェルのバージョン: 2.4.6

ありがとう、VR

4

1 に答える 1

3

mongodumpデータベース (または多数をダンプする場合はデータベース) 内のすべてのコレクションのデータとインデックスをダンプします。インデックス以外のメタデータはダンプしません。つまり、ダンプをシャード コレクションに復元すると、シャードされます (チャンクに分割され、バランスが取れます)。シャーディングされていないコレクションにデータを復元すると、シャーディングされていないままになります。

ダンプがシャード コレクションからのものかどうかは問題ではありません。その情報はクラスターにとどまり、データと一緒に移動しないためです。

于 2014-04-27T00:52:21.700 に答える