Mongorestoreの例:MongoDBバックアップの復元

Mongorestoreの例:MongoDBバックアップの復元

  • オーケストレーション
6分で読めます 更新日 Feb 12, 2025

ポイント: mongorestoreは、mongodumpで作成されたMongoDBバックアップを復元するために設計されたユーティリティで、既存のデータベースへのデータ復元または新しいデータベースの作成を可能にします。複数のMongoDBバージョンをサポートし、標準入力およびアーカイブファイルからの復元などの機能を提供します。

  • mongorestoreは、復元中に既存のドキュメントを上書きしません。
  • 効果的な復元のために、mongodumpとmongorestoreの互換性のあるバージョンを使用することが不可欠です。

バックアップデータをバックアップおよび復元プロセス中にバックアップした後、効率的で信頼性の高いデータ復元方法を持っていることが重要です。違いを考慮してください:

  • 適切に構成された復元方法は、ユーザーがデータを以前の状態に成功裏に復元できることを意味します。
  • 不適切な復元方法は、ユーザーがバックアップデータにアクセスしたり復元したりすることを妨げることによって、全体のバックアッププロセスを無効にします。

mongorestoreコマンドはmongodumpコマンドの姉妹コマンドです。mongodumpコマンドによって作成されたダンプ(バックアップ)をMongoDBインスタンスに復元するためにmongorestoreコマンドを使用できます。この記事では、mongorestoreコマンドを効果的に使用してMongoDBバックアップを復元する方法を学びます。

mongorestoreとは何ですか?

mongorestoreはバックアップを復元するために使用されるシンプルなユーティリティです。以下のいずれかからデータをロードできます:

  • mongodumpコマンドによって作成されたデータベースダンプファイル
  • mongodまたはmongosインスタンスへの標準入力

MongoDB 4.4以降、mongorestoreユーティリティは基本MongoDBサーバーインストールパッケージには含まれていません。代わりに、MongoDBデータベースツールパッケージ内の別のパッケージとして配布されています。これにより、ユーティリティは100.0.0から始まる独自のバージョニングスキームを持つことができます。mongorestoreユーティリティは、MongoDBバージョン4.4、4.2、4.0、および3.6をサポートします。また、以前のバージョンのMongoDBでも動作する可能性がありますが、互換性は保証されません。さらに、mongorestoreはx86からs390xまでのさまざまなプラットフォームおよびオペレーティングシステムをサポートしています。完全な互換性リストは公式ドキュメントで確認できます。

mongorestoreの動作

Mongoの復元コマンドおよびmongorestoreユーティリティの動作について知っておくべきことのリストです。

  • mongorestoreユーティリティは、ユーザーが既存のデータベースにデータを復元するか、新しいデータベースを作成することを可能にします。既存のデータベースにデータを復元する際、mongorestoreは挿入コマンドのみを使用し、更新を一切行いません。そのため、バックアップ内のドキュメントの_valueフィールドに一致する既存のドキュメントは、復元プロセスによって上書きされることはありません。

これにより、復元プロセス中に重複キーエラーが発生します。以下に示すように:

mongostoreの動作 - 重複キーエラー
  • mongodumpがインデックスをバックアップしないため、mongorestoreコマンドはmongodumpによって記録されたインデックスを再作成します。
  • データベースのバックアップおよび復元時のベストプラクティスは、mongodumpとmongorestoreの両方の対応するバージョンを使用することです。特定のバージョンのmongodumpユーティリティを使用してバックアップが作成された場合、その復元操作を行うためには対応するバージョンのmongorestoreユーティリティを使用することが推奨されます。
  • mongorestoreは「system.profile」コレクションデータを復元しません。
  • mongorestoreユーティリティは、復元操作を行うためにFIPS(連邦情報処理標準)接続に完全に準拠しています。
  • アクセス制御のあるMongoDBインスタンスにデータを復元する場合、以下のシナリオに注意する必要があります:
    • 復元データセットに「system.profile」コレクションが含まれていない場合、--oplogReplayオプションなしでmongorestoreコマンドを実行すると、「restore」ロールが復元プロセスを実行するために必要な権限を提供します。
    • 「system.profile」コレクションを含むバックアップを復元する際、mongorestoreは当該コレクションを復元しないが、新しい「system.profile」コレクションの作成を試みます。その場合、「dbAdmin」と「dbAdminAnyDatabase」ロールを使用して必要な権限を提供できます。
    • --oplogReplayオプションを使用してmongorestoreコマンドを実行するには、ユーザーはanyAction in anyResource権限を持つ新しいユーザー定義ロールを作成する必要があります。
  • shardedトランザクションが進行中のshardedクラスタのバックアップおよび復元戦略でmongorestoreユーティリティを使用することはできません。この変更はMongoDB 4.2で導入されました。shardedクラスタを扱う際は、MongoDB Cloud ManagerまたはOps Managerを使用することが推奨されます。これにより、シャード全体のトランザクションの原子性を維持できます。
  • mongorestoreコマンドは、システムのコマンドシェルから実行する必要があります。これは別のデータベースユーティリティです。

