2011-11-08 11 views
3

私は新しい製品のためにしばらくの間、私たちのdevサーバで遊んでいました、そして今、それは生きていて、既存のデータを単一のマシン(mongod、ローカル)から私たちの6サーバシャードセットアップ2シャードごとに3つのレプリカセット) - リモートシャードにDBをクローンする方法はありますか?MongoDB:シングルサーバのクローン作成dev。データベースをプロダクションシャードクラスタ

(シャードキーの例と、最悪の場合、簡単なダンプ&挿入は非常にいいですね!)

感謝!

答えて

1

あなたはシャーディングenvironementにあなたのdevのサーバーを追加する必要があります

  • が--shardオプションを指定してmongosに
  • をお使いのdevのサーバーを再起動しますタイプをdb.runCommand({addshard: "serverhostname [:port]"、名前: "migration"});
  • シャード "移行"のremoveにシャードコマンドを使用してください。
  • それは(あなたが「正常に完了しシャードを削除」取得)に行われた場合、あなたはあなたのdevのサーバーを停止することができますし、すべてのデータが

新しいクラスタにDEVから移行されたあなたはシャードする必要はありません移行のためのデータベースが必要ですが、シャーディングの恩恵を受けるには、それを実行する必要があります。

このソリューションの利点は、あなたが取るべき最小アクションを持っている(すべてが自動的に行われます)と(操作であるが、より遅いあなたが置くより負荷、)ダウンタイムがないことである しかし、これはさslow解決策(マニュアルコピーよりも遅い)。 RAWファイルに比べ

もう一つの利点は、コピー:転送が(〜デフラグ)常に良い:-)

+0

大丈夫ですので、addshardはdevサーバーです。しかし、devサーバー上の特定のDBが他のシャードですか?なぜなら、シャーディングが必要だと思っている限り、それはすべてのシャードサーバー上にあることを意味するからです。少量のデータが1つのシャード== 1つのボックス内に残っているとします...この場合、シャードdevのサーバー今...または私はここで間違って考えていますか? – Tobias

+0

@Tobias:私が言ったように、 "dev"をクラスタに追加して、コマンドremoveShardを使用して、すべてのデータをdevから他のクラスタに移行させます。コマンドremoveeshardが「シャードを完全に削除しました」と返すと、すべてのデータが移行されました – kamaradclimber

+0

ああ、残念です。どうもありがとうございます! – Tobias

0
  • devserverをマスターとしてレプリカセットに追加し、他の3つのサーバーをスレーブとして追加します。 他のサーバーによってデータがコピーされたら、dev-serverを削除します。

    http://www.mongodb.org/display/DOCS/Replica+Set+Commands

  • あなたがデータベースをダンプするためにmongodumpを使用して、あなたのレプリカセットの各

    man mongodumpのマスターにmongorestoreとDB-ダンプをロードすることができ、man mongorestore

参照:

http://www.mongodb.org/display/DOCS/Replica+Set+Internals

http://www.mongodb.org/display/DOCS/Sharding+Introduction

http://www.mongodb.org/display/DOCS/Master+Slave

+0

あるデータは、ソリューションの両方がシャーディングでもコンパクトに働くのでしょうか?私はレプリカセットを持っているのではなく、その2つのレプリカが両方ともシャードにセットされています。 – Tobias

+0

おそらく、データをマスターにロードして、そのマスターにシャードを追加するのが最も簡単です。 – Tilo

関連する問題