このトピックでは、Data Transmission Service (DTS) を使用して、シャードクラスタアーキテクチャを使用する自己管理型MongoDBデータベースをApsaraDB for MongoDBシャードクラスタインスタンスに移行する方法について説明します。 DTSを使用すると、サービスを中断することなく、オンプレミスデータベースの既存および増分データをAlibaba Cloudに移行できます。
データ移行および同期ソリューションの詳細については、「概要」をご参照ください。
前提条件
ソースおよびターゲットMongoDBデータベースのバージョンは、DTSでサポートされています。 詳細については、「データ移行シナリオの概要」をご参照ください。
ターゲットシャードクラスターインスタンスの各シャードには、十分なストレージスペースがあります。
説明たとえば、自己管理型MongoDBデータベースには3つのシャードがあり、そのうちの1つは最大500 GBのストレージ容量を占有します。 この場合、ターゲットインスタンスの各シャードのストレージスペースは500 GBを超える必要があります。
制御ポリシー機能の動作
DTSは、データベース内の各シャードを移行することにより、自己管理型MongoDBデータベースを移行します。 シャードごとにデータ移行タスクを作成する必要があります。
移行先ApsaraDB for MongoDBインスタンスでの移行データの配布は、指定したシャードキーに基づいて行われます。 詳細は、シャードのパフォーマンスを最大化するためのシャーディングの構成 をご参照ください。
使用上の注意
DTSは、完全データ移行中にソースデータベースとターゲットデータベースのリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 大量のデータを移行したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。
ソースとターゲットのMongoDBデータベースが異なるバージョンのMongoDBを実行している場合、または異なるストレージエンジンを使用している場合は、MongoDBバージョンまたはストレージエンジンに互換性があることを確認してください。 詳細については、「MongoDBのバージョンとストレージエンジン」をご参照ください。
データは、同時に宛先データベースに書き込まれる。 したがって、移行先データベースで占有されるストレージスペースは、移行元データベースのデータのサイズよりも大きく10% 5% があります。
ターゲットApsaraDB for MongoDBインスタンスに、ソースデータベースのプライマリキーと同じプライマリキーがないことを確認します。 デフォルトの主キーは_idです。 データが失われる可能性があります。 ターゲットインスタンスにソースデータベースのプライマリキーと同じプライマリキーがある場合は、ビジネスに影響を与えずに、ターゲットインスタンスの_idプライマリキーに対応する同じドキュメントをソースデータベースのプライマリキーと削除します。
管理者データベースまたはローカルデータベースは、ソースデータベースまたはターゲットデータベースとして使用されません。
シャードクラスタアーキテクチャを使用するソースMongoDBデータベース内のmongosノードの数は10を超えることはできません。
課金
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
フルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、次をご参照ください: データ伝送サービスの価格。 |
増分データ移行 | 有料。 詳細については、次をご参照ください: . データ伝送サービスの価格。 |
移行タイプ
フルデータ移行: DTSは、ソースMongoDBデータベース内のオブジェクトの既存のすべてのデータを、ターゲットMongoDBデータベースに移行します。
説明DTSは、データベース、コレクション、およびインデックスのタイプのオブジェクトを移行できます。
増分データ移行: 完全データ移行が完了すると、DTSは移行元MongoDBデータベースの増分データを移行先MongoDBデータベースに移行します。
説明DTSは、データベース、コレクション、およびインデックスに対して実行される作成および削除操作を移行できます。
DTSは、ドキュメントに対して実行される作成、削除、および更新操作を移行できます。
データベースアカウントに必要な権限
データベース | 完全なデータ移行 | 増分データ移行 |
自己管理型 MongoDB データベース | ソースデータベースの読み取り権限 | ソースデータベース、管理者データベース、およびローカルデータベースの読み取り権限 |
ApsaraDB for MongoDB インスタンス | ターゲットデータベースの読み取りおよび書き込み権限 | ターゲットデータベースの読み取りおよび書き込み権限 |
データベースアカウントを作成し、データベースアカウントに権限を付与する方法の詳細については、以下のトピックを参照してください。
自己管理型MongoDBデータベース: db.createUser()
ApsaraDB for MongoDBインスタンス: MongoDBデータベースのユーザー権限の管理
準備
必須: 自己管理型MongoDBデータベースのbalancerを無効にします。 これにより、チャンクの移行がデータの一貫性に与える影響を防ぎます。 詳細については、「ApsaraDB For MongoDBバランサーの管理」をご参照ください。
警告balancerが無効になっていない場合、チャンクの移行はDTSによって読み取られるデータの一貫性に影響します。
チャンク移行の失敗により生成された孤立したドキュメントを、自己管理型MongoDBデータベースから削除します。
説明孤立したドキュメントを削除しないと、移行のパフォーマンスが低下します。 また、
_id
の値が重複しているドキュメントがあり、移行しないデータが移行される場合があります。cleanupOrphaned.jsファイルをダウンロードします。
wget " https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js "
cleanupOrphaned.jsファイルの
test
を、孤立したドキュメントを削除するデータベースの名前に置き換えます。説明複数のデータベースから孤立したドキュメントを削除する場合は、手順2のサブステップbとサブステップcを繰り返します。
シャードで次のコマンドを実行して、指定したデータベース内のすべてのコレクションから孤立したドキュメントを削除します。
説明各シャードでこの手順を繰り返す必要があります。
mongo -- host <Shardhost> -- port <Primaryport> -- authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
説明<Shardhost>: シャードのIPアドレス。
<Primaryport>: シャード内のプライマリノードのサービスポート。
<database>: データベースアカウントが属するデータベースの名前。
<username>: 自己管理型MongoDBデータベースへのログインに使用されるアカウント。
<password>: 自己管理型MongoDBデータベースへのログインに使用されるパスワード。
例:
この例では、自己管理型MongoDBデータベースに3つのシャードがあり、各シャードの孤立したドキュメントを削除する必要があります。
mongo -- host 172.16.1.10 -- ポート27018 -- authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
mongo -- host 172.16.1.11 -- ポート27021 -- authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
mongo -- host 172.16.1.12 -- ポート27024 -- authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
ターゲットApsaraDB for MongoDBインスタンスでシャードするデータベースとコレクションを作成し、ビジネス要件に基づいてデータシャードを設定します。 詳細は、シャードのパフォーマンスを最大化するためのシャーディングの構成 をご参照ください。
説明データ移行を開始する前にデータシャーディングを設定した場合、自己管理型MongoDBデータベース内のデータは、ターゲットシャードクラスターインスタンス内のシャードに均等に移行されます。 これにより、単一のシャードの過負荷が防止されます。
手順
DTS コンソール にログインします。
左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、ターゲットApsaraDB for MongoDBインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
データ移行タスクのソースデータベースとターゲットデータベースを設定します。
セクション
設定
説明
N/A
タスク名
DTSが自動的に生成するタスク名。 簡単に識別できるように、ビジネス要件を示す名前を指定することを推奨します。 一意の名前を使用する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのインスタンスタイプ。 この例では、パブリックIPアドレスを持つユーザー作成データベースが選択されています。
説明他のインスタンスタイプを選択した場合、自己管理データベースのネットワーク環境をデプロイする必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
インスタンスタイプとして [パブリックIPアドレスを持つユーザー作成データベース] を選択した場合、[インスタンスリージョン] パラメーターを設定する必要はありません。
説明自己管理型MongoDBデータベースにホワイトリストが設定されている場合は、DTSサーバーのCIDRブロックをホワイトリストに追加する必要があります。 [インスタンスリージョン] の横にある [DTS IP を取得する] をクリックして、DTS サーバーの CIDR ブロックを取得します。
データベースエンジン
移行元ディスクのタイプを設定します。 MongoDB を選択します。
Hostname or IP Address
自己管理型MongoDBデータベース内のシャードのエンドポイントまたはIPアドレス。 この例では、シャードのパブリックIPアドレスが使用されます。
説明DTSは、クラスター全体が移行されるまで、ソースデータベースの各シャードを移行します。 この例では、最初のシャードのエンドポイントまたはIPアドレスを入力します。 2番目の移行タスクを設定するときに、2番目のシャードのエンドポイントまたはIPアドレスを入力します。 すべてのシャードが移行されるまで、この手順を繰り返す必要があります。
ポート番号
シャードのサービスポート番号。
説明この例では、自己管理MongoDBデータベース内の各シャードのサービスポートにインターネット経由でアクセスできる必要があります。
データベース名
認証データベースの名前。 このデータベースにデータベースアカウントが作成されます。
データベースアカウント
自己管理型MongoDBデータベースへのログインに使用されるアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が正しい場合は、[合格] メッセージが表示されます。 情報が正しくない場合、[失敗] メッセージが表示され、[失敗] メッセージの横にある [確認] をクリックして情報を変更する必要があります。
暗号化
データベースへの接続を暗号化するかどうかを指定します。 この例では、[非暗号化] が選択されています。
説明MongoDB Atlasからデータを移行する場合にのみ、SSL暗号化を選択できます。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのインスタンスタイプ。 MongoDB インスタンス を選択します。
インスタンスリージョン
ターゲットApsaraDB for MongoDBインスタンスが存在するリージョン。
MongoDB インスタンス ID
ターゲットシャードクラスターインスタンスのID。
データベース名
認証データベースの名前。 このデータベースにデータベースアカウントが作成されます。
データベースアカウント
ターゲットApsaraDB for MongoDBインスタンスのデータベースアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ターゲットインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が正しいかどうかを確認できます。 情報が正しい場合は、[合格] メッセージが表示されます。 情報が正しくない場合、[失敗] メッセージが表示され、[失敗] メッセージの横にある [確認] をクリックして情報を変更する必要があります。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
、ソースまたはターゲットのデータベースインスタンスが、ApsaraDB RDS for MySQLまたはApsaraDB for MongoDBインスタンスなどのAlibaba Cloudデータベースインスタンスである場合、またはECSでホストされている自己管理型データベースである場合、DTSサーバーのCIDRブロックがデータベースインスタンスまたはECSセキュリティグループルールのホワイトリストに自動的に追加されます。 ソースデータベースまたはターゲットデータベースがデータセンター上の自己管理データベースである場合、または他のクラウドサービスプロバイダーからのデータベースである場合、DTSサーバーのCIDRブロックを手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」トピックの「DTSサーバーのCIDRブロック」をご参照ください。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行タイプと移行するオブジェクトを選択します。
設定
説明
移行タイプの選択
フルデータ移行のみを実行するには、[フルデータ移行] のみを選択します。
データ移行中のサービスの継続性を確保するには、[フルデータ移行] および [増分データ移行] を選択します。
説明増分データ移行が選択されていない場合、フルデータ移行中に自己管理型MongoDBデータベースにデータを書き込まないことを推奨します。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択します。 アイコンをクリックし、[選択済みオブジェクト] セクションにオブジェクトを追加します。
説明DTSは、admin、local、またはconfigデータベースからデータを移行できません。
移行するオブジェクトとして、データベース、コレクション、または関数を選択できます。
デフォルトでは、オブジェクトがターゲットインスタンスに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細については、次をご参照ください: オブジェクト名マッピング
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
ソースデータベースまたはターゲットデータベースへの接続が失敗した場合のリトライ時間範囲の指定
デフォルトでは、DTSがソースデータベースとターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明DTSがソースデータベースとターゲットデータベースへの再接続を試行する再試行時間内に、DTSインスタンスの料金が請求されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
[事前チェック] をクリックします。
説明移行タスクが開始される前にプリチェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
事前チェックが失敗した場合は、失敗した各チェック項目の横にあるアイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
データ移行タスクが事前チェックに合格したら、[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[インスタンスクラス] パラメーターを指定し、[データ送信サービス (従量課金) サービス利用規約] を選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
残りのシャードのデータ移行タスクを作成するには、手順1〜11を繰り返します。
データ移行タスクを停止します。
フルデータ移行
フルデータ移行中は、タスクを手動で停止しないことをお勧めします。 そうしないと、ターゲットデータベースに移行されたデータは不完全になります。 フルデータ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
説明データ移行タスクを手動で停止する適切な時期を選択することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB For MongoDBインスタンスに切り替える前にタスクを停止できます。
増分データ移行と移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [移行タスクは遅延なし] に変更された後、すべてのシャードの移行タスクを手動で停止します。
ワークロードをターゲットApsaraDB for MongoDBインスタンスに切り替えます。