ディスクが不足している場合は、明らかにより大きなディスクを取得する必要があります。
データを移行するにはいくつかの方法がありますが、必要な稼働時間の種類によって異なります。もちろん、最初のステップでは、マシンをバンドルして新しいボリュームを作成します。
これらのヒントは、最も簡単なものから最も難しいものまであります。
数分間、データベースを完全にオフラインにすることはできますか?
その場合は、次のようにします (コピーによる移行)。
- サーバーに新しい EBS をマウントします。
- アプリが Mongo に接続しないようにします。
- mongod をシャットダウンし、すべてが書き込まれるのを待ちます (ログを確認します)。
- すべてのデータ ファイル (およびおそらくログ) を新しい EBS ボリュームにコピーします。
- コピーが行われている間に、新しいボリュームを指すように mongod 起動スクリプト (または構成ファイル) を更新します。
- mongod を起動して接続を確認する
- アプリを再起動します。
データベースを数分間だけオフラインにできますか?
その場合は、これを実行します (スレーブ化と切り替え):
- 新しいインスタンスを起動し、そのサーバーに新しい EBS をマウントします。
- 現在のデータベースを指す --slave として mongod をインストール/起動します。( --master として現在のものを再起動する必要がある場合があります)
- スレーブは新しい同期を行います。スレーブが最新の状態になったら、「切り替え」を行います (次のステップ)。
- システムからの書き込みをオフにします。
- 元の mongod プロセスをシャットダウンします。
- 「新しい」mongod をスレーブではなくマスターとして再起動します。
- 新しいマスターを指すシステム書き込みを再度アクティブにします。
最後の 3 つのステップを正しく行うと、数分または数秒で完了します。
ダウンタイムは許されませんか?
その場合は、これを実行します ( master-master ):
- 新しいインスタンスを起動し、そのサーバーに新しい EBS をマウントします。
- 現在のデータベースに対してマスターおよびスレーブとしてmongodをインストール/起動します。(現在のマスターとして再起動する必要があるかもしれません。最小限のダウンタイムですか?)
- 新しいコンピュータは、新しい同期を行う必要があります。
- 新しいコンピュータが最新の状態になったら、システムを新しいサーバーを指すように切り替えます。
この最後のバージョンが実際には最高のように思えますが、少し危険な場合があります (この記事の執筆時点)。その理由は、特に両方をアクティブにした状態で開始しない場合は特に、「マスター-マスター」レプリケーションで多くの問題が正直に発生したためです。
この方法を使用する予定がある場合は、最初に小規模な練習を行うことを強くお勧めします. ここで何かが爆発すると、Mongo はすべてのデータ ファイルを単純に消去する可能性があり、より多くのものを削除する効果があります。
これの良いバージョンを手に入れたら、コマンドを投稿してください。動作を確認したいと思います。