10

MongoDB が垂直方向にスケーリングできることは知っています。ディスクが不足している場合はどうなりますか?

現在、EBS で EC2 を使用しています。ご存知のように、固定サイズの EBS を割り当てる必要があります。

MongoDB の成長が EBS サイズよりも大きい場合はどうなりますか? より大きな EBS を作成し、ファイルをコピーして貼り付ける必要がありますか?

それとも、さらに MongoDB インスタンスを開始して、それぞれが別の EBS ディスクに接続しますか? このような場合、別のデータベースの別のインスタンスに接続できます。

4

4 に答える 4

9

ディスクが不足している場合は、明らかにより大きなディスクを取得する必要があります。

データを移行するにはいくつかの方法がありますが、必要な稼働時間の種類によって異なります。もちろん、最初のステップでは、マシンをバンドルして新しいボリュームを作成します。

これらのヒントは、最も簡単なものから最も難しいものまであります。

数分間、データベースを完全にオフラインにすることはできますか?

その場合は、次のようにします (コピーによる移行)。

  1. サーバーに新しい EBS をマウントします。
  2. アプリが Mongo に接続しないようにします。
  3. mongod をシャットダウンし、すべてが書き込まれるのを待ちます (ログを確認します)。
  4. すべてのデータ ファイル (およびおそらくログ) を新しい EBS ボリュームにコピーします。
  5. コピーが行われている間に、新しいボリュームを指すように mongod 起動スクリプト (または構成ファイル) を更新します。
  6. mongod を起動して接続を確認する
  7. アプリを再起動します。

データベースを数分間だけオフラインにできますか?

その場合は、これを実行します (スレーブ化と切り替え):

  1. 新しいインスタンスを起動し、そのサーバーに新しい EBS をマウントします。
  2. 現在のデータベースを指す --slave として mongod をインストール/起動します。( --master として現在のものを再起動する必要がある場合があります)
  3. スレーブは新しい同期を行います。スレーブが最新の状態になったら、「切り替え」を行います (次のステップ)。
  4. システムからの書き込みをオフにします。
  5. 元の mongod プロセスをシャットダウンします。
  6. 「新しい」mongod をスレーブではなくマスターとして再起動します。
  7. 新しいマスターを指すシステム書き込みを再度アクティブにします。

最後の 3 つのステップを正しく行うと、数分または数秒で完了します。

ダウンタイムは許されませんか?

その場合は、これを実行します ( master-master ):

  1. 新しいインスタンスを起動し、そのサーバーに新しい EBS をマウントします。
  2. 現在のデータベースに対してマスターおよびスレーブとしてmongodをインストール/起動します。(現在のマスターとして再起動する必要があるかもしれません。最小限のダウンタイムですか?)
  3. 新しいコンピュータは、新しい同期を行う必要があります。
  4. 新しいコンピュータが最新の状態になったら、システムを新しいサーバーを指すように切り替えます。

この最後のバージョンが実際には最高のように思えますが、少し危険な場合があります (この記事の執筆時点)。その理由は、特に両方をアクティブにした状態で開始しない場合は特に、「マスター-マスター」レプリケーションで多くの問題が正直に発生したためです。

この方法を使用する予定がある場合は、最初に小規模な練習を行うことを強くお勧めします. ここで何かが爆発すると、Mongo はすべてのデータ ファイルを単純に消去する可能性があり、より多くのものを削除する効果があります。

これの良いバージョンを手に入れたら、コマンドを投稿してください。動作を確認したいと思います。

于 2010-05-24T22:00:17.107 に答える
3

EBSのEは、その場でサイズ変更するようなものを意味するエラスティックを表していませんか?

現在、MongoDB チームはシャーディングの仕上げに取り組んでいます。これにより、異なるサーバーでデータを個別に分割することで水平スケーリングが可能になります。1、2 か月待つと、問題なく動作します。開発者は、約束を守るのが得意です。

http://api.mongodb.org/wiki/current/Sharding%20Introduction.html http://api.mongodb.org/wiki/current/Sharding%20Limits.html

于 2010-05-10T22:04:47.200 に答える
1

追いつくまで、大きなディスクを小さなディスクからスレーブにすることができます

また

fsync+lock を実行して、ファイル システムのスナップショットを取得し、それをより大きなディスクにコピーします。

于 2010-05-11T23:20:20.370 に答える
0

さて、私は今MongoDBを使用しています。特にいくつかの単純な並べ替えで、それが生成したパフォーマンスにはかなり驚いています。

単純なWebアプリケーションロジックに適したツールだと思います。残りの懸念事項は、スケーリングとバックアップの方法です。私は探求し続けます。

私が持っている唯一の欠点は、内部に保存されているデータを明らかにするための優れたツールがなかったことです。たとえば、MYSQLからMongoにもログを記録したいと思います。ただし、ログを表示するのはかなり難しいです。以前は、MYSQLクエリを使用して必要なものを簡単にフェッチできました。

とにかく、それは良いツールであり、私はそれを使い続けます。

于 2010-06-25T04:23:55.050 に答える