0

短期間に大量のデータを生成し、単一の MongoDB データベースに格納するソフトウェアがあります。書き込みパフォーマンスを向上させるために、受信データを処理するシャード クラスターの設定を検討しています。これはすべて amazon ec2 インスタンスで行われているため、コストを節約するためにプロセスが完了したら、シャード クラスターから単一の永続サーバーにデータを統合することをお勧めします。明らかに、完了時にクラスターからデータを移植する python スクリプトを作成できますが、よりクリーンで自動化された方法があることを願っています。データが書き込まれると、アクセスはすべて読み取り専用になり、単一のサーバーでワークロードを十分に処理できます。レプリカ セットとシャーディングを組み合わせたソリューションを探していましたが、それが機能する方法ではないようです。

4

1 に答える 1

1

ダウンタイムなしで MongoDB を移行する 1 つの方法は、古いサーバーと新しいサーバーで構成されるレプリカ セットを作成し、新しいサーバーが同期したらすぐに古いサーバーを削除することです。しかし、古いデータベースがシャード化されていて、新しいデータベースがそうでない場合、それは機能しません。シャードはレプリカ セットから構築されるためであり、その逆ではありません。つまり、昔ながらの方法でデータベースをコピーする必要があります。これを行うには、次の 2 つの方法があります。

  1. ネットワーク方式: 宛先でコマンドdb.copyDatabase(<remote_db_name>, <local_db_name>, <remote_host>, <remote_username>, <remote_password>) を使用して、ネットワーク経由でソースからデータベースをコピーします。
  2. ファイル方式:mongodumpソースで a を実行して、データをファイルにエクスポートします。次にmongorestore、新しいサーバーで a を実行してインポートします。
于 2013-10-22T15:01:46.320 に答える