このトピックでは、データのバックアップと復元のためにMongoDBに構築されているmongodumpとmongorestoreを使用して、MongoDB AtlasデータベースをApsaraDB for MongoDBに移行する方法について説明します。 オンプレミスサーバーまたはECSインスタンスにmongodumpとmongorestoreを直接インストール (またはMongoDB Atlasデータベースを作成) して、MongoDB AtlasデータベースからApsaraDB for MongoDBインスタンスにデータを移行できます。
次の例では、オンプレミスサーバーを使用します。
注意事項
mongodumpとmongorestoreがインストールされ、それらのバージョンはMongoDB Atlasデータベースのデータベースバージョンと一致しています。 インストール手順の詳細については、MongoDB公式WebサイトのMongoDBのインストールをご参照ください。
ソースApsaraDB for MongoDBインスタンスとターゲットApsaraDB for MongoDBインスタンスのバージョンまたはストレージエンジンが異なる場合は、バージョンまたはストレージエンジンに互換性があることを確認してください。 詳細については、「MongoDBのバージョンとストレージエンジン」をご参照ください。
このプロセスは完全なデータ移行です。 データの一貫性を確保するために、データを移行する前にソースデータベースにデータを書き込まないことをお勧めします。
mongodump
コマンドを実行すると、ダンプフォルダ内の履歴バックアップファイルが上書きされます。 mongodumpコマンドを使用してMongoDB Atlasデータベースをバックアップした場合は、dumpフォルダ内のバックアップファイルを別のディレクトリに移動し、dumpフォルダが空であることを確認します。サーバーでmongodumpコマンドとmongorestoreコマンドを実行します。 これらのコマンドはmongoシェルでは実行しないでください。
データベースアカウントに必要な権限
データベース | アカウント権限 |
ソースMongoDB Atlasデータベース | ソースデータベースの読み取り権限 |
同期先の ApsaraDB for MongoDB インスタンス | ターゲットデータベースの読み取りおよび書き込み権限 |
始める前に
ApsaraDB for MongoDB インスタンスを作成します。 詳細は、レプリカセットインスタンスの作成 または シャードクラスターインスタンスの作成 をご参照ください。
説明ApsaraDB for MongoDBインスタンスのストレージ容量は、MongoDB Atlasデータベースのストレージ容量よりも大きい必要があります。
ApsaraDB for MongoDBのシャードクラスターインスタンスにデータを移行する場合は、データを保存するようにシャーディングを設定することを推奨します。 詳細は、シャードのパフォーマンスを最大化するためのシャーディングの構成 をご参照ください。
ApsaraDB for MongoDBインスタンスのrootユーザーのパスワードを設定します。 詳細については、「ApsaraDB For MongoDBインスタンスのアカウントのパスワードのリセット」をご参照ください。
説明インスタンスの作成時にパスワードを設定した場合は、この手順をスキップしてください。
オンプレミスサーバーの場合:
MongoDBデータベースをインストールします。 詳細は、MongoDB のインストールをご参照ください。
説明このサーバーは、データのバックアップと復元の両方で仲介の役割を果たします。 移行が完了すると、サーバーは不要になります。
バックアップディレクトリが配置されているパーティションの使用可能なストレージスペースは、ソースMongoDB Atlasデータベースの占有ストレージスペースよりも大きくなければなりません。
オンプレミスサーバーのパブリックIPアドレスをApsaraDB for MongoDBインスタンスのホワイトリストに追加します。 詳細については、「ApsaraDB For MongoDBインスタンスのIPアドレスホワイトリストの変更」をご参照ください。
手順
MongoDB Atlas コンソールにログインします。
MongoDB AtlasデータベースのホワイトリストにオンプレミスサーバーのパブリックIPアドレスを追加します。
[クラスター] ページで、対象のクラスターを見つけ、その名前をクリックします。
コマンドラインツールタブで、mongodumpコマンドの横にあるCOPYをクリックして、このコマンドをソースMongoDB Atlasデータベースの接続情報とともにコピーします。
オンプレミスサーバーで、ソースMongoDB Atlasデータベースをバックアップします。
オンプレミスサーバーで、ソースMongoDB Atlasデータベースの接続情報を含むmongodumpコマンドを貼り付けます。
<PASSWORD> を指定されたユーザーのパスワードに置き換え、<DATABASE> をソースMongoDB Atlasデータベースの名前に置き換えます。
このコマンドを実行し、データのバックアップが完了するまで待ちます。
ApsaraDB for MongoDBコンソールにログインして、ApsaraDB for MongoDBインスタンスのパブリックエンドポイントを取得します。
ApsaraDB for MongoDBのレプリカセットインスタンスにデータを移行する場合は、プライマリノードのパブリックエンドポイントを取得します。 詳細については、「レプリカセットインスタンス接続の概要」をご参照ください。
ApsaraDB for MongoDBのシャードクラスターインスタンスにデータを移行する場合は、mongosのパブリックエンドポイントを取得します。 詳細については、「シャードクラスターインスタンス接続の概要」をご参照ください。
説明インターネットエンドポイントを取得するには、そのための申請が必要です。 詳細については、「シャードクラスターインスタンスのパブリックエンドポイントの申請」をご参照ください。
サーバーで、次のコマンドを実行して、バックアップファイルをApsaraDB for MongoDBインスタンスにインポートします。
mongorestore -- host <mongodb_host>:3717 -- authenticationDatabase admin -u <username> -d <database> <database_backupfile_directory>
説明<mongodb_host>: ApsaraDB for MongoDBのレプリカセットインスタンスのプライマリノードのパブリックエンドポイント、またはApsaraDB for MongoDBのシャードクラスターインスタンスのmongosのパブリックエンドポイント。
<username>: ApsaraDB for MongoDBインスタンスへのログインに使用されるアカウント。 このトピックの例では、テストアカウントが使用されています。
<database>: 復元するソースデータベース。 バックアップファイルに複数のデータベースのデータが含まれている場合は、この手順を繰り返してすべてのデータベースを復元します。
<database_backupfile_directory>: バックアップファイルのディレクトリ。
例:
mongodbtestデータベースにデータを復元します。
mongorestore -- host dds-bp *********** -pub.mongodb.rds.aliyuncs.com:3717 -- authenticationDatabase admin -u test -d mongodbtest /dump/mongodbtest
test123データベースにデータを復元します。
mongorestore -- host dds-bp *********** -pub.mongodb.rds.aliyuncs.com:3717 -- authenticationDatabase admin -u test -d test123 /dump/test123
Enter password:
が表示されたら、ApsaraDB for MongoDBインスタンスユーザーのパスワードを入力し、enterキーを押します。
データの復元が完了すると、ソースMongoDB AtlasデータベースのデータがターゲットApsaraDB for MongoDBインスタンスに移行されます。