ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

MongoDB ツールを使用した自己管理型配置のバックアップと復元

このチュートリアルでは、MongoDB に付属するコマンドライン ユーティリティ、mongorestoremongodump を使用してバックアップを作成し、データを復元するためのプロセスを説明します。

セルフホスト型配置のバックアップを管理対象のMongoDB Atlas 配置に復元するには、「 mongorestore でのシード処理 」を参照してください。

完全管理型バックアップ方法として MongoDB Atlas 内のクラウドバックアップを使用すると、クラスターのクラウド サービス プロバイダーのネイティブなスナップショット機能を使用して、ローカライズされたバックアップ ストレージが提供されます。

mongorestoremongodump ユーティリティは BSON データ ダンプと連携し、小規模な配置のバックアップを作成するのに便利です。回復力があり中断のないバックアップの作成には、MongoDB Atlas の クラウド バックアップ を使用した ファイル システム スナップショット またはブロック レベルのディスク スナップショットを使用します。

注意

MongoDB Atlas を使用したシャーディングされたクラスターのバックアップ

mongodumpmongorestoreをシャーディングされたクラスターのバックアップ戦略として使用するには、「データベース ダンプを使用した自己管理型シャーディングされたクラスターのバックアップ 」を参照してください。

シャーディングされたクラスターではバックアップと復元に次のいずれかの連携的なプロセスも利用できます。これによりシャード間のトランザクションはアトミック性が継続的に保証されます。

mongodumpmongorestore は実行中の mongod インスタンスとやり取りすることで動作するため、実行中のデータベースのパフォーマンスに影響を及ぼす可能性があります。これらのツールは実行中のデータベース インスタンスにトラフィックを生成するだけでなく、メモリを介してすべてのデータを読み取るようにデータベースに強制します。MongoDB は使用頻度の低いデータを読み取る際に、アクセス頻度の高いデータを排除するため、データベースの通常のワークロードのパフォーマンスを低下させる恐れがあります。

MongoDB のツールを使用してデータをバックアップする場合は、次のガイドラインを考慮してください。

以下も参照してください。

MongoDB インスタンスのバックアップについては、「 自己管理型配置のバックアップ メソッド 」と「 MongoDB Atlas クラウドバックアップ」を参照してください。 MongoDB Database Tools の次の参照ドキュメントも考慮に入れましょう。

mongorestoremongodump は複数の BSON ファイルの代わりに、単一ファイルのアーカイブ ファイルにデータを出力できます。アーカイブ ファイルは、非連続的なファイル書込みをサポートする特殊な形式です。アーカイブ ファイルを使用すると、MongoDB からの同時バックアップと MongoDB への復元が可能になるほか、バックアップと復元操作の実行中にディスク I/O を最適化します。

アーカイブ ファイルを標準出力(stdout)に出力することもできます。標準出力への書き込みは、ネットワーク越しのデータ移行、ディスク I/O のフットプリントの削減、MongoDB ツールおよびストレージエンジンの両方での同時実行性の向上を可能にします。

アーカイブ ファイルの詳細については、 --archiveオプションを参照してください。

バックアップはデータベースの現在の状態のスナップショットを提供します。バックアップから復元する場合、復元されたデータベースにはバックアップ作成後に行われた変更は含まれないため、データが失われる可能性があります。

注意

MongoDB Atlas を使用したシャーディングされたクラスターのバックアップ

mongodumpmongorestoreをシャーディングされたクラスターのバックアップ戦略として使用するには、「データベース ダンプを使用した自己管理型シャーディングされたクラスターのバックアップ 」を参照してください。

シャーディングされたクラスターではバックアップと復元に次のいずれかの連携的なプロセスも利用できます。これによりシャード間のトランザクションはアトミック性が継続的に保証されます。

mongodumplocal データベースの内容を出力から除外します。

アクセス制御 mongodumpが有効になっている MongoDBfind 配置に対して を実行するには、バックアップするデータベースごとに アクションを許可する特権が必要です。組み込みのbackupロールは、任意のデータベースのバックアップを実行するために必要な特権を提供します。

