AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB ツールを使用したバックアップと復元

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

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

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

注意

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

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

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

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

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

  • バックアップの内容とバックアップ時間を識別するためにファイルにラベルを付けます。

  • mongodumpやmongorestore によるパフォーマンスへの影響が受け入れられない場合は、 MongoDB Atlasの ファイルシステム スナップショット や クラウドバックアップ などの代替手段を使用します。

  • mongodumpがレプリカセットの一貫したバックアップを取得できるようにするには、 オプションを使用してバックアップ操作中に受信した書込みを取得する か、バックアップ中はレプリカセットへの書込みをすべて停止する--oplog 必要があります。

    シャーディングされたクラスターのレプリカセットについては、「データベースダンプを使用した自己管理型シャードクラスターのバックアップ 」を参照してください。

  • バックアップをテスト用配置に復元して検証します。

  • シャーディングされたクラスターでバックアップの不整合を軽減するには、バックアップ中にバランサー、すべての書き込み (write) 操作、およびすべてのスキーマ変換を停止します。

Tip

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

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

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

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

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

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

引数なしで、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アクセス制御が有効になっているMongoDBデプロイに対して を実行するには、バックアップするデータベースごとにfind アクションを許可する特権が必要です。組み込みの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 によって作成されたバイナリバックアップを復元します。デフォルトでは 、mongodump mongodmongorestoreはdump/ ディレクトリ内のデータベースバックアップを検索し、バックアップ全体またはサブセットを復元できます。

注意

すべての 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 コレクションが含まれていない場合、mongorestore は、プログラムが実際にsystem.profile ドキュメントを復元していないにもかかわらずコレクションの作成を試みます。ユーザーは、データベースのcreateCollection convertToCappedsystem.profileコレクションに対して アクションと アクションを実行するために追加の特権を必要とします。

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

--oplogReplay

デフォルトでは 、mongorestore は localhost: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 --oplogReplay は oplog.bson からすべてのデータを復元しますが、任意の点への復元はサポートされていません。これを使用して、復元されたデータが mongodump --oplog の実行中に発生した書込みを反映していることを確認します。

注意

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

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