このトピックでは、Data Transmission Service (DTS) を使用して、シャードクラスタアーキテクチャを使用するElastic Compute Service (ECS) ホスト型の自己管理型MongoDBデータベースをApsaraDB for MongoDBインスタンスに移行する方法について説明します。 DTSを使用すると、ビジネスを中断することなく履歴データと増分データを移行できます。
このトピックでは、以前のバージョンのDTSコンソールでデータ移行を実行する方法について説明します。 新しいバージョンのDTSコンソールでデータを移行する方法の詳細については、「シャードクラスターアーキテクチャを使用する自己管理型MongoDBデータベースからApsaraDB For MongoDBシャードクラスターインスタンスへのデータの移行」をご参照ください。
制御ポリシー機能の動作
DTSは、データベース内の各シャードを移行することにより、自己管理型MongoDBデータベースを移行します。 シャードごとにデータ移行タスクを作成する必要があります。
移行先ApsaraDB for MongoDBインスタンスでの移行データの配布は、指定したシャードキーに基づいて行われます。 詳細は、シャードのパフォーマンスを最大化するためのシャーディングの構成 をご参照ください。
前提条件
自己管理型MongoDBデータベースは、MongoDB 3.0以降を実行します。
ターゲットシャードクラスターインスタンスの各シャードには、十分なストレージスペースがあります。
説明たとえば、自己管理型MongoDBデータベースには3つのシャードがあり、そのうちの1つが最も多くのストレージ容量 (500 GB) を占有しています。 この場合、ApsaraDB for MongoDBインスタンスの各シャードのストレージスペースは500 GBを超える必要があります。
使用上の注意
DTSは、完全データ移行中にソースデータベースとターゲットデータベースのリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 大量のデータを移行したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。
ソースとターゲットのMongoDBデータベースが異なるバージョンのMongoDBを実行している場合、または異なるストレージエンジンを使用している場合は、MongoDBバージョンまたはストレージエンジンに互換性があることを確認してください。 詳細については、「MongoDBのバージョンとストレージエンジン」をご参照ください。
データは、同時に宛先データベースに書き込まれる。 したがって、移行先データベースで占有されるストレージスペースは、移行元データベースのデータのサイズよりも大きく10% 5% があります。
ターゲットApsaraDB for MongoDBインスタンスに、ソースデータベースのプライマリキーと同じプライマリキーがないことを確認します。 デフォルトの主キーは_idです。 データが失われる可能性があります。 ターゲットインスタンスにソースデータベースのプライマリキーと同じプライマリキーがある場合は、ビジネスに影響を与えずに、ターゲットインスタンスの_idプライマリキーに対応する同じドキュメントをソースデータベースのプライマリキーと削除します。
管理者データベースまたはローカルデータベースは、ソースデータベースまたはターゲットデータベースとして使用されません。
シャードクラスタアーキテクチャを使用するソースMongoDBデータベース内のmongosノードの数は10を超えることはできません。
課金
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
フルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、次をご参照ください: データ伝送サービスの価格。 |
増分データ移行 | 有料。 詳細については、次をご参照ください: . データ伝送サービスの価格。 |
移行タイプ
フルデータ移行: ソースMongoDBデータベース内のすべての既存のデータが、ターゲットMongoDBデータベースに移行されます。
説明DTSは、データベース、コレクション、およびインデックスのタイプのオブジェクトを移行できます。
増分データ移行: 完全データ移行が完了すると、DTSは移行元MongoDBデータベースの増分データを移行先MongoDBデータベースに移行します。
説明DTSは、データベース、コレクション、およびインデックスに対して実行される作成および削除操作を移行できます。
DTSは、ドキュメントに対して実行される作成、削除、および更新操作を移行できます。
データベースアカウントに必要な権限
データベース | 完全なデータ移行 | 増分データ移行 |
ECSでホストされる自己管理型MongoDBデータベース | ソースデータベースの読み取り権限 | ソースデータベース、管理者データベース、およびローカルデータベースの読み取り権限 |
同期先の ApsaraDB for MongoDB インスタンス | ターゲットデータベースの読み取りおよび書き込み権限 | ターゲットデータベースの読み取りおよび書き込み権限 |
データベースアカウントを作成し、データベースアカウントに権限を付与する方法の詳細については、以下のトピックを参照してください。
ApsaraDB for MongoDBインスタンス: MongoDBデータベースのユーザー権限の管理
自己管理型MongoDBデータベース: db.createUser()
準備
ソースデータベースのbalancerを無効にし、孤立したドキュメントを削除します。 詳細については、「シャードクラスターアーキテクチャを使用するセルフマネージドMongoDBデータベースのDTSによるApsaraDB For MongoDBへの移行」をご参照ください。
手順
- 最初に DTSコンソール。
左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] セクションで、ApsaraDB for MongoDBインスタンスがデプロイされているリージョンを選択します。
ページの右上隅にある [タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
タスク名
-
タスク名は自動生成されます。 一意のタスク名を使用する必要はありません。
タスクの識別に役立つ名前を指定することをお勧めします。
移行元データベース
インスタンスタイプ
移行元ディスクのタイプを設定します。 [ECS インスタンスのユーザー作成データベース] を選択します。
インスタンスリージョン
ECSインスタンスがデプロイされているリージョン。
ECSインスタンスのID。
ECSインスタンスのID。 DTSは、ソースデータベースの各シャードを順番に移行します。 この例では、最初のシャードがデプロイされているECSインスタンスのIDを入力します。
2番目の移行タスクでは、2番目のシャードがデプロイされているECSインスタンスのIDを入力します。 すべてのシャードが移行されるまで、この手順を繰り返す必要があります。
データベースエンジン
ターゲットデータベースのタイプ。 MongoDB を選択します。
ポート番号
シャードのサービスポート。 この例では、最初のシャードのサービスポートを入力します。
2番目の移行タスクでは、2番目のシャードのサービスポートを入力します。 すべてのシャードが移行されるまで、この手順を繰り返す必要があります。
データベース名
認証に使用されるデータベースの名前。
データベースアカウント
自己管理型MongoDBデータベースへの接続に使用されるアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
自己管理型MongoDBデータベースへの接続に使用されるデータベースアカウントのパスワード。
説明ソース自己管理データベースの情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 設定されたパラメーターが有効な場合、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 チェック結果に基づいてソースデータベースのパラメーターを変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのタイプ。 MongoDB インスタンス を選択します。
インスタンスリージョン
ターゲットApsaraDB for MongoDBインスタンスが存在するリージョン。
MongoDB インスタンス ID
ターゲットApsaraDB for MongoDBインスタンスのID。
データベース名
認証に使用されるデータベースの名前。
データベースアカウント
宛先データベースへの接続に使用されるアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
ターゲットデータベースへの接続に使用されるデータベースアカウントのパスワード。
説明ターゲットデータベースの情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 情報が無効な場合は、[失敗] メッセージが表示されます。 この場合、[失敗] メッセージの横にある [確認] をクリックして情報を変更する必要があります。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
説明Alibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQLインスタンスやApsaraDB for MongoDBインスタンスなど) およびECSホスト型自己管理型データベースのセキュリティ設定を変更する必要はありません。 DTSは、DTSサーバーのCIDRブロックをAlibaba CloudデータベースインスタンスのIPホワイトリストまたはECSインスタンスのセキュリティルールに自動的に追加します。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
データの送信元または送信先が自己管理データベースであり、DTSサーバーのパブリックCIDRブロックが自己管理データベースのIPホワイトリストに追加されてDTSサーバーからのアクセスが許可されている場合、セキュリティ上のリスクが発生する可能性があります。 アカウントとパスワードによる認証を強化するか、許可されているポートを制限するか、Express connect、VPN Gateway、またはSmart Access Gateway経由でデータベースに接続することを推奨します。
データ移行が完了したら、DTSサーバーのCIDRブロックをホワイトリストから削除することを推奨します。
移行タイプと移行するオブジェクトを選択します。
パラメーター
説明
移行タイプ
フルデータ移行のみを実行するには、[フルデータ移行] のみを選択します。
説明データの一貫性を確保するために、フルデータ移行中に自己管理型MongoDBデータベースに新しいデータを書き込まないでください。
データ移行中のサービスの継続性を確保するには、[フルデータ移行] と [増分データ移行] の両方を選択します。
ソースオブジェクト
[ソースオブジェクト] セクションから1つ以上のオブジェクトを選択し、アイコンをクリックして、オブジェクトを [選択済みオブジェクト] リストに追加します。
説明DTSは、adminまたはローカルデータベースからデータを移行できません。
config データベースは内部データベースです。 設定データベースからデータを移行しないことを推奨します。
移行オブジェクトは、データベース、コレクション、または関数です。
既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 DTSが提供するオブジェクト名マッピング機能を使用して、ターゲットデータベース内のオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
ページの右下に表示される [事前確認] をクリックします。
説明データ移行タスクを開始する前に、DTSは事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。
事前チェック中にアイテムに対してアラートが生成された場合は、シナリオに基づいて次の操作を実行します。
アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。
アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[インスタンスクラス] パラメーターを指定し、[データ送信サービス (従量課金) サービス規約] に同意するチェックボックスをオンにします。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
手順4から手順11を繰り返して、残りのシャードの移行タスクを作成します。
データ移行タスクを停止します。
フルデータ移行
フルデータ移行中は、タスクを手動で停止しないことをお勧めします。 そうしないと、ターゲットデータベースに移行されたデータは不完全になります。 フルデータ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
説明データ移行タスクを手動で停止する適切な時期を選択することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB For MongoDBインスタンスに切り替える前にタスクを停止できます。
増分データ移行と移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [移行タスクは遅延なし] に変更された後、すべてのシャードの移行タスクを手動で停止します。
ワークロードをターゲットApsaraDB for MongoDBインスタンスに切り替えます。