独自のデータを Atlas Infinite クラスターにロードするには、次のいずれかの方法を使用します。
mongodump と mongorestore:
mongodumpは、Atlas Core クラスターを含む既存のMongoDBスタンドアロンまたはレプリカセットからデータのバイナリ エクスポートを作成し、 はそのデータを Atlas Infinite クラスターにロードします。ソース データがMongoDBデプロイにある場合は、このメソッドを使用します。方法については、mongorestore「 MongoDB配置からデータを復元する 」を参照してください。mongoimport:
mongoimportは、JSONまたは ファイルからドキュメントをCSVAtlas Infinite クラスターに読み込みます。ソース データがMongoDBの外部のファイルにある場合は、このメソッドを使用します。ファイルは、mongoexportまたはサードパーティのエクスポート ツールから取得される場合があります。その方法については、 「 JSONファイルまたは CSV ファイルからのデータのインポート 」を参照してください。一括書込み操作: MongoDBデータベースメソッドは、ドキュメントのバッチを Atlas Infinite クラスターに書込みます。このメソッドは、アプリケーション、 、 Atlas
mongoshUI、または別のインターフェースから自分でドキュメントを生成または変換する場合に使用します。その方法については、「 生成したデータの書き込み 」を参照してください。
これらのメソッドはそれぞれ、宛先 Atlas Infinite クラスターの書込みキャパシティーを消費します。アプリケーションへの影響を制限するには、非ピークのシステム使用中に大規模なデータ ロードを実行するか、 スケジュールされたメンテナンスウィンドウ を実行します。
前提条件
次の前提条件を完了します。
宛先 Atlas Infinite クラスターを作成します。詳細については、「 Atlas Infinite または Atlas Core クラスターの作成 」を参照してください。
MongoDB配置からデータを復元
mongodumpは既存のMongoDBスタンドアロンまたはレプリカセットのバイナリ エクスポートを作成し、Atlas Infinite クラスターにエクスポートする ロードを作成します。エクスポートには、元の配置からのデータ、メタデータ、 インデックスmongorestore が含まれます。既存のMongoDBシャーディングされたクラスターからデータをコピーする方法のガイダンスについては、 サポートのリクエスト を参照してください。
この手順は、Atlas Core の 無料クラスターまたは Flex クラスターから Atlas Infinite の専有クラスターにデータを移行する目的でも使用できます。データを移行するのではなく、無料クラスターまたは Flex クラスターをその場で増やすには、「 無料クラスターまたは Flex クラスターを専用クラスターにスケーリング 」を参照してください。
この手順では、ダウンタイムが必要です。ソース配置への書込みを停止し、mongodump とmongorestore を実行してから、アプリケーションを Atlas Infinite クラスターに切り替えます。
Considerations
この手順を実行する前に、次の動作を考慮してください。
ユーザーとロール: Atlas がデータベースユーザーを管理しているため、 は既存のデータベースユーザーまたはロールを宛先クラスターに移行できません。アプリケーションに必要なデータベースユーザーを宛先の Atlas Infinite クラスターで作成します。詳細については、
mongorestore「データベースユーザーの設定」 を参照してください。除外された名前空間:
adminconfigダンプ内の ディレクトリとmongorestoreadmin.*ディレクトリには、 が Atlas Infinite クラスターに追加できないユーザー情報が保存されているため、この手順では とconfig.*は除外されます。ホスト リソース:
mongodumpは復元元へのネットワークアクセスを持つホストで実行され、 はアーカイブファイルへのアクセスと復元先配置へのネットワークアクセスを持つホストで実行されます。どちらのツールもホスト上でmongorestoreCPU とメモリを使用するため、そのホストのパフォーマンスに影響を与える可能性があります。
手順
ソース配置でデータベースユーザーを設定します。
復元元で認証 が強制される場合、mongodump は、移行するすべてのデータベースを読み取りできるデータベースユーザーとして認証を受ける必要があります。backup データベースのadmin ロールはこれらの特権を付与します。
ソース配置にそのようなユーザーが存在しない場合は、作成します。データベースユーザーを作成および管理する方法については、ご使用の配置タイプの次のページを参照してください。
Atlas が管理するクラスターについては、 「データベースユーザーの設定」 を参照してください。
自己管理型型配置については、「 自己管理型配置でユーザーとロールの管理 」を参照してください。
宛先 Atlas Infinite クラスターに、データベースユーザーを設定します。
mongorestoreは、移行するすべてのデータベースに書き込みができるデータベースユーザーとして認証する必要があります。宛先 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 ソース配置用の接続文字列を作成する方法については、「 接続文字列 」を参照してください。
注意
mongodumpmongorestoreUbuntu. で18 または04cannot unmarshal DNSを使用している場合、SRV 接続文字列(mongodb+srv://形式)を オプションとともに使用すると、 エラー--uriメッセージが表示されることがあります。その場合は、次のいずれかのオプションを代わりに使用します。--uri非 SRV接続文字列(mongodb://形式)と オプション直接接続するホストを指定するための
--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--nsExcludeadminconfigAtlas が管理する データベースと データベースを除外するには、 を使用します。テンプレートをテキストエディタにコピーし、次のプレースホルダーを適切な値に置き換えます。
<connectionString>: これを、宛先 Atlas Infinite クラスターの SRV接続文字列に置き換えます。宛先クラスターの接続文字列を検索または作成するには、「 接続文字列 」を参照してください。Atlas admin接続文字列に ロールを持つデータベースユーザーのユーザー名とパスワードを含めます。<filePath>: これをmongodumpが作成したアーカイブファイルへのパスに置き換えます。
mongorestore --uri "<connectionString>" \ --archive="<filePath>" \ --nsExclude "admin.*" \ --nsExclude "config.*" によって作成されたアーカイブファイルにアクセスできるホストで、ターミナルまたはコマンド
mongodumpプロンプトから完了したコマンドを実行します。例
次の
mongorestoreコマンドは、 SRV接続文字列を使用して Atlas InfinitemyDestinationUsernamemyDestinationPasswordクラスターに接続します。この文字列には、Atlas adminロールを持つデータベースユーザーのユーザー名( )とパスワード( )が含まれています。このコマンドは、 データベースとmongodump.archivemongodumpデータベースを除き、 によって作成されたadminconfigのアーカイブを復元します。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
この手順を実行する前に、次の動作を考慮してください。
拡張JSON : は特定のBSON types
mongoimportに対して厳密モード表現を使用します。ドキュメントのみ:
mongorestoreと違い、 はドキュメントのみをロードし、コレクションオプションやインデックス定義はロードしません。インポートが完了したら、宛先 Atlas Infinitemongoimportクラスターにインデックスを作成します。ホスト リソース: は、ファイルを保持し、そのホスト上の CPU
mongoimportとメモリを使用するホストで実行されます。その他のインターフェース:コマンドラインなしでファイルを読み込むには、 ファイルと ファイルをインポートするMongoDB Compass、または貼り付けまたは入力した
JSONCSVJSONドキュメントを挿入する Atlas UIを使用します。
手順
Atlas で、プロジェクトの Database & Network Access ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
データベース &上記の手順を完了すると、[ ネットワーク アクセス ] ページが表示されます。
宛先 Atlas クラスターに、データベースユーザーを設定します。
mongoimportを実行して Atlas クラスターに書き込むには、データをインポートするデータベースで 読み取り / 書き込み 特権を持つデータベースユーザーを指定する必要があります。例、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 / ホスト情報をコピーします。
Atlasクラスターには、 接続文字列 URIを使用して接続できます。 接続ダイアログボックスで、次の手順を実行します。
[Drivers] をクリックします。
手順 1 で見つかった接続文字列をコピーします。
PASSWORD を root ユーザーのパスワードに置き換え、DATABASE を接続先のデータベースの名前に置き換えます。
重要
提供された
<PASSWORD>内の@文字をすべてエスケープする必要があります。たとえば、p@sswordはp%40sswordにする必要があります。
この接続文字列は、mongoimport --uriオプションで に指定されます。
--host を使用する際、Atlas クラスターがレプリカセットである場合は、レプリカセット名も取得する必要があります。例:
myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017
生成したデータの書込み
一括書き込み操作は 、1 回のリクエストで Atlas Infinite クラスターに多くの書き込みを送信するため、ネットワーク ラウンド トリップが削減され、 書込みスループットが向上します。既存のデプロイメントまたはファイルからデータをコピーする代わりに、生成したドキュメントを Atlas Infinite クラスターに書込み (write) する場合は、この方法を選択します。
Considerations
この手順を実行する前に、次の動作を考慮してください。
一括書込み動作: 一括書込みリクエストで指定する書込み操作とオプションによって、 MongoDB が書込み操作を順序付け、エラーを処理し、リクエストの結果を報告する方法が決まります。これらの選択が一括書き込みの動作にどのように影響するかについては、
bulkWrite()の参照ページを参照してください。その他のインターフェース: バッチ
insertMany()insertOne()mongoshロジックを使用せずに少数のドキュメントを作成するには、 またはMongoDBドライバー、または貼り付けまたは入力した ドキュメントを挿入する Atlas UIからのJSONまたは を使用します。
手順
Atlas Infinite クラスターに接続します。
この手順の一括書き込み操作を実行するには、mongosh を使用してクラスターに接続します。方法については、「 Atlas クラスターへの接続 」を参照してください。
また、 MongoDBドライバーを使用したアプリケーションコード、Atlas UI、またはクラスターに接続するその他のインターフェースから、一括書き込み操作を実行することもできます。各インターフェースで同等の操作の詳細については、「 一括書込み操作 」を参照してください。
一括書込み (write)操作を実行します。
単一のコレクションに書き込むには、bulkWrite() を実行します。書込み操作の種類と一括書込みオプションの詳細については、bulkWrite() を参照してください。
例、次のコマンドは、2 つのドキュメントを inventoryコレクションに挿入します。
db.inventory.bulkWrite( [ { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f1"), item: "notebook", qty: 50 } } }, { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f2"), item: "pencil", qty: 100 } } } ] )
1 回のリクエストで複数のコレクションまたはデータベースに書き込むには、 を実行し、各操作の名前空間を指定します。例、次のコマンドは、 コレクションに 1bulkWrite() つのドキュメントを挿入し、sales.inventory コレクションに 2 つのドキュメントを挿入します。supplies.inventory
db.getMongo().bulkWrite( [ { namespace: "sales.inventory", name: "insertOne", document: { item: "notebook", qty: 50 } }, { namespace: "supplies.inventory", name: "insertOne", document: { item: "pencil", qty: 100 } } ] )
デフォルトでは 、一括書き込み操作は順番に実行され、最初のエラーで停止します。実行順序の構成方法については、「 操作の実行 」を参照してください。
結果を確認します。
操作によって返されるカウントを確認し、各 ターゲットコレクション内のドキュメント数を確認します。詳細については、「 出力 」を参照してください。
一括書き込み操作のエラーを処理する方法については、「 エラー処理 」を参照してください。
制限
Atlas Infinite には、パブリック プレビューの可用性 にpublic preview制限の完全なリストがあります。 Atlas Infinite クラスターにデータをロードする場合、次の制限が適用されます。
oplogリプレイなし: Atlas Infinite はoplogリプレイをサポートしていません。 Atlas Infinite クラスターでは、
mongodump --oplogオプションまたはmongorestore --oplogReplayオプションは使用しないでください。クロスエディションのライブ移行と復元: Atlas Infinite は、Atlas Core クラスターと Atlas Infinite クラスター間のライブ移行またはバックアップと復元をサポートしていません。 2 つの配置オプション間のアーキテクチャの違いにより、スナップショットとライブ移行は互換性がなくなります。