このトピックでは、データのバックアップと復元のためにMongoDBに構築されているmongodumpとmongorestoreを使用して、自己管理型MongoDBデータベースをApsaraDB for MongoDBに移行する方法について説明します。 自己管理型MongoDBデータベースをオンプレミスサーバーまたはECSインスタンスにインストールし、mongodumpとmongorestoreを使用してこれらのデータベースをApsaraDB for MongoDBシャードクラスターインスタンスに移行できます。
背景情報
サービスの中断を回避するために、Data Transmission service (DTS) を使用して、自己管理シャードMongoDBデータベースをApsaraDB for MongoDBに移行することを推奨します。 詳細については、「シャードクラスターアーキテクチャを使用するセルフマネージド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: (オプション) データシャーディングの設定
データシャーディングが設定されていない場合、データはプライマリシャードにのみ書き込まれます。 他のシャードのストレージおよびコンピューティングリソースは使用されません。 詳細は、シャードのパフォーマンスを最大化するためのシャーディングの構成 をご参照ください。
データ移行の前に、ターゲットシャードクラスターインスタンスに必要なデータベースとコレクションを作成する必要があります。 ただし、データ移行の前または後に、データベースおよびコレクションのデータシャーディングを構成できます。
ステップ3: データを宛先シャードクラスタインスタンスに移行する
ターゲットシャードクラスターインスタンスのmongosのパブリックまたは内部接続文字列を取得します。 詳細については、「シャードクラスターインスタンス接続の概要」をご参照ください。
説明インターネットエンドポイントを取得するには、そのための申請が必要です。 詳細については、「シャードクラスターインスタンスのパブリックエンドポイントの申請」をご参照ください。
自己管理型MongoDBデータベースが存在するサーバーのIPアドレスを、ターゲットシャードクラスターインスタンスのホワイトリストに追加します。 詳細については、「ApsaraDB For MongoDBインスタンスのホワイトリストの設定」をご参照ください。
説明内部ネットワーク経由でシャードクラスターインスタンスに接続する場合は、セルフマネージドMongoDBデータベースが存在するECSインスタンスのプライベートIPアドレスをシャードクラスターインスタンスのホワイトリストに追加する必要があります。
インターネット経由でシャードクラスターインスタンスに接続する場合は、セルフマネージドMongoDBデータベースが存在するサーバーのパブリックIPアドレスをシャードクラスターインスタンスのホワイトリストに追加する必要があります。
自己管理型MongoDBデータベースが存在するサーバーで、次のコマンドを実行して、すべてのバックアップファイルをターゲットシャードクラスターインスタンスに復元します。
mongorestore -- host <Mongos_host> -u <username> -- authenticationDatabase <database> <バックアップディレクトリ>
説明<Mongos_host>: ApsaraDB for MongoDBインスタンス内の任意のmongosの接続文字列。
<username>: ターゲットシャードクラスターインスタンスのデータベースへのログインに使用されるアカウント。 初期アカウントはrootです。
<database>: 認証が有効になっている場合、ユーザー名に対応するデータベースの名前。 アカウントがrootの場合は、adminと入力します。
<Backup directory>: バックアップファイルが保存されているディレクトリ。 デフォルト値はdumpです。
以下にコードの例を示します。
データベースアカウントはtestで、データベースはadminです。
mongorestore -- ホストs-bp19f409d7512 **** -pub.mongodb.rds.aliyuncs.com:3717 -uテスト -- authenticationDatabase管理者ダンプ
Enter password:
が表示されたら、データベースユーザーのパスワードを入力してenterキーを押します。 データの復元動作が開始されます。説明パスワードを入力すると、パスワード文字がマスクされます。
データの復元が完了したら、ビジネスをターゲットシャードクラスターインスタンスに切り替えます。 ビジネスへの影響を最小限に抑えるため、オフピーク時に切り替えを実行することを推奨します。