ポイント: 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フィールドに一致する既存のドキュメントは、復元プロセスによって上書きされることはありません。
これにより、復元プロセス中に重複キーエラーが発生します。以下に示すように:
- 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/
結果:
上記の例では、「vehicles」データベースをすべてのコレクションとドキュメントと共に正常に復元する方法を示しています。これにより、バックアップのすべてのコレクションとドキュメントを含むvehiclesという新しいデータベースがMongoDBインスタンスに作成されます。MongoDBインスタンスにログインすることで、復元プロセスを確認できます。
use vehicles
show collections
db.vehicleinformation.find()
結果:
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/
結果:
安全な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/
結果:
データベースとコレクションの選択
--nsIncludeオプションを使用することで、ユーザーは復元が必要なデータベースまたはコレクションを指定できます。--nsIncludeオプションを使用すると、ネームスペースパターン(例:"vehicles.*"、"vehicles.vehicleInformation")を使用して、どのデータベースまたはコレクションを含めるべきかを定義できます。複数のネームスペースを指定するには、1つのコマンド内で複数回--nsIncludeコマンドを使用できます。-nsIncludeコマンドは、定義されたネームスペースにワイルドカードを追加することもサポートしています。--dbおよび--collectionオプションは非推奨となっており、次のエラーが発生します。
データベースまたはコレクションを除外するには、--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
結果:
圧縮ファイルからデータを復元する
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の例は、圧縮アーカイブファイルからデータを復元する方法を示しています。
mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive
結果:
標準入力からデータを復元するための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
結果:
リモートサーバーでデータベースの復元プロセスを確認することができます。これは、–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ガイド
- MongoDB概要:MongoDBの始め方
- UbuntuおよびMacにMongoDBをインストールする方法
- MongoDBでデータベースを作成する
- MongoDBシェル基本コマンド
- MongoDB Compass:Mongo GUIの使用
- MongoDBのロールベースアクセス制御(RBAC)の説明
- MongoDBのプロジェクションおよびプロジェクションオペレーターの説明
- MongoDBの集約関数の説明
- MongoDBのソート:sort()メソッドと例
- MongoDBでのPushおよびPullオペレーターの使用
- MongoDB $unwindの使用方法
- 23の一般的なMongoDBクエリオペレーターとその使用方法
- MongoDBジオロケーションクエリの例
- MongoDBトランザクションの紹介
- MongoDBインデックス:主要なインデックスの種類と管理方法
- 知っておくべきトップMongoDBコマンド
- MongoDBレプリケーション:完全な紹介
- MongoDBクラスタをセットアップする方法
- MongoDBシャーディング:概念、例、チュートリアル
- MongoDB Atlas:管理されたMongoDBの設定と使用
- MongoDBをDockerコンテナとして実行する方法
- MongoDBのメモリ使用量、管理、および要件
- MongoDBバックアップのためのmongodumpの使用方法
- Mongorestoreの例:MongoDBバックアップの復元
- PyMongoの使用方法
- MongoDBとNodeJSのためのMongooseの使用方法
- MongoDBチートシート
- MongoDB対Cassandra:NoSQLデータベースの比較
- PostgreSQL対MongoDB:データベースの比較
- MySQL対MongoDB:データベースの比較
- MongoDB認定:紹介
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。