DTS を使用してデータを移行するとき、オンプレミスデータベースから直接データを移行することはできません。 ただし、データベースの各シャードからクラウドにデータを移行することはできます。 DTS の増分移行機能を使用すると、ローカルアプリケーションサービスを停止することなくデータをクラウドに移行できます。
前提条件
- オンプレミスデータベースの各シャードには、パブリック IP アドレスまたはパブリックネットワークに対して開かれているポートがあります。
- オンプレミスデータベースは、データベースバージョン 3.0、3.2、3.4、および 3.6 をサポートします。 MongoDB 4.0 はサポートされていません。
注 MongoDB 4.0 におけるデータ移行についての詳細は、MongoDB の組み込みコマンドを使用したデータの移行をご参照ください。
- ApsaraDB for MongoDB インスタンスのストレージスペースは、オンプレミスデータベースのストレージスペースより大きくする必要があります。
注意事項
- admin データベースのデータは、移行できません。
- 構成データベースは内部データベースです。 必要でない場合は、構成データベースからデータを移行しないでください。
- ApsaraDB for MongoDB は、データベースバージョン 3.4 および 4.0 をサポートします。
- ビジネスへの悪影響を避けるために、オフピーク時にデータ移行を実行するようお勧めします。
データ移行に対する請求
移行タイプ | リンク構成に対する請求 | パブリックトラフィックに対する請求 |
---|---|---|
フルデータ移行 | 無料 | 無料 |
増分データ移行 | 支払済み。 詳細は、 DTS の料金表をご参照ください。 | 無料 |
移行タイプの説明
- フルデータ移行:オンプレミスデータベース内の既存のデータはすべて、ApsaraDB for MongoDB インスタンスに移行されます。 以下ようなの移行タイプがサポートされます。
- データベースの移行
- コレクションの移行
- インデックスの移行
- 増分データ移行:オンプレミスデータベースで更新されるデータは、ApsaraDB for MongoDB インスタンスに増分的に同期されます。 以下の更新操作が同期されます。
- データベースに対する作成と削除
- ドキュメントに対する作成、削除、および更新
- コレクションに対する作成と削除
- インデックスに対する作成と削除
データ移行のための権限要件
インスタンスタイプ | フルデータ移行 | 増分データ移行 |
---|---|---|
ローカル MongoDB インスタンス | 読み取り権限 |
|
ApsaraDB for MongoDB インスタンス | 読み書き権限 | 読み書き権限 |
移行する前に
ビジネスへの悪影響を避けるために、データ移行の実行はオフピーク時にします。
- オンプレミスデータベースの Balancer を無効にします。 詳細は、MongoDB のシャードクラスタ Balancer の無効化をご参照ください。
- オンプレミスデータベース内のブロック移行の失敗で生成した孤立ファイルをクリーンアップします。 詳細は、 CleanupOrphaned をご参照ください。
例:
とある shard ノードにある test データベースの user コレクションからすべての孤立ファイルをクリーンアップします。
var nextKey = { }; var result; while ( nextKey ! = null ) { result = db.adminCommand( { cleanupOrphaned: "test.user", startingFromKey: nextKey } ); if (result.ok ! = 1) print("Unable to complete at this time: failure or timeout.") printjson(result); nextKey = result.stoppedAtKey; }
注- 各シャードに対してこの操作を実行する必要があります。
- 孤立ファイルが残っていると、移行されたファイル間で ID の競合が発生し、移行のパフォーマンスに影響をもたらす可能性があります。
- ビジネスニーズに応じてデータシャードを構成します。 詳細は、 データシャードの構成 (オプション)をご参照ください。
注 移行する前に、データシャードを構成するためのデータベースとコレクションを作成できます。 データシャードの構成は移行後にすることもできます。
移行手順
- データ転送サービスコンソールにログインします。
- 左側のナビゲーションウィンドウで、データ移行 をクリックします。
- データ移行ページの右上隅で、移行タスクの作成をクリックします。
- ソースデータベース と ターゲットデータベースのパラメータを構成します。
ソース/ターゲットデータベースのパラメータ タスク名 - DTS は各タスクのタスク名を自動的に生成します。 タスク名は一意である必要はありません。
- 必要に応じてタスク名を変更できます。 後でタスクを簡単に識別できるように、適切なタスク名を選択することをお勧めします。
ソースデータベース - インスタンスタイプ:オンプレミスデータベースを選択します。
- インスタンスリージョン: ソース MongoDB データベースが存在しているリージョンを選択します。
- データベースエンジン:MongoDB を選択します。
- ホスト名または IP アドレス:単一シャードのドメイン名または IP アドレス。
注 DTS は、シャードクラスターインスタンス内のすべてのシャードからデータを順番に移行します。 最初のシャードのドメイン名または IP アドレスを入力します。 後で 2 番目の移行タスクを作成するときに、2 番目のシャードのドメイン名または IP アドレスを入力します。 すべてのシャードが移行されるまで上記を繰り返します。
- データベース名:ソース MongoDB データベースの認証データベースの名前。
- データベースアカウント:ソース MongoDB データベースへのログインに使用されるアカウント。 権限要件についての詳細は、 データ移行のための権限要件をご参照ください。
- データベースパスワード:ソース MongoDB データベースへのログインに使用されるパスワード。
ターゲットデータベース - インスタンスタイプ:MongoDB インスタンスを選択します。
- インスタンスリージョン:ターゲット MongoDB データベースが存在しているリージョンを選択します。
- MongoDB インスタンス ID:シャードクラスタインスタンスの ID を選択します。
- データベース名:ターゲット MongoDB データベースの認証データベースの名前。 デフォルトのデータベース名は admin ですとなります。
- データベースアカウント:ターゲット MongoDB データベースへのログインに使用されるアカウント。 権限要件についての詳細は、 データ移行のための権限要件をご参照ください。
- データベースパスワード:ターゲット MongoDB データベースへのログインに使用されるパスワード。
注 DTS サーバーにはオンプレミスデータベースへのアクセス権限を持っていない場合は、まずオンプレミスデータベースへのアクセス権限を付与する必要があります。 詳細は、ソースデータベース と ターゲットデータベースページにある DTS の IP アドレスセグメントの取得をクリックします。 - パラメータを構成後、右下隅のホワイトリストを承認して次のステップに進むボタンをクリックします。
サーバーがデータベースに確実に接続できるようにするには、DTS サーバーのパブリック IP アドレスをターゲット MongoDB データベースのホワイトリストに追加する必要があります。 DTS サーバーのパブリック IP アドレスは、移行後にホワイトリストから削除できます。 詳細は、ホワイトリストの構成をご参照ください。
- 移行オブジェクトと移行タイプを選択します。
移行オブジェクトと移行タイプの構成 移行タイプ - すべてのデータを移行したい場合は、 フルデータ移行を選択します。
注 データの整合性を確保するために、フル移行が実行されているときにソース MongoDB データベースに新しいデータを書き込まないでください。
- ライブ移行が必要な場合は、 フルデータ移行と増分データ移行を同時に選択します。
移行オブジェクト - 利用可能リストから移行するデータベースを選択し、をクリックして選択済みリストに移動します。
注
- admin データベースのデータは移行できません。
- config データベースは内部データベースです。 必要でない場合は、config データベースからデータを移行しないでください。
- 移行オブジェクトはデータベース、及びコレクションであることが可能です。
- オブジェクト名は、デフォルトでソース MongoDB インスタンスにあったのと同様で、ターゲット MongoDB インスタンスに移行されても変わりません。
注
- 各 Shard に格納されるデータが一致でないか、他データベース全体の一部だけを含む可能性があります。 これは Shard の特性によって決まります。 データ移行を実行するときは、移行するデータを選択すればいいです。
- 移行するオブジェクトのソースインスタンスとターゲットインスタンスで名前が異なる場合は、DTS が提供するオブジェクト名マッピング機能を使用する必要があります。 詳細は、オブジェクト名のマッピングをご参照ください。
- すべてのデータを移行したい場合は、 フルデータ移行を選択します。
- 上記の設定が終わったら、事前チェックをクリックします。
注
- 移行タスクが正式に開始される前に、事前チェックが実行されます。 移行は事前チェックが成功した後に開始できます。
- 事前チェックが失敗した場合は、各チェック項目の後にあるアイコンをクリックして失敗の詳細を表示します。 失敗した項目を修正した後で、事前チェックを再実行します。
- 事前チェックが成功した場合は、次へ をクリックします。
- 購入構成の確認ページで、リンクの種類およびデータ転送(従量課金)サービス規約を選択します。
- 購入して開始をクリックして移行タスクを開始します。
- フルデータ移行
移行タスクが自動的に停止するまで待ちます。
- 増分データ移行
移行タスクの状態が増分移行遅延なしになると、データが同期されたことを示します。
- フルデータ移行
- ステップ 1 から 10 を繰り返して他の Shard 用の移行タスクを作成し、すべての移行タスクが完了するまで待ちます。
注
- 増分移行タスクは自動的には終了しません。 更新 をクリックして移行タスクの最新状態を確認します。 全ての Shard の移行タスクが増分移行遅延なし になっていれば、ソースデータベースを数分間停止します。
- すべての Shard の移行タスクが再び増分移行遅延なしになった場合は、移行タスクを停止します。
データが正しいか確認します。 正しい場合、オンプレミスデータベースから ApsaraDB for MongoDB インスタンスに切り替えることができます。