3

MongoDB について学べるように、空き時間に小さな Web アプリケーションの開発を開始することにしました。Amazon AWS マイクロ インスタンスを取得し、そこで開発とアルファ段階を開始する予定でした。しかし、私はここスタックオーバーフローで私に関係する質問に出くわしました:

ただし、耐久性のために、少なくとも 2 つの mongodb サーバー インスタンスをマスター/スレーブとして使用する必要があります。そうしないと、データの最後の分が失われる可能性があります。

本当?ボックスにすべて (Apache、PHP、MongoDB) がインストールされているだけで、データが正しく保存されていることに頼ることはできませんか? 少なくとも、単一のボックスにインストールされている場合でも確実に動作するようにするには、MongoDB に構成オプションが必要です。そうではありませんか?

4

2 に答える 2

14

マスター/スレーブのセットアップに関する情報は古くなっています。ジャーナリングを使用して単一サーバーの MongoDB を実行することは耐久性のあるデータ ストアであるため、レプリカ セットが必要ない場合や開発段階にある場合は、ジャーナリングが適切に機能します。

ただし、本番環境の場合は、レプリカ セットを使用することをお勧めします。最小限のセットアップでは、理想的には mongod の 3 つ (またはそれ以上) のインスタンス、読み取りと書き込みを受け取る「プライマリ」、プライマリからの書き込みがレプリケートされる「セカンダリ」、および単一のアービターを実行します。プライマリが利用できなくなった場合に投票を行うことを可能にする mongod のインスタンス。この「自動フェイルオーバー」とは、ある時点でプライマリがアプリケーションから書き込みを受信できない場合、セカンダリがプライマリになり、アプリからのデータの受信を引き継ぐことを意味します。

ジャーナリングの詳細についてはこちら、レプリケーションの詳細についてはこちらをご覧ください。MongoDB とは何かをよりよく理解するには、ドキュメント全般に精通している必要があります。

于 2012-05-03T16:13:03.580 に答える
0

レプリケーションは冗長性を提供し、データの可用性を高めます。異なるデータベース サーバー上にデータの複数のコピーがあるため、レプリケーションによってデータベースが 1 台のサーバーの損失から保護されます。レプリケーションにより、ハードウェア障害やサービスの中断から回復することもできます。データのコピーを追加することで、1 つをディザスター リカバリー、レポート、またはバックアップ専用にすることができます。

場合によっては、レプリケーションを使用して読み取り容量を増やすことができます。クライアントには、読み取り操作と書き込み操作を異なるサーバーに送信する機能があります。分散アプリケーションのデータの局所性と可用性を高めるために、異なるデータ センターにコピーを保持することもできます。MongoDB でのレプリケーション

レプリカ セットは、同じデータ セットをホストする mongod インスタンスのグループです。1 つの mongod (プライマリ) がすべての書き込み操作を受け取ります。他のすべてのインスタンス (セカンダリ) は、プライマリからの操作を適用して、同じデータ セットを持つようにします。

プライマリは、クライアントからのすべての書き込み操作を受け入れます。レプリカ セットは、プライマリを 1 つだけ持つことができます。書き込み操作を受け入れることができるメンバーは 1 つだけであるため、レプリカ セットは厳密な整合性を提供します。レプリケーションをサポートするために、プライマリはデータ セットに対するすべての変更を oplog に記録します。詳細については、プライマリを参照してください。

于 2014-06-20T06:03:42.330 に答える