MongoDB mongorestoreの使用

このセクションでは、スタンドアロンMongoDBインスタンスにおけるmongorestoreユーティリティの基本的な使用法を見つけることができます。

基本的なmongorestore構文

    mongorestore

データベースを復元する基本的な方法は、オプションなしでバックアップディレクトリ(ダンプディレクトリ)を指定するmongorestoreコマンドを使用することです。このオプションは、ポート27017を使用してlocalhost(127.0.0.1)にあるデータベースに適しています。復元プロセスは、必要に応じて新しいデータベースとコレクションを作成し、その進行状況もログに記録します。

    mongorestore ./dump/

結果:

mongostore構文

上記の例では、「vehicles」データベースをすべてのコレクションとドキュメントと共に正常に復元する方法を示しています。これにより、バックアップのすべてのコレクションとドキュメントを含むvehiclesという新しいデータベースがMongoDBインスタンスに作成されます。MongoDBインスタンスにログインすることで、復元プロセスを確認できます。

    use vehicles
show collections
db.vehicleinformation.find()

結果:

mongostoreを検証する。バックアップ

mongostoreを使用してリモートMongoDBインスタンスにデータを復元する

リモートMongoDBインスタンスにデータを復元するには、接続を確立する必要があります。データベースへの接続は、次のいずれかを使用して指定できます:

  • URI接続文字列
  • ホストオプション
  • ホストとポートオプション

URIオプションを使用して接続する:

    mongorestore [additional options] --uri="mongodb://:" [restore directory/file]

ホストオプションを使用して接続する:

    mongorestore [additional options] --host=":"  [restore directory/file]

ホストとポートオプションを使用して接続する:

    mongorestore [additional options] --host="" --port=  [restore directory/file]

以下のmongostoreの例は、リモートMongoDBインスタンスのバックアップを復元する方法を示しています。verboseオプションは、復元プロセスの詳細な内訳を提供します。

    mongorestore --verbose --host="10.10.10.59" --port=27017 ./dump/

結果:

mongostoreのリモートMongoDBインスタンスの例

安全なMongoDBインスタンスの復元

アクセス制御のあるMongoDBインスタンスに接続する際に、次の情報を提供する必要があります:

  • ユーザー名
  • パスワード
  • 認証データベースオプション

さらに、mongorestoreはキーに基づく認証をサポートしています。認証されたユーザーが復元プロセスを実行するために必要な権限/役割を持っていることを確認する必要があります。認証構文:

    mongorestore [additional options] --authenticationDatabase= -u= -p=

次の復元コマンドは、認証のためにユーザー名とパスワードを使用してリモートMongoDBサーバーに接続する方法を示しています。

    mongorestore --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/

結果:

リモートMongoDBインスタンスのためのmongostoreの復元コマンド

データベースとコレクションの選択

--nsIncludeオプションを使用することで、ユーザーは復元が必要なデータベースまたはコレクションを指定できます。--nsIncludeオプションを使用すると、ネームスペースパターン(例:"vehicles.*"、"vehicles.vehicleInformation")を使用して、どのデータベースまたはコレクションを含めるべきかを定義できます。複数のネームスペースを指定するには、1つのコマンド内で複数回--nsIncludeコマンドを使用できます。-nsIncludeコマンドは、定義されたネームスペースにワイルドカードを追加することもサポートしています。--dbおよび--collectionオプションは非推奨となっており、次のエラーが発生します。

複数の名前空間に対するmongostoreコマンド

データベースまたはコレクションを除外するには、--nsExcludeコマンドを使用します。データベース/コレクションの選択:

    mongorestore [additional options] --nsInclude= (${DATABASE}.${COLLECTION}) [restore directory/file]

データベース/コレクションの除外:

    mongorestore [additional options] --nsExclude= (${DATABASE}.${COLLECTION}) [restore directory/file]

次の例では、完全な"persons"データベースを復元する方法を示します。アスタリスクをワイルドカードパターンとして使用して"persons"ネームスペースを指定することで、データベース内のすべてのデータを復元できます。

    mongorestore --nsInclude=persons.* --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/

結果:

アーカイブファイルからデータを復元するためにmongostoreを使用

mongorestoreユーティリティはアーカイブファイルからの復元をサポートしています。--archiveオプションを使用してアーカイブファイルを選択でき、--nsIncludeおよび--nsExcludeオプションはアーカイブオプションと組み合わせて使用できます。

    mongorestore [additional options] --archive=

