sql >> データベース >  >> NoSQL >> MongoDB

MongoDBをスケーリングする方法は?

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

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

    これらのヒントは、最も簡単なものから最も難しいものへと進みます。

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

    もしそうなら、これを行います(コピーによる移行):

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

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

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

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

    これらの最後の3つのステップは、数分または数秒で正しく実行されます。

    ダウンタイムを許容できませんか?

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

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

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

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

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



    1. MongoDbはクエリC#ドライバーと区別されます

    2. オブジェクトの配列をRedisに保存する方法は?

    3. マングースに生息した後に見つける

    4. MongoDB $ radionsToDegrees