Atlas Infiniteクラスターに独自のデータを読み込むには、次のいずれかの方法を使用します。
mongodump および mongorestore:
mongodumpは、Atlas Core クラスターを含む既存の MongoDB スタンドアロンまたはレプリカセットからデータのバイナリ エクスポートを作成し、mongorestoreはそのデータを Atlas Infinite クラスターに読み込みます。ソースデータがMongoDB配置にある場合は、このメソッドを使用します。方法については、「MongoDB配置からのデータの復元」を参照してください。mongoimport:
mongoimportは、JSONまたはCSVファイルから Atlas Infinite クラスターにドキュメントを読み込みます。ソースデータが MongoDB 外部のファイルにある場合は、このメソッドを使用します。ファイルは、mongoexportまたはサードパーティのエクスポートツールから取得できます。学ぶ方法については、「JSON または CSV ファイルからデータをインポートする」を参照してください。一括書き込み (write) 操作: MongoDB データベースメソッドは、ドキュメントのバッチするを Atlas Infinite クラスターに書き込み (write) ます。アプリケーション、
mongosh、Atlas UI、またはその他のインターフェースからドキュメントを自分で生成または変換する場合は、このメソッドを使用します。方法については、「書き込み (write) Data That You Generate.」を参照してください。
これらの各メソッドは、宛先の Atlas Infinite クラスターの書き込み (write) キャパシティーを消費します。アプリケーションへの影響を抑えるため、大規模なデータロードは、システムの利用が少ない時間帯や、スケジュールされたメンテナンスウィンドウの間に実行してください。
前提条件
次の前提条件を完了します。
宛先となる Atlas Infinite クラスターを作成します。詳細については、「Atlas Infinite または Atlas Core クラスターの作成」を参照してください。
mongodump、mongorestore、またはmongoimportを使用するには、そのホストするに最新の安定版リリースのMongoDB Database Toolsをインストールしてください。学ぶ方法については、MongoDB Database Toolsインストールガイドをご覧ください。
MongoDB配置からデータを復元する
mongodumpは、既存のMongoDBスタンドアロンまたはレプリカセットのバイナリダンプを作成し、mongorestoreはそのダンプをAtlas Infiniteクラスターに読み込みます。エクスポートには、ソース配置からのデータ、メタデータ、およびインデックスが含まれます。既存のMongoDBシャーディングされたクラスターからデータをコピーするガイダンスについては、「サポートをリクエスト」を参照してください。
この手順を使用して、Atlas Core上のFreeクラスターまたはFlexクラスターからAtlas Infinite上の専有クラスターにデータを移行することもできます。データを移行するのではなく、FreeクラスターまたはFlexクラスターをその場で増やすには、「FreeクラスターまたはFlexクラスターを専有クラスターに増やす」を参照してください。
この手順にはダウンタイムが必要です。ソース配置への書き込み (write)を停止し、mongodumpとmongorestoreを実行するしてから、アプリケーションをAtlas Infiniteクラスターに切り替えます。
Considerations
この手順を実行する前に、以下の動作を考慮してください。
ユーザーとロール: Atlasはデータベースユーザーを管理するため、
mongorestoreは既存のデータベースユーザーやロールを移行先のクラスターに移行できません。アプリケーションが必要とするデータベースユーザーを、移行先のAtlas Infiniteクラスターに作成します。詳細については、「データベースユーザーの設定」を参照してください。排除された名前空間: ダンプ内の
adminおよびconfigディレクトリには、mongorestoreが Atlas Infinite クラスターに追加できないユーザー情報が含まれています。そのため、この手順ではadmin.*とconfig.*を排除します。ホストするリソース:
mongodumpは、ソース配置へのネットワークアクセス権を持つホストする環境で実行され、mongorestoreは、アーカイブファイルへのアクセス権と宛先配置へのネットワークアクセス権を持つホストする環境で実行されます。どちらのツールもホスト上のCPUとメモリを使用するため、ホストのパフォーマンスに影響を与える可能性があります。
手順
ソース配置でデータベースユーザーを設定します。
ソース配置で認証が強制されている場合、mongodumpは、移行するすべてのデータベースを読み取ることができるデータベースユーザーとして認証する必要があります。adminデータベースのbackupロールは、これらの権限を付与します。
ソース配置にそのようなユーザーが存在しない場合は、作成してください。データベースユーザーの作成と管理方法については、配置タイプに応じて次のページを参照してください。
Atlasマネージドクラスターについては、「データベースユーザーの構成」を参照してください。
自己管理型配置については、「自己管理型配置でのユーザーとロールの管理」を参照してください。
宛先 Atlas Infinite クラスターにデータベースユーザーを設定します。
mongorestoreは、移行するすべてのデータベースに書き込み (write)ができるデータベースユーザーとして認証する必要があります。移行先のAtlas InfiniteクラスターのAtlas adminロールは、これらの権限を付与します。
そのようなユーザーが宛先のAtlas Infiniteクラスターに存在しない場合は、作成してください。Atlasでデータベースユーザーを作成および管理する方法を学ぶには、データベースユーザーの構成を参照してください。
ソースおよび宛先の配置へのホストネットワークアクセスを許可します。
mongodump と mongorestore を実行するホストする側から両方の配置に到達できることを確認します。
宛先の Atlas Infinite クラスターを含むプロジェクトの IP アクセス リストにホストするを追加します。ホストを IP アクセス リストに追加する方法については、「IP アクセス リスト エントリの設定」を参照してください。
ソースの配置が別のプロジェクトの Atlas Core クラスターである場合は、そのプロジェクトの IP アクセス リストにもホストするを追加します。ソースの配置が自己管理型の場合は、ホストからの接続を受け入れるようにファイアウォールを構成します。詳細を学ぶには、ネットワークと設定の強化を参照してください。
VPCピアリングを設定する場合、ピアの VPC CIDR ブロックまたはサブネット、またはピア VPC のセキュリティ グループを IP アクセス リストに追加できます。詳細については、「IP アクセス リスト」を参照してください。
mongodump を実行する。
mongodumpコマンドをアセンブルします。次の
mongodumpコマンドテンプレートは、接続文字列を使用してソースレプリカセットまたはスタンドアロンクラスターに接続し、ダンプのアーカイブをファイルに出力します。テンプレートを任意のテキストエディターにコピーし、
<connectionString>プレースホルダーをソース配置の接続文字列に、<fileName>を作成するアーカイブ ファイルの名前に置き換えます。mongodump --uri "<connectionString>" --archive=<fileName>.archiveソース配置の接続文字列を構築する学ぶ方法については、接続文字列を参照してください。
注意
Ubuntu 18.04で
mongodumpまたはmongorestoreを使用している場合、 SRV 接続文字列(mongodb+srv://形式)を--uriオプションとともに使用すると、cannot unmarshal DNSエラー メッセージが表示されることがあります。 その場合は、次のいずれかのオプションを代わりに使用します。非 SRV 接続string (
mongodb://形式)と--uriオプション直接接続するホストを指定するための
--hostオプション
ソース配置へのネットワークアクセス権を持つホストのターミナルまたはコマンドプロンプトから、完成したコマンドを実行します。
例
次の
mongodumpコマンドは、SRV 接続文字列を使用してソース Atlas Core クラスターに接続します。この文字列には、adminデータベースでbackupロールを持つデータベースユーザーのユーザー名 (mySourceUsername) とパスワード (mySourcePassword) が含まれています。このコマンドは、ダンプのアーカイブを現在の作業ディレクトリにあるmongodump.archiveという名前のファイルに出力します。mongodump --uri "mongodb+srv://mySourceUsername:mySourcePassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive"
mongorestore を実行する。
mongorestoreコマンドをアセンブルします。次の
mongorestoreコマンド テンプレートは、接続先の Atlas Infinite クラスターに接続文字列を使用して接続し、mongodumpによって作成されたアーカイブを復元しまます。これは、--nsExcludeを使用して、Atlas がマネージドしているadminとconfigデータベースを除外します。テンプレートを好みのテキストエディタにコピーし、以下のプレースホルダーを適切な値に置き換えます。
<connectionString>: これを宛先 Atlas Infinite クラスター用の SRV 接続文字列に置き換えてください。宛先クラスターの接続文字列を検索または構築するには、接続文字列を参照してください。Atlas adminロールを持つデータベースユーザーのユーザー名とパスワードを接続文字列に含めます。<filePath>: これと、によって作成されたアーカイブファイルへのパスを置き換えてください。mongodump。
mongorestore --uri "<connectionString>" \ --archive="<filePath>" \ --nsExclude "admin.*" \ --nsExclude "config.*"mongodumpによって作成されたアーカイブファイルにアクセスできるホストする上のターミナルまたはコマンドプロンプトから、完成したコマンドを実行します。例
次の
mongorestoreコマンドは、Atlas adminロールを持つデータベースユーザーのユーザー名 (myDestinationUsername) とパスワード (myDestinationPassword) を含む SRV 接続文字列を使用して Atlas Infinite クラスターに接続します。このコマンドは、mongodumpによって作成されたmongodump.archiveにあるアーカイブを復元します。ただし、adminデータベースとconfigデータベースは除外されます。mongorestore --uri "mongodb+srv://myDestinationUsername:myDestinationPassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive" \ --nsExclude "admin.*" \ --nsExclude "config.*"
JSONまたはCSVファイルからデータをインポートする
mongoimportは、JSONまたはCSVファイルを読み取り、各レコードをAtlas Infiniteクラスターのコレクションに挿入します。このファイルは、サードパーティのエクスポートツールから取得できます。MongoDB配置からAtlas Infiniteクラスターにデータを復元するには、MongoDB配置からのデータの復元を参照してください。
Considerations
この手順を実行する前に、以下の動作を考慮してください。
Extended JSON:
mongoimportは特定の BSON types に対して厳密モード表現を使用します。ドキュメントのみ:
mongorestoreとは異なり、mongoimportはドキュメントのみを読み込み、コレクションオプションやインデックス定義は読み込みません。インポートが完了したら、移行先のAtlas Infiniteクラスターでインデックスを作成します。ホストするリソース:
mongoimportは、ファイルが配置されているホストする上で実行され、そのホストするのCPUとメモリを使用します。その他のインターフェース: コマンドラインを使用せずにファイルを読み込むには、
JSONおよびCSVファイルをインポートする MongoDB Compass または、コピーするか入力するかでJSONドキュメントを挿入する Atlas UI を使用します。
手順
Atlas で、プロジェクトの Database & Network Access ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
前の手順を完了すると、[ データベースとネットワーク アクセス ] ページが表示されます。
移行先 Atlas クラスターに、データベースユーザーを設定します。
mongoimportを実行してAtlasクラスターに書き込み (write)には、データをインポートするデータベースでreadWrite権限を持つデータベースユーザーを指定する必要があります。たとえば、Atlas adminロールを持つユーザーにはこれらの権限が付与されます。
そのようなユーザーが存在しない場合は、ユーザーを作成します。
まだ表示されていない場合は Database Users タブをクリックします。
Add New Database User をクリックします。
Atlas admin ユーザーを追加します。
Atlas で、プロジェクトの Clusters ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
IP アクセス リストを更新します。
mongoimportを実行するホストがIP アクセス リストにない場合は、更新します。次のいずれかを指定できます。
mongoimportが実行されるサーバーのパブリック IP アドレス、またはVPC ピアリングを設定する際、クラウドプロバイダーとして AWS を選択した場合、ピア VPC の CIDR ブロック(またはサブネット)またはピア VPC のセキュリティグループのいずれかとなります。
宛先クラスターの URI / ホスト情報をコピーします。
MongoDB Atlas クラスターには、接続文字列 URI を使用して接続できます。接続ダイアログボックスで、次の手順を実行します。
[Drivers] をクリックします。
手順 1 で見つかった接続文字列をコピーします。
PASSWORD を root ユーザーのパスワードに置き換え、DATABASE を接続先のデータベースの名前に置き換えます。
重要
提供された
<PASSWORD>内の@文字をすべてエスケープする必要があります。たとえば、p@sswordはp%40sswordにする必要があります。
この接続文字列は、--uri オプションで mongoimport するように指定されます。
--host を使用する際、Atlas クラスターがレプリカセットである場合は、レプリカセット名も取得する必要があります。例:
myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017生成したデータを書き込み (write)
一括書き込み (write)操作では、単一のリクエストで多数の書き込み (write)をAtlas Infiniteクラスターに送信するため、ネットワークのラウンドトリップが減少し、書き込みスループットが向上します。既存の配置やファイルからデータをコピーするのではなく、生成したドキュメントをAtlas Infiniteクラスターに書き込み (write)するには、この方法を選択してください。
Considerations
この手順を実行する前に、以下の動作を考慮してください。
一括書き込み (write) の動作: 一括書き込み (write) リクエストで指定する書き込み (write) 操作とオプションによって、MongoDB が書き込み (write) 操作を順序付け、エラーを取り扱い、リクエストの結果を報告する方法が決まります。これらの選択が書き込み (write) の動作にどのように影響するかを学ぶには、
bulkWrite()リファレンスページを参照してください。その他のインターフェース: バッチするロジックなしで少数のドキュメントを書き込み (write)するには、
insertMany()またはinsertOne()(mongoshまたは MongoDB ドライバーから)、あるいはAtlas UIを使用します。Atlas UIでは、貼り付けまたは入力したJSONドキュメントが挿入されます。
手順
Atlas Infiniteクラスターに接続します。
この手順で一括書き込み (write)操作を実行するには、mongoshを使用してクラスターに接続します。方法を学ぶには、「Atlasクラスターへの接続」を参照してください。
また、MongoDBドライバーを使用したアプリケーションコード、Atlas UI、またはクラスターに接続するその他のインターフェースから、一括書き込み (write)操作を実行することもできます。各インターフェースでの同等の操作を学ぶには、「一括書き込み (write)操作」を参照してください。
一括書き込み (write)操作 (bulk write operation) を実行します。
単一のコレクションに書き込み (write)を行うには、bulkWrite()を実行します。書き込み (write)操作の種類と一括書き込み (write)オプションについて詳しく学ぶには、bulkWrite().を参照してください。
たとえば、次のコマンドは inventory コレクションに 2 つのドキュメントを挿入します。
db.inventory.bulkWrite( [ { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f1"), item: "notebook", qty: 50 } } }, { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f2"), item: "pencil", qty: 100 } } }] )1つのリクエストで複数のコレクションやデータベースに書き込み (write)を行うには、bulkWrite()を実行し、各操作の名前空間を指定します。例、次のコマンドはsales.inventoryコレクションに1つのドキュメントを挿入し、supplies.inventoryコレクションに1つのドキュメントを挿入します。
db.getMongo().bulkWrite( [ { namespace: "sales.inventory", name: "insertOne", document: { item: "notebook", qty: 50 } }, { namespace: "supplies.inventory", name: "insertOne", document: { item: "pencil", qty: 100 } }] )デフォルトでは、一括書き込み (write) 操作は順番に実行され、最初のエラーで停止します。実行する順序を設定する方法を学ぶには、「操作の実行」を参照してください。
制限
Atlas Infiniteのパブリックプレビューにおける制限事項の全リストについては、「パブリックプレビューの可用性」を参照してください。Atlas Infiniteクラスターにデータを読み込む際には、以下の制限が適用されます。
oplogリプレイなし: Atlas Infiniteはoplogリプレイをサポートしていません。Atlas Infiniteクラスターでは、
mongodump --oplogオプションやmongorestore --oplogReplayオプションを使用しないでください。Queryable Encryption とクライアント側フィールドレベル暗号化:
mongodumpまたはmongorestoreは、Queryable Encryption または クライアント側フィールドレベル暗号化 を使用するコレクションでは使用できません。エディション間のライブ移行と復元する: Atlas Infinite は、Atlas Core クラスターと Atlas Infinite クラスター間のライブ移行またはバックアップと復元するをサポートしていません。2つの配置オプション間のアーキテクチャの違いにより、スナップショットとライブ移行は互換性がありません。