以下の例では、データを復元する際にアーカイブファイルを定義する方法を示します。--nsIncludeオプションは、アーカイブファイルからデータベースに復元するコレクションを指定するために使用されます。

    mongorestore -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive

結果:

mongostoreを使用してデータを復元する際にアーカイブファイルを定義する

圧縮ファイルからデータを復元する

mongodumpユーティリティは、個々のJSONおよびBSONファイルを圧縮するために--gzipオプションを使用します。これらの圧縮バックアップもデータベースを復元するために使用できます。圧縮ファイルも--nsIncludeおよび--nsExcludeオプションを使用してフィルタリングできます。

    mongorestore --gzip [additional options] [restore directory/file]

次のコマンドを使用して、圧縮されたMongoDBバックアップを復元できます。圧縮バックアップは"backupzip"ディレクトリに保存されています。

    mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./backupzip/

結果:

mongostoreを使用して圧縮されたMongoDBバックアップを復元する

同じプロセスは圧縮アーカイブファイルにも適用できます。以下のmongostoreの例は、圧縮アーカイブファイルからデータを復元する方法を示しています。

    mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive

結果:

圧縮されたアーカイブからデータを復元する方法のmongostoreの例

標準入力からデータを復元するためのmongostoreコマンド

mongostoreコマンド"mongorestore"は、ユーザーが標準入力からデータを読み取り、復元プロセスでそのデータを使用できるようにします。ファイル名なしで--archiveオプションを指定することによってデータを読み取ることができます。

    mongodump [additional options] --archive | mongorestore [additional options] –archive

この例は、mongodumpを使用して安全なMongoDBデータベースからバックアップを作成し、それを標準入力としてmongorestoreコマンドに渡して、安全でないリモートMongoDBインスタンスに復元する方法を示しています。

    mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --db=vehicles --archive | mongorestore --host=10.10.10.58 --port=27018 --archive

結果:

mongodumpを使用して安全なMongoDBデータベースからバックアップを作成する

リモートサーバーでデータベースの復元プロセスを確認することができます。これは、–evalタグを使用してJavaScriptコードを実行することで行えます。「listDatabases」管理コマンドを使用することで、リモートMongoDBインスタンス内のすべてのデータベースをリストすることができます。

    mongo --host=10.10.10.58 --port=27018 --quiet --eval 'printjson(db.adminCommand( { listDatabases: 1 } ))'

結果:

mongorestore & mongodump

このチュートリアルは、MongoDB mongorestoreユーティリティについての詳細な知識を提供し、mongodumpによって作成されたバックアップを復元する方法を説明します。mongorestoreは、データベースバックアップを復元するための便利で効率的な方法を提供します。mongodumpとmongorestoreの組み合わせは、小規模なデータベース管理者に完全なバックアップ戦略を提供します。

関連文献

MongoDBガイド

  1. MongoDB概要:MongoDBの始め方
  2. UbuntuおよびMacにMongoDBをインストールする方法
  3. MongoDBでデータベースを作成する
  4. MongoDBシェル基本コマンド
  5. MongoDB Compass:Mongo GUIの使用
  6. MongoDBのロールベースアクセス制御(RBAC)の説明
  7. MongoDBのプロジェクションおよびプロジェクションオペレーターの説明
  8. MongoDBの集約関数の説明
  9. MongoDBのソート:sort()メソッドと例
  10. MongoDBでのPushおよびPullオペレーターの使用
  11. MongoDB $unwindの使用方法
  12. 23の一般的なMongoDBクエリオペレーターとその使用方法
  13. MongoDBジオロケーションクエリの例
  14. MongoDBトランザクションの紹介
  15. MongoDBインデックス:主要なインデックスの種類と管理方法
  16. 知っておくべきトップMongoDBコマンド
  17. MongoDBレプリケーション:完全な紹介
  18. MongoDBクラスタをセットアップする方法
  19. MongoDBシャーディング:概念、例、チュートリアル
  20. MongoDB Atlas:管理されたMongoDBの設定と使用
  21. MongoDBをDockerコンテナとして実行する方法
  22. MongoDBのメモリ使用量、管理、および要件
  23. MongoDBバックアップのためのmongodumpの使用方法
  24. Mongorestoreの例:MongoDBバックアップの復元
  25. PyMongoの使用方法
  26. MongoDBとNodeJSのためのMongooseの使用方法
  27. MongoDBチートシート
  28. MongoDB対Cassandra:NoSQLデータベースの比較
  29. PostgreSQL対MongoDB:データベースの比較
  30. MySQL対MongoDB:データベースの比較
  31. MongoDB認定:紹介

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

オーケストレーションの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。