でシード処理 mongorestore
mongodump
とmongorestore
を使用して、既存の MongoDB スタンドアロンまたはレプリカセットのデータを含む MongoDB Atlas クラスターをシードできます。 既存の MongoDB シャーディングされたクラスターからデータをシードする方法については、Atlas サポート にお問い合わせください。
Atlas で、 Project Support ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Projects メニューの横にある Options メニューをクリックし、 Project Support をクリックします。
プロジェクト サポートページが表示されます。
Atlas UI を使用して、 M0
無料階層クラスターをM10+
有料クラスターにはスケーリングできますが、このセクションではmongodump
とmongorestore
の手順を使用して、 M0
無料階層からデータをコピーすることもできます。階層クラスターをM10+
クラスターに階層化します。
Considerations
推奨される mongodump
と mongorestore
のバージョン
この手順では、 mongodump
とmongorestore
の最新の安定版リリース バージョンを使用します。
必要なダウンタイム
最新の移行を実現するには、ソースクラスターへの書き込みをすべて停止できるメンテナンスウィンドウをスケジュールします。 手順のmongodump
部分が完了した後にソースクラスターに発行された書込み操作は、宛先クラスターに移行されません。
mongorestore
がデータの復元を完了したら、書込み操作を再開する前に、アプリケーションを宛先の Atlas クラスターにカットオーバーする必要があります。 Atlas クラスターに接続するには、「 クラスターへの接続 」を参照してください。
必要なダウンタイムの合計量は、移行されるデータのサイズやソースクラスターと Atlas 間のネットワーク接続などの要因によって異なります。 長時間のダウンタイムに関する質問や懸念がある場合は、Atlas サポート にお問い合わせください。
Atlas で、Project Support ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Projects メニューの横にある Options メニューをクリックし、 Project Support をクリックします。
プロジェクト サポートページが表示されます。
より前のバージョンのMongoDBの最小ダウンタイム移行手順については、「6.0 レプリカセットのライブ移行」を参照してください。
クラスターのセキュリティ
Atlas がデータベースユーザーの作成を管理します。 ソースクラスターが認証を強制する場合、次のことを行います。
プライマリへの読み取りアクセスを許可します。
オプションとともに
mongorestore
--oplogReplay
admin
を使用する場合は、config
が作成する ディレクトリからdump
mongodump
ディレクトリと ディレクトリを削除する必要があります。admin
ディレクトリとconfig
ディレクトリには、mongorestore
を使用して Atlas クラスターに追加できないデータベースユーザー情報が含まれています。admin.system.*
名前空間を除外するには、mongorestore
--nsExclude
を使用します。
既存のユーザーまたはロール情報を Atlas に移行することはできません。 宛先 Atlas クラスターには、アプリケーションの使用パターンをサポートするための適切なデータベースユーザーを作成します。 新しいデータベースユーザーを使用するには、カットオーバー手順の一部としてアプリケーションをアップデートします。 詳細については、 「データベースユーザーの設定」 を参照してください。
パフォーマンス
この手順では、ソースクラスター内のホストでmongodump
とmongorestore
を実行する必要があります。 これらのプログラムは CPU やメモリなどのシステム リソースを使用するため、ホストのパフォーマンスに影響を与える可能性があります。
この手順は、ピーク以外のシステム使用中に、またはスケジュールされたメンテナンスウィンドウ中に実行します。 ソースがレプリカセットである場合は、セカンダリノードのホストからこの手順を実行できます。 クラスターへの書き込みを停止した後、この手順を開始する前に、セカンダリがプライマリに追いつくようにします。
パイプの動作
この手順では、 Linux パイプ を使用します。mongodump
mongorestore
の出力を にストリーミングします。mongorestore
プロセスがmongodump
プロセスに追いつけない場合、パイプライン エラーが発生する可能性があります。
永続的な壊れたパイプエラーへの対処に関するガイダンスは、Atlas サポートにお問い合わせください。
Atlas で、Project Support ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
Projects メニューの横にある Options メニューをクリックし、 Project Support をクリックします。
プロジェクト サポートページが表示されます。
手順
次のチュートリアルでは、 mongodump
とmongorestore
を使用して、既存の MongoDB クラスターから Atlas クラスターにデータをアップロードします。
ソース レプリカセットにデータベースユーザーを作成します。
重要
任意
ソースクラスターが認証を強制しない場合は、このステップをスキップします。
ソース配置で認証が強制される場合は、この手順の一部として任意のデータベースを読み取る権限を持つデータベースユーザーに提供する必要があります。 データベースユーザーの特権の詳細については、「 MongoDB のロールベースのアクセス制御 」を参照してください。
そのようなユーザーが存在しない場合は、 admin
データベースのバックアップロールを持つソース MongoDB レプリカセットにユーザーを作成します。
例
mongosh
で次のコマンドを実行して、 admin
データベースにmySourceUser
を作成し、それにbackup
ロールを割り当てます。 レプリカセットの場合は、プライマリ に対してこのコマンドを実行する必要があります。
use admin db.createUser( { user: "<mySourceUser>", pwd: "<mySourcePassword>", roles: [ "backup" ] } )
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 で、 Organization Access Manager ページに移動します。
まだ表示されていない場合は、以下から目的の組織を選択しますナビゲーション バーのOrganizationsメニュー
次のいずれかの手順を行います。
ナビゲーション バーのAccess ManagerメニューからOrganization Accessを選択します。
サイドバーの Access Manager をクリックします。
[ Organization Access Manager ]ページが表示されます。
Add New Database User をクリックします。
Atlas admin ユーザーを追加します。
ユーザー管理の詳細については、「データベースユーザーの構成 」を参照してください。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの [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 にアプリケーションを接続する方法については、「ドライバー経由で接続 」を参照してください。