mongodump と mongorestore を使用して、MongoDB Atlas データベースから ApsaraDB for MongoDB インスタンスへ完全なオフライン移行を実行します。オンプレミスサーバーまたは Elastic Compute Service (ECS) インスタンスが中継サーバーとして機能し、移行後は不要になります。
前提条件
開始する前に、以下を確認してください。
ApsaraDB for MongoDB インスタンス (レプリカセットまたはシャードクラスター)。詳細については、「レプリカセットインスタンスの作成」または「シャードクラスターインスタンスの作成」をご参照ください。
ApsaraDB for MongoDB インスタンスのストレージ容量が、MongoDB Atlas データベースサイズよりも大きいこと。
ApsaraDB for MongoDB インスタンスにルートユーザーパスワードが設定されていること。詳細については、「ApsaraDB for MongoDB インスタンスのアカウントパスワードのリセット」をご参照ください。
中継サーバーに MongoDB データベースツール (mongodump と mongorestore) がインストールされていること。ツールバージョンは、MongoDB Atlas データベースバージョンと一致している必要があります。詳細については、「MongoDB のインストール」をご参照ください。
中継サーバーに、ダンプファイル (ソースデータベースサイズよりも大きい) を保存するのに十分な空きディスク領域があること。
中継サーバーのパブリック IP アドレスが、ApsaraDB for MongoDB インスタンスのホワイトリストに追加されていること。詳細については、「ApsaraDB for MongoDB インスタンスのホワイトリストの設定」をご参照ください。
(シャードクラスターのみ) シャードのパフォーマンスを最大化するために、宛先インスタンスでシャーディングが設定されていること。詳細については、「シャードのパフォーマンスを最大化するためのシャーディングの設定」をご参照ください。
必要な権限
| データベース | 必要な権限 |
|---|---|
| ソース MongoDB Atlas データベース | 読み取り |
| 宛先 ApsaraDB for MongoDB インスタンス | 読み取りおよび書き込み |
注意事項
これは完全なデータ移行です。データの一貫性を保つため、移行前にソースデータベースへのすべての書き込みを停止してください。
ソース MongoDB Atlas データベースと宛先 ApsaraDB for MongoDB インスタンスが異なる MongoDB バージョンまたはストレージエンジンを使用している場合は、まず互換性を確認してください。詳細については、「MongoDB のバージョンとストレージエンジン」をご参照ください。
mongodumpを実行すると、dumpフォルダ内の既存のファイルが上書きされます。コマンドを実行する前に、以前のバックアップファイルを別のディレクトリに移動してください。mongodump と mongorestore は、サーバーのコマンドラインで実行してください。MongoDB シェル (mongosh) 内では実行しないでください。
ステップ 1: MongoDB Atlas からのデータのエクスポート
MongoDB Atlas コンソールにログインします。
中継サーバーのパブリック IP アドレスを MongoDB Atlas データベースの IP アクセスリストに追加します。

[クラスター] ページで、対象のクラスターの名前をクリックします。

[コマンドラインツール] タブをクリックし、mongodump コマンドの横にある [コピー] をクリックして接続文字列をコピーします。

中継サーバーで、コピーしたコマンドを貼り付け、プレースホルダーを置き換えます。
<PASSWORD>をデータベースユーザーパスワードに置き換えます。<DATABASE>をエクスポートするデータベースの名前に置き換えます。
コマンドを実行し、エクスポートが完了するまで待ちます。
ステップ 2: ApsaraDB for MongoDB へのデータのインポート
ApsaraDB for MongoDB コンソールにログインし、宛先インスタンスのパブリックエンドポイントを取得します。 > 注: パブリックエンドポイントが割り当てられていない場合は、まずパブリックエンドポイントを申請してください。詳細については、「パブリックエンドポイントの申請」をご参照ください。
レプリカセットインスタンス: プライマリノードのパブリックエンドポイントを取得します。詳細については、「レプリカセットインスタンス接続の概要」をご参照ください。
シャードクラスターインスタンス: Mongos のパブリックエンドポイントを取得します。詳細については、「シャードクラスターインスタンス接続の概要」をご参照ください。
中継サーバーで、次の mongorestore コマンドを実行します。 > 注: ApsaraDB for MongoDB はデフォルトでポート 3717 を使用します。これは標準の MongoDB ポート 27017 とは異なります。
パラメーター 説明 <mongodb_host>ApsaraDB for MongoDB インスタンスのプライマリノード (レプリカセット) または Mongos (シャードクラスター) のパブリックエンドポイント <username>ApsaraDB for MongoDB インスタンスにログインするために使用するアカウント <database>復元するデータベースの名前。ダンプに複数のデータベースが含まれている場合は、データベースごとにこのコマンドを 1 回実行します。 <database_backupfile_directory>データベースのバックアップファイルへのパス mongorestore --host <mongodb_host>:3717 --authenticationDatabase admin -u <username> -d <database> <database_backupfile_directory>Enter password:が表示されたら、ApsaraDB for MongoDB アカウントのパスワードを入力し、Enter キーを押します。
例
mongodbtest データベースを復元します。
mongorestore --host dds-bp**********-pub.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u test -d mongodbtest /dump/mongodbtesttest123 データベースを復元します。
mongorestore --host dds-bp**********-pub.mongodb.rds.aliyuncs.com:3717 --authenticationDatabase admin -u test -d test123 /dump/test123移行の検証
mongorestore の完了後、データが正常に移行されたことを確認します。
mongosh または DMS コンソールを使用して、ApsaraDB for MongoDB インスタンスに接続します。
次のコマンドを実行して、すべてのデータベースをリストし、移行されたデータベースが存在することを確認します。
show dbs移行されたデータベースに切り替え、ドキュメント数をチェックします。
use <database> db.stats()ドキュメント数をソース MongoDB Atlas データベースと比較して、すべてのデータが転送されたことを確認します。