backup ロールには、データベース プロファイリングの実行中に作成される system.profile コレクションをバックアップする追加の権限があります。

mongodumpユーティリティは、実行中のmongodに接続してデータをバックアップします。

このユーティリティを使用すると、サーバー全体、データベース、またはコレクションのバックアップを作成したり、クエリを使用してコレクションの一部だけをバックアップしたりできます。

引数なしで mongodumpを実行すると、コマンドはローカルシステム上のポート 27017 にある MongoDB インスタンス(localhost など)に接続し、現在のディレクトリに dump/ という名前のデータベース バックアップを作成します。

同じマシンのデフォルト ポート27017 で実行中の mongod インスタンスからデータをバックアップするには、次のコマンドを使用します。

mongodump

MongoDB インスタンスのホストとポートは、次のいずれかの方法で指定できます。

  • SRV または標準接続文字列のいずれかを使用して、--uri 文字列にホスト名とポートを指定します。

    mongodump --uri="mongodb+srv://username:password@cluster0.example.mongodb.net" <additional_options>
  • --host 文字列にホスト名とポートを指定します。

    mongodump --host="mongodb0.example.com:27017" <additional_options>
  • --host--port にホスト名とポートを指定します。

    mongodump --host="mongodb0.example.com" --port=27017 <additional_options>

mongodumpmongodb.example.net ホストのポート 27017 で待機する mongod 経由でアクセス可能なデータのコピーを保持する BSON ファイルを書き込みます。詳細については、「非ローカルの mongod インスタンスからのバックアップの作成」を参照してください。

別の出力ディレクトリを指定するには、 --out or -oオプションを使用します。

mongodump --out=/opt/backup/mongodump-1

データベース ダンプに含まれるデータ量を制限するには、--db--collectionmongodump のオプションとして指定できます。以下に例を挙げます。

mongodump --collection=myCollection --db=test

この操作は、現在の作業ディレクトリの dump/ サブディレクトリにあるデータベース test から myCollection という名前のコレクションのダンプを作成します。

mongodump はバックアップ データ フォルダーに出力ファイルがある場合は、そのファイルを上書きします。mongodump コマンドを複数回実行する前に、出力フォルダー(デフォルトは dump/ フォルダー)のファイルが不要であることを確認するか、フォルダーまたはファイルの名前を変更してください。

と オプションは--oplog mongodumpoplog エントリを収集し、本番環境のデータベースでバックアップを実行できるようにします。後でバックアップから データベースを復元すると、 データベースはバックアップ プロセスが完了したときと同じになります。

--oplog を使用する場合、mongodump はソース データベースのすべてのデータ、およびバックアップ手順の最初から最後までのすべての oplog エントリをコピーします。この操作を mongorestore --oplogReplay と組み合わせると、mongodump がダンプ ファイルの作成を完了した時点に対応する特定の時点を反映したバックアップを復元できます。

mongodump--host および --port オプションを使用すると、リモート ホストに接続してバックアップを行うことができます。次の例で考えてみましょう。

mongodump \
--host=mongodb1.example.net \
--port=3017 \
--username=user \
--password="pass" \
--out=/opt/backup/mongodump-1

上記のように、任意の mongodump コマンドで、ユーザー名とパスワードの認証情報を指定して、データベース認証を設定できます。

注意

MongoDB Atlas を使用したシャーディングされたクラスターのバックアップ

mongodumpmongorestoreをシャーディングされたクラスターのバックアップ戦略として使用するには、「データベース ダンプを使用した自己管理型シャーディングされたクラスターのバックアップ 」を参照してください。

シャーディングされたクラスターではバックアップと復元に次のいずれかの連携的なプロセスも利用できます。これによりシャード間のトランザクションはアトミック性が継続的に保証されます。

アクセス制御 が有効になっている MongoDB 配置にデータを復元する場合、データに コレクション データを含まずにrestoresystem.profile オプションなしで実行する 場合mongorestore--oplogReplay ロールはバックアップからデータを復元するために必要な特権を提供します。 。

