DTS は、2 つの ApsaraDB for MongoDB レプリカセットインスタンス間で双方向データ同期をサポートしています。
前提条件
-
ソースおよびターゲットの ApsaraDB for MongoDB レプリカセットインスタンスが作成済みです。レプリカセットインスタンスの作成をご参照ください。
重要サポートされているデータベースバージョンについては、「同期ソリューションの概要」をご参照ください。
-
ターゲットの ApsaraDB for MongoDB インスタンスストレージは、ソースの ApsaraDB for MongoDB インスタンスのデータサイズより少なくとも 10 % 大きくする必要があります。
-
両方のインスタンスで、replication.oplogGlobalIdEnabled パラメーターを true に設定する必要があります。データベースパラメーターの設定をご参照ください。
説明true に設定されていない場合、事前チェックが失敗するか、
two-way mongo must have gidエラーが返されます。
注意事項
|
タイプ |
説明 |
|
ソースおよびターゲットデータベースの制限 |
|
|
その他の制限 |
|
課金
同期タイプ | 料金 |
スキーマ同期および完全データ同期 | 無料です。 |
増分データ同期 | 課金対象です。詳細については、「課金概要」をご参照ください。 |
サポートされている双方向同期トポロジ
現在、DTS は 2 つの ApsaraDB for MongoDB レプリカセットインスタンス間でのみ双方向同期をサポートしています。複数の ApsaraDB for MongoDB インスタンス間の同期はサポートされていません。
サポートされている競合検出
データ整合性を維持するため、同じプライマリキー、ビジネスプライマリキー、または一意キーを持つレコードの更新は、一度に 1 つのノードでのみ行ってください。
DTS は、以下の競合タイプを検出して解決し、同期の安定性を確保します:
-
INSERT 操作による一意性の競合
INSERT によって宛先にすでに存在するレコードが追加された場合、DTS はその操作を無視します。
-
UPDATE 操作中のレコードの不一致
UPDATE が宛先に存在しないレコードを対象とする場合、または競合を引き起こす場合、DTS はその操作を無視します。
-
存在しないレコードに対する DELETE 操作
DELETE が宛先に存在しないレコードを対象とする場合、DTS はその操作を無視します。
-
DTS の競合検出は、システム時刻の差異や同期遅延によりデータ競合を完全に防止できるわけではありません。アプリケーション側で、同じプライマリキー、ビジネスプライマリキー、または一意キーを持つレコードの更新を一度に 1 つのノードでのみ行ってください。
-
デフォルトの競合解決ポリシーは Ignore であり、変更できません。
同期タイプ
|
タイプ |
説明 |
|
スキーマ同期 |
選択したオブジェクトのスキーマを、ソースの ApsaraDB for MongoDB インスタンスからターゲットの ApsaraDB for MongoDB インスタンスに同期します。 |
|
完全データ同期 |
選択したオブジェクトのすべての既存データを、ソースの ApsaraDB for MongoDB インスタンスからターゲットの ApsaraDB for MongoDB インスタンスに同期します。 説明
完全データ同期は、データベースおよびコレクションをサポートしています。 |
|
増分データ同期 |
完全データ同期後、ソースの ApsaraDB for MongoDB インスタンスからターゲットの ApsaraDB for MongoDB インスタンスに増分データを同期します。 増分データ同期では、タスク開始後に作成されたデータベースはレプリケートされません。以下の変更がレプリケートされます:
|
操作手順
ターゲットリージョンの同期タスクリストページに移動します。以下の 2 つの方法のいずれかを使用できます。
DTS コンソールから
左側のナビゲーションウィンドウで、データ同期 をクリックします。
ページ左上隅で、同期インスタンスが配置されているリージョンを選択します。
DMS コンソールから
説明実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS インターフェイスのレイアウトとスタイルのカスタマイズ」をご参照ください。
Data Management (DMS) にログインします。
上部のメニューバーで、 を選択します。
データ同期タスク の右側で、同期インスタンスが配置されているリージョンを選択します。
タスクの作成 をクリックして、タスク構成ページを開きます。
-
ソースおよびターゲットデータベースを構成します。
カテゴリ
パラメーター
説明
N/A
タスク名
DTS は自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
移行元データベース
既存の接続情報の選択
システムに追加済み(新規作成または保存済み)のデータベースインスタンスを使用する場合、ドロップダウンリストからデータベースインスタンスを選択します。データベース情報は自動的に構成されます。
説明DMS コンソールでは、この設定項目の名前は DMS データベースインスタンスの選択 です。
データベースインスタンスをシステムに追加していない場合、またはすでに追加済みのインスタンスを使用しない場合は、以下のデータベース情報を手動で構成してください。
データベースタイプ
MongoDB を選択します。
アクセス方法
Alibaba Cloud インスタンス を選択します。
インスタンスリージョン
ソースの ApsaraDB for MongoDB インスタンスのリージョンを選択します。
Alibaba Cloud アカウント間でデータを複製
この例では、現在の Alibaba Cloud アカウントに属するデータベースインスタンスを使用します。× を選択します。
アーキテクチャ
レプリカセット を選択します。
移行方法
Oplog を選択します。
インスタンス ID
ソースの ApsaraDB for MongoDB インスタンスの ID を選択します。
認証データベース
ソースの ApsaraDB for MongoDB インスタンスアカウントの認証データベース名を入力します。デフォルト:admin。
データベースアカウント
ソースの ApsaraDB for MongoDB インスタンスのデータベースアカウントを入力します。このアカウントには、同期対象のデータベースおよび
config、admin、localデータベースに対する読み取り権限が必要です。説明アカウントの作成および構成方法については、「MongoDB データベースアカウント権限管理」をご参照ください。
データベースパスワード
データベースアカウントに対応するパスワードを入力します。
暗号化
DTS は、非暗号化、SSL 暗号化、Mongo Atlas SSL の 3 つの接続方法をサポートしています。暗号化 のオプションは、選択した アクセス方法 および アーキテクチャ によって異なります。コンソールに表示されるオプションが優先されます。
説明-
アーキテクチャ が シャードクラスター で、移行方法 が Oplog の MongoDB データベースは、SSL 暗号化 をサポートしていません。
-
ソースが自主管理 MongoDB データベース(アクセス方法 が Alibaba Cloud インスタンス ではない)で、レプリカセット アーキテクチャの場合、SSL 暗号化 を選択すると、DTS では CA 証明書をアップロードして接続を検証することも可能です。
移行先データベース
既存の接続情報の選択
システムに追加済み(新規作成または保存済み)のデータベースインスタンスを使用する場合、ドロップダウンリストからデータベースインスタンスを選択します。データベース情報は自動的に構成されます。
説明DMS コンソールでは、この設定項目の名前は DMS データベースインスタンスの選択 です。
データベースインスタンスをシステムに追加していない場合、またはすでに追加済みのインスタンスを使用しない場合は、以下のデータベース情報を手動で構成してください。
データベースタイプ
MongoDB を選択します。
アクセス方法
Alibaba Cloud インスタンス を選択します。
インスタンスリージョン
ターゲットの ApsaraDB for MongoDB インスタンスのリージョンを選択します。
Alibaba Cloud アカウント間でデータを複製
この例では、現在の Alibaba Cloud アカウントに属するデータベースインスタンスを使用します。× を選択します。
アーキテクチャ
レプリカセット を選択します。
インスタンス ID
ターゲットの ApsaraDB for MongoDB インスタンスの ID を選択します。
認証データベース
ターゲットの ApsaraDB for MongoDB インスタンスアカウントの認証データベース名を入力します。デフォルト:admin。
データベースアカウント
ターゲットの ApsaraDB for MongoDB インスタンスのデータベースアカウントを入力します。このアカウントには、dbAdminAnyDatabase、ターゲットデータベースに対する readWrite、および local データベースに対する読み取り権限が必要です。
説明アカウントの作成および構成方法については、「MongoDB データベースアカウント権限管理」をご参照ください。
データベースパスワード
データベースアカウントに対応するパスワードを入力します。
暗号化
DTS は、非暗号化、SSL 暗号化、Mongo Atlas SSL の 3 つの接続方法をサポートしています。暗号化 のオプションは、選択した アクセス方法 および アーキテクチャ によって異なります。コンソールに表示されるオプションが優先されます。
説明-
アーキテクチャ が シャードクラスター の MongoDB データベースは、SSL 暗号化 をサポートしていません。
-
ターゲットが自主管理 MongoDB データベース(アクセス方法 が Alibaba Cloud インスタンス ではない)で、レプリカセット の場合、SSL 暗号化 を選択すると、DTS では CA 証明書をアップロードして接続を検証することも可能です。
構成が完了したら、ページ下部の 接続をテストして続行 をクリックします。
説明DTS サーバーからのアクセスを許可するために、ソースおよびターゲットデータベースのセキュリティ設定に DTS サーバーの IP アドレス CIDR ブロックを追加していることを確認してください。これは自動的または手動で行うことができます。詳細については、「DTS サーバーの IP アドレス CIDR ブロックをホワイトリストに追加する」をご参照ください。
-
タスクオブジェクトを構成します。
-
オブジェクト設定 ページで、同期するオブジェクトを構成します。
パラメーター
説明
同期タイプ
増分データ同期 が選択されています。デフォルトでは、スキーマ同期 および 完全データ同期 も選択する必要があります。事前チェックが完了すると、DTS は選択したオブジェクトの完全データをソースインスタンスから宛先クラスターに同期します。これは、その後の増分データ同期のベースラインデータとなります。
競合するテーブルの処理モード
エラーの事前チェックと報告:宛先データベースに同じ名前のコレクションがあるかどうかをチェックします。同じ名前のコレクションが見つかった場合、エラーが報告され、データ同期タスクは開始されません。そうでない場合、事前チェックは成功します。
説明宛先データベースで同じ名前のコレクションを削除または名前変更できない場合は、宛先データベースのコレクション名を変更できます。詳細については、「宛先インスタンスでの同期オブジェクトの名前設定」をご参照ください。
エラーを無視して続行:宛先データベースに同じ名前のコレクションがあるかどうかのチェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスにリスクをもたらす可能性があります。たとえば:
宛先データベースのレコードが、ソースデータベースのレコードと同じプライマリキーまたは一意キー値を持っている場合、宛先データベースのレコードが保持されます。ソースデータベースのレコードは宛先データベースに同期されません。
これにより、データ初期化が失敗したり、一部のデータのみが同期されたり、同期全体が失敗したりする可能性があります。
同期トポロジ
双方向同期 を選択します。
DDL 操作を除外
-
○:DDL 操作は同期されません。
-
いいえ:DDL 操作は同期されます。
重要DDL 同期は転送方向でのみサポートされます。逆方向の DDL 同期はサポートされていません。
競合修復ポリシー
競合解決ポリシーを選択します。Ignore のみがサポートされています:DTS は宛先データを保持し、競合するソースの変更を破棄します。
「サポートされている競合検出」に記載されている競合が発生した場合、DTS はその文をスキップし、宛先レコードを保持します。
移行先インスタンスでのオブジェクト名の大文字化
宛先インスタンスに同期されるデータベースおよびコレクションオブジェクトの英語名の大文字小文字の扱いポリシーを構成できます。DTS のデフォルトポリシー(デフォルトオプション)を選択するか、ソースまたはターゲットデータベースのデフォルトポリシーを使用できます。詳細については、「宛先オブジェクト名の大文字小文字の扱いポリシー」をご参照ください。
ソースオブジェクト
ソースオブジェクト ボックスで、同期するオブジェクトをクリックし、
をクリックして 選択中のオブジェクト ボックスに移動させます。説明オブジェクトは、DATABASE または COLLECTION レベルで選択できます。
選択中のオブジェクト
宛先インスタンスでの同期オブジェクトの名前を設定する、またはどのオブジェクトがデータを受信するかを指定するには、選択中のオブジェクト ボックスで同期オブジェクトを右クリックして変更します。詳細については、「テーブル名およびカラム名のマッピング」をご参照ください。
同期オブジェクトを削除するには、選択中のオブジェクト ボックスでそのオブジェクトをクリックし、
をクリックして ソースオブジェクト ボックスに移動させます。
説明-
データベースまたはコレクションレベルで増分操作を選択するには、選択中のオブジェクト ボックスで目的のオブジェクトを右クリックし、表示されるダイアログボックスで選択を行います。
-
データをフィルターする(完全同期中はサポートされますが、増分同期中はサポートされません)には、選択中のオブジェクト ボックスで目的のコレクションを右クリックし、表示されるダイアログボックスで設定を構成します。手順については、「フィルター条件の構成」をご参照ください。
-
オブジェクト名マッピング機能を使用してデータを受信するデータベースまたはコレクションを指定する場合、マッピングされたオブジェクトに依存する他のオブジェクトの同期が失敗する可能性があります。
-
詳細設定へ をクリックして、詳細パラメーターを構成します。
パラメーター
説明
タスクのスケジュールに使用する専用クラスターの選択
デフォルトでは、DTS は共有クラスター上でタスクをスケジュールし、クラスターを選択する必要はありません。より安定したパフォーマンスを求める場合は、DTS 同期タスクを実行するための専用クラスターを購入できます。詳細については、「DTS 専用クラスターとは」をご参照ください。
失敗した接続の再試行時間
同期タスク開始後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、すぐに接続の再試行を開始します。デフォルトの再試行時間は 720 分です。10 ~ 1,440 分の範囲でカスタム再試行時間を指定することもできます。30 分以上に設定することを推奨します。指定された時間内に DTS がデータベースへの再接続に成功した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
説明同じソースまたはターゲットを共有する複数の DTS インスタンス(例:インスタンス A とインスタンス B)があり、インスタンス A のネットワーク再試行時間を 30 分、インスタンス B を 60 分に設定した場合、両方に短い方の 30 分が適用されます。
DTS は接続再試行期間中もタスクランタイムに対して課金されるため、ビジネスニーズに基づいて再試行時間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスをリリースした直後に DTS インスタンスをできるだけ早くリリースすることを推奨します。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
同期タスク開始後、ソースまたはターゲットデータベースで接続以外の問題(DDL または DML 実行例外など)が発生した場合、DTS はエラーを報告し、すぐに継続的な再試行操作を開始します。デフォルトの再試行時間は 10 分です。1 ~ 1,440 分の範囲でカスタム再試行時間を指定することもできます。10 分以上に設定することを推奨します。設定された再試行時間内に関連操作が成功した場合、同期タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値より小さくする必要があります。
完全同期レートを制限するかどうか
完全同期フェーズ中、DTS はソースおよびターゲットデータベースの読み取りおよび書き込みリソースを消費し、データベース負荷が増加します。ソースおよびターゲットデータベースの負荷を軽減するために、1 秒あたりのソースデータベースのクエリ率 QPS、1 秒あたりの完全移行の行数 RPS、1 秒あたりの完全移行データ量 (MB) BPS パラメーターを構成することで、完全同期タスクのレート制限を設定できます。
説明この設定項目は、同期タイプ が 完全データ同期 に設定されている場合にのみ利用可能です。
同期インスタンスの実行後にも、完全同期レートを調整 できます。
同期するデータのうち、同一テーブル内のプライマリキー_id のデータ型が一意かどうか
同期する各コレクション内で、
_idプライマリキーのデータ型が一意かどうかを指定します。重要-
実際のデータに基づいてオプションを選択してください。誤った選択により、データ損失が発生する可能性があります。
-
このパラメーターは、同期タイプ に 完全データ同期 が含まれている場合にのみ利用可能です。
-
○:データ型は一意です。完全同期フェーズ中、DTS はソースデータのプライマリキーのデータ型をスキャンしません。各コレクションについて、DTS は 1 つのプライマリキーデータ型に対応するデータのみを同期します。
-
×:データ型は一意ではありません。完全同期フェーズ中、DTS はソースデータのプライマリキーのデータ型をスキャンし、すべてのデータを同期します。
増分同期率を制限するかどうか
増分同期タスクのレート制限を設定することもできます。ターゲットデータベースの負荷を軽減するために、1 秒あたりの増分同期の行数 RPS および 1 秒あたりの増分同期データ量 (MB) BPS を設定してください。
環境タグ
任意です。インスタンスを識別するために環境タグを選択します。
ETL 機能の設定
抽出・変換・書き出し (ETL) 機能を有効にするかどうかを選択します。詳細については、「ETL とは」をご参照ください。有効値:
-
○:ETL 機能を有効にします。コードエディタにデータ処理文を入力します。詳細については、「データ移行またはデータ同期タスクでの ETL の構成」をご参照ください。
-
×:ETL 機能を無効にします。
監視アラート
アラートを構成するかどうかを指定します。同期が失敗した場合、または遅延が指定されたしきい値を超えた場合、アラート連絡先に通知が送信されます。
×:アラートは構成されません。
○:アラートのしきい値を設定し、アラート通知を指定してアラートを構成します。詳細については、「タスク構成中のモニタリングとアラートの構成」をご参照ください。
次へ:データ検証 をクリックして、データ検証タスクを構成します。
データ検証機能を使用する場合は、「データ検証の構成」の構成手順をご参照ください。
-
タスクを保存して事前チェックを実行します。
このインスタンスを構成するための API パラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにカーソルを合わせ、表示されるバルーンで OpenAPI パラメーターのプレビュー をクリックします。
API パラメーターの確認が完了したら、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明同期ジョブ開始前に、DTS は事前チェックを実行します。すべての事前チェック項目が合格した場合にのみ、ジョブを開始できます。
事前チェックが失敗した場合、失敗した項目の横にある 詳細を表示 をクリックします。表示された指示に従って問題を修正し、再度事前チェックを実行します。
事前チェックで警告が返された場合:
チェック項目が失敗し、無視できない場合は、項目の横にある 詳細を表示 をクリックします。指示に従って問題を修正し、再度事前チェックを実行します。
無視可能なチェック項目については、アラートの詳細を確認、無視、OK、再度事前チェックを実行 の順にクリックして警告をスキップし、再度事前チェックを実行します。警告項目を非表示にすると、データの不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
-
インスタンスを購入します。
成功率 が 100 % になったら、次:インスタンスの購入 をクリックします。
購入 ページで、データ同期インスタンスの課金方法およびリンク仕様を選択します。以下の表でこれらのパラメーターについて詳しく説明します。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
課金方法
サブスクリプション:インスタンス作成時に支払いを行います。長期的なニーズに適しており、従量課金よりもコスト効率が高くなります。サブスクリプション期間が長いほど、割引率が高くなります。
従量課金:1 時間ごとに課金されます。短期的なニーズに適しています。使用後すぐにインスタンスをリリースしてコストを節約できます。
リソースグループ構成
インスタンスが属するリソースグループです。デフォルトは default resource group です。詳細については、「Resource Management とは」をご参照ください。
リンク仕様
DTS は、さまざまなパフォーマンスレベルの同期仕様を提供しています。同期リンク仕様は同期レートに影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ同期リンク仕様」をご参照ください。
サブスクリプション期間
サブスクリプションモードでは、サブスクリプションインスタンスの期間および数量を選択します。1 ~ 9 ヶ月の月単位サブスクリプション、または 1、2、3、5 年の年単位サブスクリプションを選択できます。
説明このオプションは、課金方法が サブスクリプション の場合にのみ利用可能です。
構成が完了したら、Data Transmission Service (従量課金) 利用規約 を読み、同意してください。
購入して起動 をクリックします。OK ダイアログボックスで、OK をクリックします。
データ同期ページでタスクの進捗状況を確認できます。
-
逆方向同期タスクを構成します。
-
フォワード同期タスクの初期化が完了し、ステータス が 実行中 になるまで待ちます。
-
逆方向同期タスクを見つけ、タスクの設定 をクリックします。
-
ステップ 3 から ステップ 6 を繰り返して、逆方向同期タスクを構成します。
重要-
逆方向タスクでは、ソースとターゲットが入れ替わります。つまり、ソースは転送タスクのターゲット、ターゲットは転送タスクのソースとなります。データベース名、アカウント、パスワードが一致していることを確認してください。
-
逆方向タスクでマッピング名を変更しないことを推奨します。変更すると、データの不整合が発生する可能性があります。
-
逆方向タスクでは、インスタンスのリージョン を変更できません。逆方向タスクのパラメーターは少なく、コンソールに表示される値を使用してください。
-
逆方向タスクの 競合するテーブルの処理モード 設定は、転送タスクですでに同期されたコレクションをチェックしません。
-
逆方向同期タスクは、転送タスクの 選択中のオブジェクト リストにすでに含まれているオブジェクトを同期できません。
-
逆方向同期タスクは、DDL 操作を自動的に除外します。
-
-
成功率 が 100% になったら、戻る をクリックします。
-
-
逆方向タスクの構成後、両方のタスクの ステータス が 実行中 になるまで待ちます。これで双方向同期がアクティブになります。