このトピックでは、データのバックアップと復元のためにMongoDBに構築されているmongodumpとmongorestoreを使用して、自己管理型MongoDBデータベースをApsaraDB for MongoDBに移行する方法について説明します。 mongodumpとmongorestoreをローカルサーバーまたはECSインスタンスにインストールし、mongodumpとmongorestoreを使用してこれらのデータベースをApsaraDB for MongoDBのレプリカセットインスタンスに移行できます。
サービスの中断を回避するために、DTSを使用してセルフマネージドMongoDBデータベースをAlibaba Cloudに移行することを推奨します。 詳細については、「レプリカセットアーキテクチャを使用するセルフマネージドMongoDBデータベースから、DTSを使用したApsaraDB For MongoDBへのデータの移行」をご参照ください。
データ移行および同期ソリューションの詳細については、「概要」をご参照ください。
前提条件
mongodumpとmongorestoreは、自己管理型MongoDBデータベースとは異なるサーバーにインストールされますが、データベースと同じバージョンで実行されます。 インストール手順の詳細については、MongoDB公式WebサイトのMongoDBのインストールをご参照ください。
説明mongodumpコマンドとmongorestoreコマンドは、自己管理型MongoDBデータベースが存在するサーバーで実行することもできます。
ターゲットレプリカセットインスタンスのストレージ容量が、自己管理型MongoDBデータベースの占有ストレージ容量よりも大きいこと。 ストレージ容量が不足している場合は、インスタンスをアップグレードできます。 詳細については、「概要」をご参照ください。
注意事項
これは完全なデータ移行です。 データの一貫性を確保するために、データを移行する前に、自己管理型MongoDBデータベースへのデータの書き込みを停止することを推奨します。
mongodumpコマンドを実行して自己管理型MongoDBデータベースをバックアップした場合は、dumpフォルダ内のバックアップファイルを別のディレクトリに移動し、dumpフォルダが空であることを確認します。 空でない場合は、次回データベースをバックアップするときに履歴バックアップファイルが上書きされます。
サーバーでmongodumpコマンドとmongorestoreコマンドを実行します。 これらのコマンドはmongoシェルでは実行しないでください。
ステップ1: 自己管理型MongoDBデータベースのバックアップ
自己管理MongoDBデータベースが存在するサーバーで、次のコマンドを実行してすべてのデータベースをバックアップします。
mongodump -- host <mongodb_host> -- port <port> -u <username> -- authenticationDatabase <database>
説明<mongodb_host>: 自己管理MongoDBデータベースが存在するサーバーのアドレス。 この場合、127.0.0.1と入力します。
<port>: 自己管理MongoDBデータベースのサービスポート。 デフォルト値は27017です。
<username>: 自己管理型MongoDBデータベースへのログインに使用されるアカウント。 このトピックの例では、テストアカウントが使用されています。
<database>: 認証が有効になっている場合、ユーザー名に対応するデータベースの名前。
例:
mongodump -- host 127.0.0.1 -- ポート27017 -uテスト -- authenticationDatabase admin
Enter password:
が表示されたら、データベースユーザーのパスワードを入力してenterキーを押します。 データのバックアップ操作が開始されます。説明パスワードを入力すると、パスワード文字がマスクされます。
データのバックアップが完了するまで待ちます。 自己管理型MongoDBデータベースのデータは、このコマンドを実行したディレクトリのdumpフォルダにバックアップされます。
手順2: 宛先レプリカセットインスタンスへのデータの移行
ターゲットレプリカセットインスタンスのプライマリノードのパブリックまたは内部接続文字列を取得します。 詳細については、「レプリカセットインスタンス接続の概要」をご参照ください。
説明インターネットエンドポイントを取得するには、そのための申請が必要です。 詳細については、「シャードクラスターインスタンスのパブリックエンドポイントの申請」をご参照ください。
自己管理型MongoDBデータベースが存在するサーバーのIPアドレスを、ターゲットレプリカセットインスタンスのホワイトリストに追加します。 詳細については、「レプリカセットインスタンスのホワイトリストの設定」をご参照ください。
説明内部ネットワーク経由でレプリカセットインスタンスに接続する場合は、自己管理型MongoDBデータベースが存在するECSインスタンスのプライベートIPアドレスをレプリカセットインスタンスのホワイトリストに追加する必要があります。
インターネット経由でレプリカセットインスタンスに接続する場合は、自己管理型MongoDBデータベースが存在するサーバーのパブリックIPアドレスをレプリカセットインスタンスのホワイトリストに追加する必要があります。
自己管理型MongoDBデータベースが存在するサーバーで、次のコマンドを実行して、すべてのバックアップファイルをコピー先のレプリカセットインスタンスに復元します。
mongorestore -- host <Primary_host> -u <username> -- authenticationDatabase <database> <バックアップディレクトリ>
説明<Primary_host>: 宛先レプリカセットインスタンスのプライマリノードの接続文字列。
<username>: ターゲットレプリカセットインスタンスのデータベースへのログインに使用されるアカウント。 初期アカウントはrootです。
<database>: 認証が有効になっている場合、ユーザー名に対応するデータベースの名前。 ユーザー名がrootの場合は、adminと入力します。
<Backup directory>: バックアップファイルが保存されているディレクトリ。 デフォルト値はdumpです。
例:
データベースアカウントはtestで、データベースはadminです。
mongorestore -- ホストdds-bp19f409d7512 **** -pub.mongodb.rds.aliyuncs.com:3717 -uテスト -- authenticationDatabase管理者ダンプ
Enter password:
が表示されたら、データベースアカウントのパスワードを入力してenterキーを押します。 データの復元動作が開始されます。説明パスワードを入力すると、パスワード文字がマスクされます。
データの復元が完了したら、ビジネスを移行先のレプリカセットインスタンスに切り替えます。 ビジネスへの影響を最小限に抑えるため、オフピーク時に切り替えを実行することをお勧めします。