バックアップ データに system.profile コレクション データが含まれている場合や --oplogReplay を使用して実行する場合は、追加の権限が必要です。

system.profile

バックアップ データにsystem.profileコレクション データが含まれており、ターゲット データベースにsystem.profileコレクションが含まれていない場合、プログラムでは実際にsystem.profileドキュメントを復元していないにもかかわらず、 mongorestoreはコレクションの作成を試みます。 そのため、ユーザーはデータベースの コレクションに対してcreateCollectionconvertToCapped system.profile} アクションと アクションを実行するには追加の特権が必要です。

組み込みロール dbAdmindbAdminAnyDatabase には、いずれも追加の権限が付属します。

--oplogReplay

--oplogReplay を使用して実行するには、anyResource に対して anyAction を持つユーザー定義ロールを作成します。

--oplogReplaymongorestoreを実行する必要があるユーザーにのみ付与します

mongorestore ユーティリティは、mongodump によって作成されたバイナリ バックアップを復元します。デフォルトでは、mongorestoredump/ ディレクトリ内のデータベース バックアップを検索します。

mongorestore ユーティリティは、実行中の mongod に直接接続してデータを復元します。

mongorestoreはデータベースのバックアップ全体またはバックアップのサブセットを復元できます。

注意

すべての MongoDB コレクションはデフォルトで UUID を持ちます。MongoDB がコレクションを復元する場合、復元されたコレクションは元の UUID を保持します。UUID がないコレクションを復元する場合、MongoDB は復元されたコレクションのために UUID を生成します。

コレクション UUID について詳しくは、「コレクション」を参照してください。

mongorestoreを使用してアクティブなmongodに接続するには、次のプロトタイプ形式のコマンドを使用します。

mongorestore --uri <connection string> <path to the backup>

次の例で考えてみます。

mongorestore /opt/backup/mongodump-1

ここで、 mongorestoreは、 /opt/backup/mongodump-1ディレクトリ内のデータベースのバックアップを、デフォルト ポート27017のローカルホスト インターフェースで実行されているmongodインスタンスにインポートします。

mongodumpの実行中に発生する可能性のある書込みをキャプチャするには、 mongodump --oplogを使用します。 mongodumpは、実行中に発生した書き込みごとにoplogエントリを含むoplog.bsonファイルを作成します。 mongorestore --oplogReplayを使用して oplog 操作を適用できます。

例については、「 mongodump の例 」と「 mongorestoreの例 」を参照してください

oplog.bsonファイルのすべてのデータが復元されます。

mongorestore --oplogReplay ではデータを任意の時点に復元できません。mongorestore --oplogReplay を使用して、復元されたデータが mongodump --oplog の実行中に発生した書込みを伴う最新のものになるようにします。

注意

--oplogはレプリカセットと併用するためのものです。 シャーディングされたクラスター(シャーディングされた環境の構成要素であるレプリカセットを含む)については、「データベース ダンプを使用して自己管理型シャーディングされたクラスターをバックアップする 」を参照してください。

また、データベースに挿入するときにオブジェクトの整合性を確認するには、 mongorestore --objcheckオプションを使用するか、バックアップから復元する前にデータベースから各コレクションを削除するためにmongorestore --dropオプションを使用することも検討してください。

デフォルトでは、 mongorestoreは localhost インターフェースとデフォルト ポート( 27017 )で実行されている MongoDB インスタンスに接続します。 別のホストまたはポートに復元する場合は、 --host--portオプションを使用します。

次の例では、 --host--portオプションを指定しています。

mongorestore --host=mongodb1.example.net --port=3017

アクセス制御を適用する インスタンスに復元する場合は、 --username--authenticationDatabaseも含めます。 --passwordオプションを省略すると、 mongorestoreでパスワードの入力を求められます。

mongorestore \
--host=mongodb1.example.net \
--port=3017 \
--username=user \
--authenticationDatabase=admin \
/opt/backup/mongodump-1