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

MongoDBバックアップオプションを理解する

    バックアップと復元のワークフローは、本番環境のMongoDBクラスターにとって非常に重要です。バックアップと復元の実際の機能とは別に、バックアップの可用性、セキュリティ、リカバリ時間、リカバリの粒度など、他の非機能も考慮する必要があります。大まかに言えば、MongoDBサーバーをバックアップするための3つのオプションがあります。

    1. Mongodump / Mongorestore
    2. MongoDB Cloud Manager
    3. ディスクスナップショット

    上記の3つの手法には、それぞれ長所と短所があります。詳細については、以下をお読みください。

    1。 Mongodump / Mongorestore

    Mongodumpは、ほとんどのMongoDB開発者にとって「はじめに」のバックアップツールです。これはおそらく、ほとんどの開発者がMongoDBデータベースのバックアップを開始する方法です。 Mongodumpツールは非常に使いやすく、データベース内のすべてのデータをバイナリ形式(BSON)でダンプし、選択した場所に保存できます。

    長所:

    1. 使いやすい。
    2. バックアップを保存する場所の柔軟性 -ダンプが完了したら、NFS共有、AWSS3などの任意の場所に移動できます。

    短所:

    1. 完全バックアップ、 毎回–これは完全バックアップであり、以前のバックアップとの違いではありません。そのため、データベースが大きくなると、バックアップの完了に数時間かかる可能性があり、保存するのが面倒になります。
    2. 特定の時点ではありません – mongodumpによって作成されたバックアップは、デフォルトではポイントインタイムスナップショットではありません。そのため、バックアップ中にデータが変更されると、アプリケーションの観点から一貫性のないmongodumpが発生する可能性があります。これは、mongodumpプロセスの最後にスナップショットを取得する「–oplog」オプションを使用して修正できます。ただし、このオプションはスタンドアロンデータベースでは使用できません

    2。 MongoDBクラウドマネージャー

    Cloud Managerは、MongoDBクラスターのバックアップを支援するためにMongoDBチームが提供するクラウドサービスです。

    長所:

    1. 使いやすい – MongoDB Cloud Managerエージェントをインストールして、クラスターのバックアップ/復元を管理します。 mongodumpを使用するよりも少し複雑ですが、それほど複雑ではありません。
    2. 継続的なバックアップ – Cloud Managerは、oplogを継続的に照会およびバックアップします。したがって、これにより、バックアップが作成された特定の時間ではなく、任意の時点に復元できるため、データ損失への露出を最小限に抑えることができます。

    短所:

    1. データ管理 –バックアップデータは、管理外のMongoDBデータセンターに保存されます。世界の一部の地域(ヨーロッパなど)では、セキュリティニーズによっては、これが大きな問題になる可能性があります。
    2. 追加費用 –データのサイズとoplogの変更量によって支払います。データベースが大きい場合や書き込みの数が多い場合は、このコストが加算される可能性があります。
    3. 遅い復元 – MongoDB Cloud Managerからデータを復元するには、CloudManagerデータセンターからデータを物理的にダウンロードする必要があります。大規模なデータベースがある場合、これは非常に時間のかかる操作になる可能性があります。たとえば、データが1 TBの場合、データのダウンロードと使用には数時間かかる場合があります。

    3。ディスクスナップショット

    スナップショットは、クラウドレベル(AWS EBSディスクスナップショットなど)またはOSレベル(LVMスナップショット)のいずれかになります。 LVMスナップショットは便利ですが、マシンの外部に簡単に移植することはできません。したがって、このディスカッションの残りの部分では、AWSEBSスナップショットなどのクラウドディスクスナップショットに焦点を当てます。

    長所:

    1. シンプルで使いやすい –EBSディスクのスナップショットをトリガーするのは比較的簡単です。
    2. 移植性 –バックアップの可用性を高める必要がある場合は、スナップショットを他のデータセンターに移動できます。
    3. 差分スナップショット –スナップショットは差分スナップショットであるため、以前のスナップショットからの変更のみが保存されます。これにより、バックアップに必要なストレージの量が削減されます。
    4. データコピーなし –データの復元に必要なデータコピーはありません。例えば。 1TBのスナップショットを復元する場合は、スナップショットから新しいボリュームを作成するだけで、実際のデータコピーは作成されません。これは、大量のデータを処理する場合の*大したこと*です。
    5. バックアップ制御 –バックアップはプライマリデータと同じデータセンターに残り、プライマリデータサーバーと同じ認証メカニズムによって保護されます。

    短所:

    1. 継続的なバックアップではありません –これはポイントインタイムバックアップであり、バックアップポイントにのみリカバリできます。
    2. 物理的な機械 -オンプレミスの物理マシンは、この手法を使用してバックアップすることはできません。

    結局のところ、データが小さい場合は、3つのオプションすべてがうまく機能します。大量のデータを取得し始めると、時間をかけてシナリオに最適なオプションを選択する必要があります。


    1. 日時のフィールドごとに最新のMongoDBレコードを取得する

    2. 配列フィールドにMongoDBの一意の値または別の配列が含まれているかどうかを確認するにはどうすればよいですか?

    3. Node.jsを使用してMongoDBに接続するための最良の方法

    4. sidekiqワーカーがperform_asyncで実行されているかどうかを確認する方法を説明します