Data Transmission Service (DTS) は、ApsaraDB for MongoDB シャードクラスターインスタンスから ApsaraDB for MongoDB レプリカセットまたはシャードクラスターインスタンスへの一方向データ同期をサポートしています。このトピックでは、その同期タスクの構成方法について説明します。
サポートされる同期パス
| ソースアーキテクチャ | 移行先アーキテクチャ | サポート状況 |
|---|---|---|
| シャードクラスター | レプリカセット | はい |
| シャードクラスター | シャードクラスター | はい |
DTS は、2 つの ApsaraDB for MongoDB シャードクラスターインスタンス間でのみ一方向データ同期をサポートします。複数の ApsaraDB for MongoDB インスタンス間での一方向データ同期はサポートされていません。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期と完全データ同期 | 無料 |
| 増分データ同期 | 有料。詳細については、「課金概要」をご参照ください。 |
同期タイプ
| タイプ | 説明 |
|---|---|
| スキーマ同期 | DTS は、選択されたオブジェクトのスキーマをソースから宛先インスタンスに同期します。 |
| 完全データ同期 | DTS は、選択されたオブジェクトの既存データを同期します。サポートされるオブジェクト:データベースおよびコレクション。 |
| 増分データ同期 | DTS は、ソースから宛先インスタンスへの継続的なデータ変更を同期します。 |
サポートされる増分操作
DTS は、タスク開始時に存在するデータベースからの増分データのみを同期します。タスク開始後に作成されたデータベースは同期されません。
oplog を使用する場合:
CREATE COLLECTIONおよびCREATE INDEXDROP DATABASE、DROP COLLECTION、およびDROP INDEXRENAME COLLECTIONドキュメントに対する挿入、更新、および削除操作
増分データ同期中に同期的に実行されるのは、$set コマンドのみです。チェンジストリームを使用する場合:
DROP DATABASEおよびDROP COLLECTIONRENAME COLLECTIONドキュメントに対する挿入、更新、および削除操作
増分データ同期中に同期的に実行されるのは、$set コマンドのみです。前提条件
開始前に、以下の点を確認してください。
宛先の ApsaraDB for MongoDB インスタンスが作成済みであること。詳細については、「レプリカセットインスタンスの作成」または「シャードクラスターインスタンスの作成」をご参照ください。
宛先インスタンスの利用可能なストレージ容量が、ソースインスタンスの合計データサイズよりも少なくとも 10 % 大きくなることを推奨します。
ソースのシャードクラスターインスタンス内のすべてのシャードノードにエンドポイントが割り当てられており、すべてのシャードノードで同じアカウントとパスワードを共有していること。詳細については、「シャードのエンドポイント申請」をご参照ください。
サポートされているインスタンスバージョンについては、「データ同期シナリオの概要」をご参照ください。
宛先がシャードクラスターインスタンスの場合、DTS タスクを開始する前に以下の手順を完了してください。
スキーマ同期なしの場合:手動でシャーディング対象のデータベースおよびコレクションを作成し、データシャーディングを構成してバランサーを有効化し、事前シャーディングを実行してください。詳細については、「シャードのパフォーマンスを最大化するためのシャーディングの構成」をご参照ください。
スキーマ同期ありの場合:スキーマ同期完了後、バランサーを有効化し、事前シャーディングを実行してください。詳細については、「よくある質問」をご参照ください。
シャーディングを構成することで、同期されたデータが異なるシャードに分散され、シャードクラスターのパフォーマンスを最大化できます。また、バランサーを有効化し、事前シャーディングを実行することでデータスキューを防止できます。
制限事項
ソースおよび宛先データベースの要件
| 制限事項 | 詳細 |
|---|---|
| 帯域幅 | ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、同期速度が低下します。 |
| 一意性制約 | 同期対象のコレクションには、すべてのフィールドが一意となるプライマリキーまたは一意キー制約が必要です。これを満たさない場合、宛先に重複レコードが含まれる可能性があります。 |
_id の一意性 | 同期対象の各コレクションにおける _id フィールドは一意である必要があります。一意でない場合、データの不整合が発生する可能性があります。 |
| コレクションの上限 | コレクションを同期オブジェクトとして選択し、宛先データベースでコレクション名の変更などの編集を行う必要がある場合、1 つのタスクで同期できるコレクション数の上限は 1,000 です。この上限を超えるとリクエストエラーが発生します。複数のタスクに分けて構成するか、データベース全体を同期してください。 |
| ドキュメントサイズ | 1 つのドキュメントのサイズは 16 MB を超えてはなりません。これより大きいドキュメントがあると、タスクが失敗します。 |
| 非対応のソース | Azure Cosmos DB for MongoDB クラスターおよび Amazon DocumentDB エラスティッククラスターは、ソースデータベースとしてサポートされていません。 |
| Mongos ノード | ソースの MongoDB シャードクラスター内の Mongos ノード数は 10 を超えてはなりません。 |
| 自主管理シャードクラスターへのアクセス | ソースが自主管理 MongoDB シャードクラスターの場合、アクセス方法 を Express Connect、VPN Gateway、Smart Access Gateway または Cloud Enterprise Network (CEN) に設定してください。 |
| スケーリング | 実行中の DTS タスク内にある MongoDB シャードクラスターデータベースはスケーリングできません。タスク実行中にスケーリングを行うと、タスクが失敗します。 |
| TTL インデックス | ソースに TTL インデックスが含まれている場合、同期後にソースと宛先の間でデータの不整合が発生する可能性があります。 |
| 孤立ドキュメント | ソースまたは宛先データベースに孤立ドキュメントが存在してはなりません。これらが存在すると、データの不整合やタスクの失敗を引き起こす可能性があります。詳細については、「MongoDB 用語集シャーディングされたクラスタアーキテクチャにデプロイされた MongoDB データベースの孤立したドキュメントを削除するにはどうすればよいですか? |
oplog およびチェンジストリーム:
ソースデータベースでは oplog が有効になっており、少なくとも 7 日間のログデータを保持しているか、チェンジストリームが有効になっており、少なくとも 7 日間のデータ変更履歴を保持している必要があります。これを満たさない場合、DTS がデータ変更を取得できず、同期の失敗やデータ損失を引き起こす可能性があります。このような状況で発生した問題は、DTS サービスレベル契約 (SLA) の適用外となります。
ソースデータベースのデータ変更を記録するには oplog を使用してください(チェンジストリームよりも推奨されます)。
チェンジストリームには MongoDB 4.0 以降が必要であり、双方向同期はサポートされていません。
ソースが非エラスティック Amazon DocumentDB クラスターの場合、チェンジストリームを有効化し、移行方法 を ChangeStream に、アーキテクチャ を シャードクラスター に設定する必要があります。
バランサー:
ソースデータベースの MongoDB バランサーが、フルデータ同期中に無効化されていることを確認してください。フルデータ同期がすべて完了し、増分同期が開始されるまで、バランサーを有効化しないでください。フル同期中にバランサーを実行すると、データの不整合が発生する可能性があります。詳細については、「ApsaraDB for MongoDB のバランサーを管理する」をご参照ください。
データバランスを取るためにソースデータベースのバランサーが有効になっている場合、DTS タスクが遅延する可能性があります。
同期中のスキーマ変更:
スキーマ同期または完全データ同期中に、データベースまたはコレクションのスキーマ(配列型の更新を含む)を変更しないでください。これを行うと、タスクが失敗したり、データの不整合が発生したりする可能性があります。
完全同期中の書き込み:
完全データ同期のみを実行する場合、ソースデータベースへの書き込みを行わないでください。これを行うと、データの不整合が発生します。
その他の制限事項
DTS は、
admin、config、またはlocalデータベースからのデータ同期を実行できません。宛先の MongoDB バージョンは、ソースバージョンと同じかそれ以降である必要があります。宛先バージョンが古い場合、互換性の問題が発生する可能性があります。
宛先がレプリカセットインスタンスの場合:
Express Connect、VPN Gateway、Smart Access Gateway、パブリック IP アドレス、または Cloud Enterprise Network (CEN) を介して接続する場合、[ドメイン名または IP] および [ポート番号] をプライマリノードの IP アドレスとポートに設定するか、高可用性エンドポイントを設定します。詳細については、「ソースまたはターゲットデータベースが高可用性 MongoDB データベースである DTS タスクを作成する」をご参照ください。
ECS 上の自主管理データベース経由で接続する場合、ポート番号 をプライマリノードのポート番号に設定してください。
宛先がすでにデータシャーディングが構成されたシャードクラスターの場合:オブジェクトの構成 ステップで スキーマ同期 を選択しないでください。これを行うと、シャードの競合によりデータの不整合やタスクの失敗が発生する可能性があります。
タスク開始前に、ソースデータベース内の同期対象データすべてにシャードキーを追加してください。同期中、
INSERT操作には必ずシャードキーを含める必要があり、UPDATE操作ではシャードキーを変更してはなりません。トランザクション情報は保持されません。トランザクションは宛先データベース内で個別のレコードに変換されます。
DTS が宛先コレクションへの書き込み時にプライマリキーまたは一意キーの競合が発生した場合、DTS はその書き込みをスキップし、宛先の既存レコードを保持します。
オフピーク時間帯にデータ同期を実行することを推奨します。完全データ同期中、DTS はソースおよび宛先データベースの読み取り・書き込みリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。
完全データ同期中、同時実行の
INSERT操作により、宛先コレクションに断片化が発生します。完全同期完了後、宛先のストレージ容量がソースよりも大きくなる可能性があります。宛先コレクションに一意なインデックスが設定されているか、
capped属性がtrueに設定されている場合、増分同期中にシングルスレッドでの書き込みのみがサポートされます。これにより、同期遅延が増加する可能性があります。宛先データベースへの同時書き込みにより、宛先のストレージ容量がソースデータサイズよりも 5 %~10 % 大きくなります。
宛先の MongoDB データベースで行数をクエリするには、次のコマンドを使用してください:
db.$table_name.aggregate([{ $count:"myCount"}])。宛先の MongoDB データベースに、ソースと同じプライマリキー (
_id) を持つドキュメントがすでに存在しないことを確認してください。重複が存在する場合、DTS タスクを停止せずに宛先から削除してください。DTS タスクが失敗した場合、DTS テクニカルサポートは 8 時間以内に復旧を試みます。 復旧中、タスクが再起動されたり、タスクパラメーターが変更されたりすることがあります。 データベースパラメーターは変更されません。 変更される可能性のあるパラメーターについては、「DTS インスタンスのパラメーターを変更する」トピックの「インスタンスパラメーターの変更」セクションをご参照ください。
孤立ドキュメントの削除
同期タスクを開始する前に、ソースの MongoDB データベースからすべての孤立ドキュメントを削除してください。
ソースに孤立ドキュメントが存在すると、同期パフォーマンスが低下したり、重複する _id 値が発生したり、意図しないデータが同期されたりする可能性があります。
ApsaraDB for MongoDB インスタンス
メジャーバージョンが 4.2 より前、またはマイナーバージョンが 4.0.6 より前の ApsaraDB for MongoDB インスタンスでクリーンアップスクリプトを実行すると、エラーが発生します。バージョンを確認するには、「MongoDB マイナーバージョンリリースノート」をご参照ください。アップグレードするには、「インスタンスのメジャーバージョンをアップグレードする」および「インスタンスのマイナーバージョンを更新する」をご参照ください。
MongoDB 4.4 以降
シャードクラスターインスタンスに接続可能なサーバー上に、
cleanupOrphaned.jsという名前の JavaScript ファイルを作成します。このスクリプトは、複数のシャードにわたる複数のデータベース内のすべてのコレクションから孤立ドキュメントを削除します。特定のコレクションを対象とするには、スクリプト内のパラメーターを変更してください。
パラメーター 説明 shardNamesクリーンアップ対象のシャード ID。シャードリスト セクション(シャードクラスターインスタンスの 基本情報 ページ内)で確認できます。例: d-bp15a3796d3a****。databasesToProcess孤立ドキュメントを削除するデータベース名。 // シャード名。 var shardNames = ["shardName1", "shardName2"]; // 孤立ドキュメントを削除するデータベース。 var databasesToProcess = ["database1", "database2", "database3"]; shardNames.forEach(function(shardName) { // 指定されたデータベースを走査。 databasesToProcess.forEach(function(dbName) { var dbInstance = db.getSiblingDB(dbName); // 指定されたデータベースのすべてのコレクション名を取得。 var collectionNames = dbInstance.getCollectionNames(); // すべてのコレクションを走査。 collectionNames.forEach(function(collectionName) { // 完全なコレクション名。 var fullCollectionName = dbName + "." + collectionName; // cleanupOrphaned コマンドを構築。 var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName } }; // cleanupOrphaned コマンドを実行。 var result = db.adminCommand(command); if (result.ok) { print("シャード " + shardName + " のコレクション " + fullCollectionName + " の孤立ドキュメントをクリーンアップしました"); printjson(result); } else { print("シャード " + shardName + " のコレクション " + fullCollectionName + " の孤立ドキュメントのクリーンアップに失敗しました"); } }); }); });スクリプト内の以下のパラメーターを更新します。
cleanupOrphaned.jsが保存されているディレクトリで、次のコマンドを実行します。パラメーター 説明 <Mongoshost>Mongos ノードのエンドポイント。形式: s-bp14423a2a51****.mongodb.rds.aliyuncs.com。<Primaryport>Mongos ノードのポート番号。デフォルト: 3717。<database>アカウントの認証データベース名。 <username>データベースアカウント。 <password>データベースアカウントのパスワード。 output.txt実行結果を保存するファイル。 mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
MongoDB 4.2 以前
シャードクラスターインスタンスに接続可能なサーバー上に、
cleanupOrphaned.jsという名前の JavaScript ファイルを作成します。このスクリプトは、複数のシャードにわたる特定のコレクションから孤立ドキュメントを削除します。複数のコレクションを処理するには、
fullCollectionNameパラメーターを更新してスクリプトを再度実行するか、スクリプトを変更してすべてのコレクションを繰り返し処理するようにしてください。パラメーター 説明 shardNamesクリーンアップ対象のシャード ID。シャードリスト セクション(シャードクラスターインスタンスの 基本情報 ページ内)で確認できます。例: d-bp15a3796d3a****。fullCollectionNameクリーンアップ対象のコレクションの完全名。形式: データベース名.コレクション名。function cleanupOrphanedOnShard(shardName, fullCollectionName) { var nextKey = { }; var result; while ( nextKey != null ) { var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey } }; result = db.adminCommand(command); printjson(result); if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) { print("現時点で完了できません:失敗またはタイムアウト。") break } nextKey = result.results[shardName].stoppedAtKey; } print("コレクション: " + fullCollectionName + "、シャード: " + shardName + " の cleanupOrphaned 完了") } var shardNames = ["shardName1", "shardName2", "shardName3"] var fullCollectionName = "database.collection" shardNames.forEach(function(shardName) { cleanupOrphanedOnShard(shardName, fullCollectionName); });スクリプト内の以下のパラメーターを更新します。
cleanupOrphaned.jsが保存されているディレクトリで、次のコマンドを実行します。パラメーター 説明 <Mongoshost>Mongos ノードのエンドポイント。形式: s-bp14423a2a51****.mongodb.rds.aliyuncs.com。<Primaryport>Mongos ノードのポート番号。デフォルト: 3717。<database>アカウントの認証データベース名。 <username>データベースアカウント。 <password>データベースアカウントのパスワード。 output.txt実行結果を保存するファイル。 mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
自主管理 MongoDB データベース
自主管理 MongoDB データベースに接続可能なサーバー上で、
cleanupOrphaned.jsスクリプトをダウンロードします。wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"cleanupOrphaned.jsファイル内で、testを、孤立ドキュメントを削除するデータベース名に置き換えます。重要複数のデータベースを処理するには、ステップ 2 および 3 を各データベースに対して繰り返してください。

