mongodumpとmongorestoreを使用して、既存の MongoDB スタンドアロンまたはレプリカセットのデータを含む MongoDB Atlas クラスターをシードできます。 既存の MongoDB シャーディングされたクラスターからデータをシードする方法については、Atlas サポート にお問い合わせください。
Atlas で、 Support ページに移動します。
まだ表示されていない場合は、以下から目的の組織を選択しますナビゲーション バーのOrganizationsメニュー
ナビゲーション バーの Support アイコンをクリックします。
[View plan] をクリックします。
サポートページが表示されます。
Atlas UI を使用して、 M0無料階層クラスターをM10+有料クラスターにはスケーリングできますが、このセクションではmongodumpとmongorestoreの手順を使用して、 M0無料階層からデータをコピーすることもできます。階層クラスターをM10+クラスターに階層化します。
Considerations
推奨される mongodump と mongorestore のバージョン
この手順では、 mongodumpとmongorestoreの最新の安定版リリース バージョンを使用します。
必要なダウンタイム
最新の移行を実現するには、ソースクラスターへの書き込みをすべて停止できるメンテナンスウィンドウをスケジュールします。 手順のmongodump部分が完了した後にソースクラスターに発行された書込み操作は、宛先クラスターに移行されません。
mongorestore がデータの復元を完了したら、書込み操作を再開する前に、アプリケーションを宛先の Atlas クラスターにカットオーバーする必要があります。Atlas クラスターに接続するには、Atlas クラスターへの接続 を参照してください。
必要なダウンタイムの合計量は、移行されるデータのサイズやソースクラスターと Atlas 間のネットワーク接続などの要因によって異なります。 長時間のダウンタイムに関する質問や懸念がある場合は、Atlas サポート にお問い合わせください。
Atlas で、Support ページに移動します。
まだ表示されていない場合は、以下から目的の組織を選択しますナビゲーション バーのOrganizationsメニュー
ナビゲーション バーの Support アイコンをクリックします。
[View plan] をクリックします。
サポートページが表示されます。
クラスターのセキュリティ
Atlas がデータベースユーザーの作成を管理します。 ソースクラスターが認証を強制する場合、次のことを行います。
プライマリへの読み取りアクセスを許可します。
オプションとともに
mongorestore--oplogReplayadminを使用する場合は、configが作成する ディレクトリからdumpmongodumpディレクトリと ディレクトリを削除する必要があります。adminディレクトリとconfigディレクトリには、mongorestoreを使用して Atlas クラスターに追加できないデータベースユーザー情報が含まれています。admin.system.*名前空間を除外するには、mongorestore--nsExcludeを使用します。
既存のユーザーまたはロール情報を Atlas に移行することはできません。 宛先 Atlas クラスターには、アプリケーションの使用パターンをサポートするための適切なデータベースユーザーを作成します。 新しいデータベースユーザーを使用するには、カットオーバー手順の一部としてアプリケーションをアップデートします。 詳細については、 「データベースユーザーの設定」 を参照してください。
パフォーマンス
この手順では、ソースクラスター内のホストでmongodumpとmongorestoreを実行する必要があります。 これらのプログラムは CPU やメモリなどのシステム リソースを使用するため、ホストのパフォーマンスに影響を与える可能性があります。
この手順は、ピーク以外のシステム使用中に、またはスケジュールされたメンテナンスウィンドウ中に実行します。 ソースがレプリカセットである場合は、セカンダリノードのホストからこの手順を実行できます。 クラスターへの書き込みを停止した後、この手順を開始する前に、セカンダリがプライマリに追いつくようにします。
パイプの動作
この手順では、Linux パイプ mongodumpを使用して、 の出力をmongorestore にストリーミングします。mongorestore プロセスがmongodump プロセスに追いつけない場合、パイプライン エラーが発生する可能性があります。
永続的な壊れたパイプエラーへの対処に関するガイダンスは、Atlas サポートにお問い合わせください。
Atlas で、Support ページに移動します。
まだ表示されていない場合は、以下から目的の組織を選択しますナビゲーション バーのOrganizationsメニュー
ナビゲーション バーの Support アイコンをクリックします。
[View plan] をクリックします。
サポートページが表示されます。
手順
次のチュートリアルでは、 mongodumpとmongorestoreを使用して、既存の MongoDB クラスターから Atlas クラスターにデータをアップロードします。
ソース レプリカセットにデータベースユーザーを作成します。
重要
任意
ソースクラスターが認証を強制しない場合は、このステップをスキップします。
ソース配置で認証が強制される場合は、この手順の一部として任意のデータベースを読み取る権限を持つデータベースユーザーに提供する必要があります。 データベースユーザーの特権の詳細については、「 MongoDB のロールベースのアクセス制御 」を参照してください。
そのようなユーザーが存在しない場合は、 adminデータベースのバックアップロールを持つソース MongoDB レプリカセットにユーザーを作成します。
mongodump コマンドを組み立てます。
使用する接続文字列のタイプに基づいて、次のいずれかのテンプレートを にコピーして、希望のテキストエディタにコピーします。
注意
Atlasクラスターに接続するには、--uri オプションを使用して DNS シードリスト接続文字列に接続することを推奨します。
mongodump --uri "mongodb://username:password@mongodb0.example.com:<Port>,mongodb1.example.com:<Port1>,mongodb2.example.com:<Port2>/?replicaSet=<ReplicaSetName>&authSource=admin" \ --archive
ホストの例をレプリカセットの情報に置き換えます。 <ReplicaSetName>をソース レプリカセットの名前に置き換えます。
スタンドアロン配置の場合は、 replicaSet=<ReplicaSetName>を除外し、スタンドアロン配置のホスト名のみを指定します。 たとえば、 --uri "mongodb://standalone-mongod.example.net:27017"
mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \ --archive
注意
Ubuntu 18.04でmongodumpまたはmongorestoreを使用している場合、 SRV 接続文字列( mongodb+srv://形式)を--uriオプションとともに使用すると、 cannot unmarshal DNSエラー メッセージが表示されることがあります。 その場合は、次のいずれかのオプションを代わりに使用します。
非 SRV 接続string (
mongodb://形式)と--uriオプション直接接続するホストを指定するための
--hostオプション
注意
パスワードに特殊文字が含まれている場合は、パーセント エンコードする必要があります。
このコマンドはまだ実行しないでください。 テンプレートを変更したら、次の手順に進みます。
ターゲット Atlas クラスターに、データベースユーザーを設定します。
Atlas クラスターに対してmongorestoreを実行するには、 Atlas adminロールを持つ Atlas クラスター内のデータベースユーザーを指定する必要があります。
そのようなユーザーが存在しない場合は、ユーザーを作成します。
Atlas で、プロジェクトの [Database Access] ページに移動します。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のDatabase & Network Accessをクリックします。
[ データベースとネットワーク アクセス ] ページが表示されます。
Add New Database User をクリックします。
Atlas admin ユーザーを追加します。
ユーザー管理の詳細については、「データベースユーザーの構成 」を参照してください。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
mongorestore 接続テンプレートを検索し、変更します。
Command Line Tools タブの Binary Import and Export Tools セクションには、mongorestore を Atlas クラスターに接続するために必要な最小限のオプションを含むコピー可能なテンプレートが表示されます。
テンプレートには、特定のオプションのプレースホルダー値が含まれています。 テンプレートをコピーして、希望のテキストエディタに貼り付け、次の変更を行います。
password: これを、usernameで指定されたユーザーのパスワードに置き換えます。 テンプレートには、プロジェクトのデータベースユーザーがusernameとして含まれています。 別のユーザーとして認証する場合は、usernameの値を置き換え、passwordにそのユーザーのパスワードを指定します。--nsExcludeを追加し、その値を"admin.system.*"に設定します。Add
--archive.
使用する接続文字列のタイプに基づいて、テンプレートは次のいずれかのコマンドのようになります。
mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myRepl&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"
mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \ --archive \ --nsExclude "admin.system.*"
mongodump と mongorestore を実行します。
重要
mongodumpとmongorestoreを実行しているホストがプロジェクトのIP アクセス リストにあることを確認します。
プロジェクトの IP アクセス リストを確認するには、サイドバーのSecurityセクションにある [ Network Accessをクリックします。 IP Access Listタブが表示されます。 詳細については、「 IP アクセス リスト 」を参照してください。
お好みのテキスト エディターで、パイプ|演算子を使用してmongodump } コマンドとmongorestoreコマンドを分離します。 使用する接続文字列のタイプに基づいて、最終コマンドは次のいずれかのようになります。
mongodump --uri "mongodb://username:password@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=sourceRS&authSource=admin" \ --archive \ | \ mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myAtlasRS&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"
mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \ --archive \ | \ mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \ --archive \ --nsExclude "admin.system.*"
ソースクラスター上のホストマシンに接続されたターミナルまたは shell から、完了した コマンドを実行します。
手順が正常に完了したら、mongosh を使用して Atlas クラスターに接続し、手順の結果を確認します。方法については、 mongosh経由でクラスターに接続する を参照してください。
書込み操作を再開する前に、アプリケーションを更新して Atlas クラスターを点ようにする必要があります。Atlas にアプリケーションを接続する方法については、ドライバーを使用してクラスターに接続する を参照してください。