Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

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

このチュートリアルでは、mongodumpmongorestore を使用したバックアップの作成とデータの復元について説明します。

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

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

注意

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

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

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

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

MongoDBツールを使用してデータをバックアップする場合は、次のガイドラインに従います。

Tip

詳細については、自己管理型配置のバックアップ メソッド を参照してください。MongoDB Database Tools の参照については、次を参照してください。

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

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

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

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

mongodump ユーティリティは実行中の mongod に接続してデータをバックアップします。サーバー、データベース、またはコレクション の全体をバックアップすることも、クエリを使用してコレクションの一部をバックアップすることもできます。mongodump は、出力から localデータベースの内容を除外します。

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

mongodump

ホストとポートを指定するには、次のいずれかを使用します。

  • SRV --uriまたは 標準接続文字列を使用して string を指定します。

    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>

別の出力ディレクトリを指定するには、 --out(または -o)を使用します。

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

ダンプを特定のデータベースまたはコレクションに制限するには、--db--collection を使用します。

mongodump --collection=myCollection --db=test

これにより、現在のディレクトリの dump/ サブディレクトリにある testデータベースから myCollection のダンプが作成されます。

mongodump は出力フォルダー内の既存のファイルを上書きします(デフォルト: dump/)。複数回実行中前に、出力フォルダーをバックアップするか、名前を変更してください。

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

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

リモートインスタンスに接続するには、--host--port を使用します。

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

認証するには、任意の mongodump コマンドでユーザー名とパスワードを指定します。

--oplog オプションはバックアップ中にoplog のエントリを収集するため、バックアップが完了した時点でデータベースをその状態に復元できます。

--oplog を使用すると、mongodump はソースデータベースのすべてのデータと、バックアップの最初から最後までのすべてのoplogエントリをコピーします。これを mongorestore --oplogReplay と組み合わせて使用すると、mongodump が完了した時点を正確に反映したバックアップが復元されます。

mongorestore ユーティリティは、実行中のmongod に直接接続して、mongodump によって作成されたバイナリバックアップを復元します。デフォルトでは 、mongorestoredump/ディレクトリ内のデータベースバックアップを検索し、バックアップ全体またはサブセットを復元できます。

注意

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

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

mongorestore をアクティブな mongod に接続するには:

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

例、ディレクトリから復元するには、次のようにします。

mongorestore /opt/backup/mongodump-1

これにより、localhost:27017 上の mongodインスタンスにバックアップが復元されます。

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

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

system.profile

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

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

--oplogReplay

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

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

デフォルトでは 、mongorestorelocalhost:27017 に接続されます。別のホストまたはポートに復元するには、--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

mongodump が の実行中中に発生する書込みをキャプチャするには、--oplog を使用します。mongodump は実行中に書き込みごとにoplogエントリを含む oplog.bsonファイルを作成します。これらの操作は復元時に --oplogReplay で適用します。

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

mongorestore --oplogReplayoplog.bson からすべてのデータを復元しますが、任意の点への復元はサポートされていません。これを使用して、復元されたデータが mongodump --oplog の実行中に発生した書込みを反映していることを確認します。

注意

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

--objcheck 挿入中にドキュメントの整合性を検証するにはを使用し、--drop 復元前に各コレクションを削除するにはを使用します。

戻る

ファイルシステムのスナップショットを使用したバックアップと復元

項目一覧