各シャードで、次のコマンドを実行して、指定されたデータベース内のすべてのコレクションから孤立ドキュメントを削除します。
パラメーター 説明 <Shardhost>シャードの IP アドレス。 <Primaryport>シャード内のプライマリノードのサービスポート。 <database>アカウントの認証データベース名。 <username>自主管理 MongoDB データベースへのログインに使用するアカウント。 <password>自主管理 MongoDB データベースへのログインに使用するパスワード。 mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js例:3 つのシャードを持つ自主管理 MongoDB データベースの場合、シャードごとに 1 回ずつコマンドを実行します。
mongo --host 172.16.1.10 --port 27018 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js mongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
同期タスクの構成
以下の手順では、DTS インスタンス購入前に DTS タスクを構成します。タスクを先に構成する場合、ソースのシャードクラスターのシャード数を指定する必要はありません。DTS タスク構成前に DTS インスタンスを購入する場合は、購入時にシャード数を指定する必要があります。
ステップ 1:データ同期ページへの移動
次のいずれかのコンソールを使用します。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
左上隅で、同期タスクが配置されているリージョンを選択します。
Data Management Service (DMS) コンソール
実際の手順は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、Data + AI にポインターを合わせ、DTS (DTS) > データ同期 を選択します。
データ同期タスク の右側にあるドロップダウンリストから、同期インスタンスが配置されているリージョンを選択します。
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックして、タスク構成ページを開きます。
次のパラメーターを使用して、タスク名、ソースデータベース、および宛先データベースを構成します。
セクション パラメーター 説明 該当なし タスク名 DTS タスクの名前。DTS が自動的に名前を生成します。タスクを識別しやすくするために、わかりやすい名前を指定してください。一意の名前である必要はありません。 ソースデータベース 既存の接続を選択 インスタンスが DTS に登録済みの場合、ドロップダウンリストから選択します。これにより、残りのパラメーターが自動的に入力されます。登録されていない場合は、以下のパラメーターを構成してください。DMS コンソールでは、DMS データベースインスタンスの選択 ドロップダウンリストからインスタンスを選択します。 データベースタイプ MongoDB を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソースの ApsaraDB for MongoDB インスタンスが配置されているリージョン。 Alibaba Cloud アカウント間でデータをレプリケート 現在の Alibaba Cloud アカウントを使用する場合は、いいえ を選択します。 アーキテクチャ シャードクラスター を選択します。 移行方法 増分データを同期する方法。要件に基づいて選択します:Oplog(推奨)— oplog が有効になっている場合に使用可能。Oplog は低遅延で増分データを同期し、自主管理 MongoDB データベースおよび ApsaraDB for MongoDB インスタンスの両方でデフォルトで有効になっています。ChangeStream — チェンジストリームが有効になっている場合に使用可能。詳細については、「チェンジストリーム」をご参照ください。ソースが非エラスティック Amazon DocumentDB クラスターの場合、ChangeStream のみを選択してください。アーキテクチャ が シャードクラスター に設定されている場合、シャードアカウント および シャードパスワード パラメーターは不要です。 インスタンス ID ソースの ApsaraDB for MongoDB インスタンスの ID。 認証データベース アカウント認証情報を格納するデータベース名。デフォルト: admin。データベースアカウント ソースデータベースへのアクセスに使用するアカウント。このアカウントには、ソースデータベースおよび config、admin、localデータベースに対する読み取り権限が必要です。データベースパスワード データベースアカウントのパスワード。 シャードアカウント シャードノードへのアクセスに使用するアカウント。自主管理 MongoDB データベースの場合のみ必須です。 シャードパスワード シャードノードへのアクセスに使用するパスワード。自主管理 MongoDB データベースの場合のみ必須です。 暗号化 接続を暗号化するかどうか。オプション:暗号化なし、SSL 暗号化、または Mongo Atlas SSL。アクセス方法 および アーキテクチャ の設定によって使用可能なオプションが異なります。DTS コンソールに表示されるオプションを参照してください。アーキテクチャ が シャードクラスター で、移行方法 が Oplog の場合、SSL 暗号化 は使用できません。ソースがレプリカセットアーキテクチャの自主管理 MongoDB データベースで、暗号化 が SSL 暗号化 に設定されている場合、接続を検証するために CA 証明書をアップロードする必要があります。 宛先データベース 既存の接続を選択 インスタンスが DTS に登録済みの場合、ドロップダウンリストから選択します。登録されていない場合は、以下のパラメーターを構成してください。 データベースタイプ MongoDB を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン 宛先の ApsaraDB for MongoDB インスタンスが配置されているリージョン。 Alibaba Cloud アカウント間でデータをレプリケート 現在の Alibaba Cloud アカウントを使用する場合は、いいえ を選択します。 アーキテクチャ 宛先インスタンスのアーキテクチャ。 インスタンス ID 宛先の ApsaraDB for MongoDB インスタンスの ID。 認証データベース アカウント認証情報を格納するデータベース名。デフォルト: admin。データベースアカウント 宛先データベースへのアクセスに使用するアカウント。このアカウントには、 dbAdminAnyDatabase権限、宛先データベースに対する読み取り・書き込み権限、およびlocalデータベースに対する読み取り権限が必要です。データベースパスワード データベースアカウントのパスワード。 暗号化 接続を暗号化するかどうか。オプション:暗号化なし、SSL 暗号化、または Mongo Atlas SSL。宛先が ApsaraDB for MongoDB シャードクラスターの場合、SSL 暗号化 は使用できません。宛先がレプリカセットアーキテクチャの自主管理 MongoDB データベースで、暗号化 が SSL 暗号化 に設定されている場合、接続を検証するために CA 証明書をアップロードする必要があります。 接続テストして次へ をクリックします。
- DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。 - ソースまたはターゲットが [Alibaba Cloud インスタンス] 以外のアクセス方法で接続される自己管理データベースである場合、[DTS サーバーの CIDR ブロック] ダイアログボックスで [接続テスト] をクリックします。
ステップ 3:同期オブジェクトの構成
オブジェクトの構成 ステップで、次のパラメーターを設定します。
パラメーター 説明 同期タイプ スキーマ同期、完全データ同期、および 増分データ同期 の 3 つすべてを選択します。事前チェック完了後、DTS はソースから宛先に既存データを同期し、これを増分同期の基盤とします。宛先のシャードクラスターにすでにデータシャーディングが構成されており、DTS のスキーマ同期が不要な場合は、スキーマ同期 を選択しないでください。これを行うと、シャードの競合によりデータの不整合やタスクの失敗が発生する可能性があります。 競合テーブルの処理モード 事前チェックしてエラーを報告:宛先にソースと同じ名前のコレクションがすでに存在するかどうかをチェックします。一致する名前が見つかった場合、エラーが返され、タスクを開始できません。宛先のコレクションを削除または名前変更せずに名前の競合を解決するには、オブジェクト名マッピング機能を使用します。詳細については、「同期対象オブジェクトの名前変更」をご参照ください。エラーを無視して続行:名前の競合チェックをスキップします。宛先のレコードがソースのレコードと同じプライマリキーまたは一意キーを持っている場合、DTS は宛先のレコードを上書きしません。 警告このオプションを選択すると、データの不整合が発生する可能性があります。
同期トポロジー 一方向同期 を選択します。 宛先インスタンスでのオブジェクト名の大文字小文字 宛先でのデータベースおよびコレクション名の大文字小文字のポリシー。デフォルト: DTS デフォルトポリシー。詳細については、「宛先インスタンスでのオブジェクト名の大文字小文字の指定」をご参照ください。 ソースオブジェクト 同期するデータベースまたはコレクションを選択し、矢印アイコンをクリックして 選択済みオブジェクト に追加します。 選択済みオブジェクト 同期済みオブジェクトの送信先での名前変更、または別のオブジェクトへのマップを行うには、[選択済みオブジェクト]でそのオブジェクトを右クリックします。詳細については、「オブジェクト名のマッピング」をご参照ください。オブジェクトを削除するには、そのオブジェクトをクリックし、次に削除アイコンをクリックして、ソースオブジェクトに戻します。データベースまたはコレクション単位で増分同期を設定するには、[選択済みオブジェクト]を右クリックし、ダイアログボックスでオプションを設定します。コレクション内のデータをフィルターするには、[選択済みオブジェクト]でそのコレクションを右クリックし、フィルター条件を設定します。フィルターは完全データ同期時のみ適用され、増分同期時には適用されません。詳細については、「フィルター条件の指定」をご参照ください。オブジェクト名マッピングを使用してデータベースまたはコレクションの名前を変更した場合、それらに依存する他のオブジェクトが同期に失敗する可能性があります。 次へ:詳細設定 をクリックします。
ステップ 4:詳細設定
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用専用クラスター | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| 接続失敗時のリトライ時間 | DTS が接続失敗時にリトライを試行する時間範囲。有効値:10~1440 分。デフォルト:720 分。少なくとも 30 分に設定してください。指定された時間内に DTS が再接続した場合、タスクは再開されます。それ以外の場合、タスクは失敗します。複数のタスクが同じソースまたは宛先データベースを共有する場合、最も短いリトライ時間が優先されます。リトライ期間中も DTS 料金が発生します。 |
| その他の問題発生時のリトライ時間 | DTS が失敗した DDL または DML 操作をリトライする時間範囲。有効値:1~1440 分。デフォルト:10 分。少なくとも 10 分に設定してください。この値は 接続失敗時のリトライ時間 より小さくする必要があります。 |
| 完全データ同期のスロットリングを有効化 | 完全同期中にソースおよび宛先データベースへの読み取り/書き込み負荷を制限します。ソースデータベースへのクエリ数 (QPS)、完全データ移行の RPS、および 完全移行のデータ移行速度 (MB/s) を構成して負荷を軽減します。完全データ同期 が選択されている場合にのみ使用可能です。 |
| 単一テーブル内のプライマリキー _id のデータ型を 1 種類に限定 | コレクション内の _id が単一のデータ型を使用するかどうかを示します。はい:DTS は _id データ型のスキャンをスキップし、コレクションごとに 1 種類のデータ型のみを同期します。いいえ:DTS はすべての _id データ型をスキャンし、すべてのデータを同期します。実際のデータに基づいてこの設定を行ってください。設定を誤ると、データ損失が発生する可能性があります。完全データ同期 が選択されている場合にのみ使用可能です。 |
| 増分データ同期のスロットリングを有効化 | 増分同期中に宛先データベースへの負荷を制限します。増分データ同期の RPS および 増分同期のデータ同期速度 (MB/s) を構成します。 |
| 環境タグ | DTS インスタンスを識別するためのタグ。要件に基づいて選択してください。 |
| ETL の構成 | 抽出・変換・書き出し (ETL) 機能を有効にするかどうかを指定します。はい: ETL を有効にします。コードエディタでデータ処理文を入力します。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。いいえ: ETL を無効にします。詳細については、「ETL とは |
| モニタリングとアラート | タスクに対するアラートを設定するかどうか。はい: タスクが失敗した場合、または同期遅延がしきい値を超えた場合にアラートを送信します。アラートのしきい値と通知設定を設定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。いいえ: アラート機能を無効化します。 |
ステップ 5:データ検証の構成(オプション)
「[次へ: データ検証]」をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 6:設定の保存と事前チェックの実行
このタスク構成の API パラメーターを表示するには、次へ:タスク設定の保存と事前チェック にポインターを合わせて、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存と事前チェック をクリックします。
DTS は、同期タスクを開始する前に事前チェックを実行します。事前チェックに合格した後でのみ、タスクを開始できます。
事前チェックに失敗した場合、各失敗項目の横にある 詳細を表示 をクリックして、問題を診断し、修正してから事前チェックを再実行してください。
事前チェック中にアラートが表示された場合:
無視できないアラートの場合:詳細を表示 をクリックして問題を修正し、事前チェックを再実行してください。
無視可能なアラートの場合:アラートの詳細を確認 をクリックし、詳細を表示 ダイアログボックスで 無視 をクリックしてから、OK をクリックし、再度事前チェック をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 7:インスタンスの購入
[成功率] が [100%] に達するまで待ってから、[次へ: インスタンスの購入] をクリックします。
購入 ページで、次のパラメーターを構成します。
セクション パラメーター 説明 新規インスタンスクラス 課金方法 サブスクリプション:あらかじめ一定期間分の料金を支払います。長期利用の場合、コスト効率に優れています。従量課金:1 時間単位で課金されます。短期利用に適しています。不要になった時点でインスタンスをリリースして課金を停止してください。 リソースグループ設定 同期インスタンスのリソースグループ。デフォルト:デフォルトリソースグループResource Management とは インスタンスクラス DTS は、さまざまな同期速度を持つインスタンスクラスを提供します。要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 サブスクリプション期間 サブスクリプション 課金の場合のみ使用可能です。1~9 ヶ月、1 年、2 年、3 年、または 5 年を選択します。また、作成するインスタンス数を指定します。 Data Transmission Service (従量課金) サービス利用規約 を読み、同意してください。
購入して開始 をクリックし、確認ダイアログボックスで OK をクリックします。
タスクがタスクリストに表示されます。事前チェックに合格し、インスタンスを購入すると、DTS は自動的に同期タスクを開始します。
次のステップ
DTS コンソールのタスクリストで、同期ステータスおよび同期遅延をモニタリングします。
完全データ同期が完了し、増分同期が開始された後、必要に応じてソースデータベースの MongoDB バランサーを再度有効化します。
宛先がシャードクラスターの場合、バランサーを有効化して事前シャーディングを実行し、データスキューを防止します。詳細については、「シャードのパフォーマンスを最大化するためのシャーディングの構成」をご参照ください。