0

Mongo では、データベースを 1 つのサーバーにのみ (シャーディングなしで) 配置することは可能ですか?

  • Mongo を使用してアプリケーション ログを保存したいのですが、残りのデータとは別のマシンに保存したいと考えています。

  • このように、あまりにも多くのログ メッセージを送信し始めると、ログ データベースを備えたマシンだけが遅くなります。

  • 理想的には、アプリケーションに対して透過的であり、どのマシンがどのデータベースを持っているかを MongoS プロセスで管理する必要があります。

注: この時点ではパフォーマンスに問題がないため、データベース全体をシャーディングするつもりはありません。ロギング コレクションを含むデータベースのみを分離したいと考えています。

4

2 に答える 2

1

はい、アプリケーション サーバーで mongos を実行し、別のマシンで mongod プロセスを実行してログを保存できます。ただし、mongos を使用する場合は、シャーディングを使用する必要がありますが、単一のシャードを使用できます。--shardsvr として mongod プロセスを実行し、この 1 つのシャードを mongos プロセスに追加する必要があります。また、少なくとも 1 つの構成サーバーを実行する必要があります。このセットアップでは、データの冗長性の問題があります。そのため、複数の mongod プロセスを実行したい場合があります。単一のシャード内でレプリカ セットを使用し、それらの mongod プロセスを異なるマシンで実行します。また、それを行う場合は、3 つの構成サーバーを実行することもできます (1 つまたは 3 つのシャーディング セットアップを選択できます) - レプリカ セットの 1 つのノードで 2 つ、もう一方のノードで 1 つ。また、ロギングのために、人々はキャップ付きコレクションをよく使用します。

于 2012-05-15T07:28:12.917 に答える
1

はい、2 つの異なるサーバーで 2 つの mongoD を使用できます。1 つは実際のデータベースで、もう 1 つはログ データベースです。

秘訣は、各データベースをシャードすることですが、コレクションはシャードしません。

次に、movePrimary コマンドを使用して、分割されていないコレクションを実際に保存する場所を選択できます。

(参照: http://www.mongodb.org/display/DOCS/movePrimary+Command )

あなたの場合、次のようにします。

db.adminCommand({movePrimary:applicationdb, to:application_shard})
db.adminCommand({movePrimary:loggingdb, to:logging_shard})

ただし、applicationdb を分割することを決定すると、mongo は自動的にデータを loggingdb_shard にも伝播し始めることに注意してください。

于 2012-05-15T12:01:14.273 に答える