操作シナリオ
多対一同期とは、複数のソースデータベースの内容を1つのターゲットデータベースに同期することです。ユーザーが単一のデータベースを使用する場合、負荷が高い、または地域の制限により、データ分割を行い、複数のデータベースインスタンスを使用して同じ種類のデータベース・テーブルを保存することがよくありますが、これによりデータクエリに不便が生じます。多対一同期機能を使用することで、ユーザーのこのような問題を解決できます。
多対一同期は、複数の単方向同期タスクを作成して多対一トポロジーを構築するため、単方向同期の制約、操作制限などの要件をすべて満たす必要があります。データ同期の対応する同期シナリオを参照してください。 注意事項
DTSはフルデータ同期を実行する際に、一定のソースインスタンスリソースを占有し、ソースインスタンスの負荷上昇を引き起こし、データベース自体の圧力を高める可能性があります。データベースの設定が低すぎる場合は、ビジネスのオフピーク期に実行することをお勧めします。
データの重複を避けるために、同期が必要なテーブルに主キーまたは非NULLの一意キーが存在することを確認してください。主キーまたは非NULLの一意キーがないテーブルには、データ重複のリスクがあります。
ユーザーは事前にデータを適切に計画し、各ソース側が異なるPKのデータを更新(追加、削除、変更)するようにして、PKの競合や同じPKデータの相互上書きなどの状況を回避する必要があります。業務上の理由で各ソース側が担当するPKに重複が存在する場合は、推奨設定を参照して、適切な競合戦略を選択し、同期動作とデータが期待どおりになるようにしてください。 アプリケーション制限
複数の同期タスク設定において、DDLが循環リンクを形成することはできません。
DDL設定原則
複数の同期タスク設定において、DDLが循環リンクを形成することはできません。そうでない場合、DDL文がシステム内で循環し、エラーが発生する可能性があります。
ターゲット側の同じデータベース・テーブルオブジェクトは、複数のソース側からのDDL同期を受信できません。そうでない場合、複数のソース側のDDLがターゲット側で競合を形成し、エラーが発生する可能性があります。
複数の同名テーブルを1つのテーブルにマージするタイプの多対一同期では、DDLを選択できるのは1つの同期タスクのみです。
その他のタイプの多対一同期(例えば、複数の異なる名前のテーブルを1つのデータベースにマージする場合)では、各タスクでDDLを選択できます。ユーザーは実際の状況に応じて適切なDDL同期戦略を選択してください。
検証段階において、同期システムは現在のユーザーの他のすべての同期タスクを考慮し、新規作成中の同期タスクがDDL循環または競合を引き起こすかどうかを判断し、ユーザーが参考にできるようにプロンプトを表示します。
多対一同期は、複数の単方向同期タスクを作成して多対一トポロジーを構築します。各単方向同期の手順は通常の単方向同期の手順と類似していますが、以下の同期オプション設定に違いがあります。
以下に典型的なシナリオの推奨設定を示します。ユーザーはこれを参考に操作してください。
例:インスタンスA、BからCへの同期を構築し、インスタンスA、Bに同じ名前のテーブルがあり、それをインスタンスCに同期する必要がある場合、タスク1はA > Cの同期、タスク2はB > Cの同期です。さらに多くのソース側をターゲット側に同期する必要がある場合は、タスク2を参考に同期タスクを追加してください。
|
シナリオ1:インスタンスA、Bにはテーブル構造とデータがあり、インスタンスCは空です。 | タスク1が「同期増分」段階に進むのを待ってからタスク2を開始する必要があります。 | タスク1 | 構造初期化 + 全量データ初期化 | 無視して続行します | ユーザーがご自身で選択してください。 例:あるPKで競合が発生した場合、ユーザーはAの内容を基準とする必要があります。その場合、タスク1では競合上書きを選択し、タスク2では競合無視または競合エラーを選択します。 競合ポリシーの適用対象は、現在PK競合が発生しているPKデータのみです。 | 1つのタスクで選択できるDDLは最大1つです。 DDLを除き、他の操作タイプは複数のタスク間で一致させてください。 |
|
|
|
| タスク2 | 全量データ初期化 | 無視して続行します |
|
| シナリオ2:インスタンスA、Bにはテーブル構造とデータがあり、インスタンスCにはテーブル構造のみで、データはありません。 | 無 | タスク1 | 全量データ初期化 | 無視して続行します |
|
|
|
| タスク2 | タスク1と同じ | タスク1と同じ |
|
| シナリオ3:インスタンスA、B、Cにはいずれもテーブル構造とデータがあります。 | 無 | タスク1 | 全量データ初期化 | 無視して続行します |
|
|
|
| タスク2 | タスク1と同じ | タスク1と同じ |
操作手順
以下では、MySQLの二対一同期(インスタンスA、Bにデータベース・テーブルとデータがあり、インスタンスCは空)を例に説明します。他のデータベースの多対一同期操作も同様ですので、本ガイドを参照して行ってください。
同期タスク1の作成(インスタンスA > インスタンスC)
2. 購入完了後、データ同期リストに戻ると、作成したばかりのデータ同期タスクが表示されます。作成したばかりの同期タスクは、設定を行ってから使用できます。 3. データ同期リストで、操作列の設定をクリックし、同期タスクの設定ページに進みます。
4. 同期タスクの設定ページで、ソースインスタンス、アカウントパスワードを設定し、ターゲットインスタンス、アカウントとパスワードを設定し、接続性をテストした後、次へをクリックします。
|
タスク設定 | タスク名 | DTSはタスク名を自動生成します。ユーザーは実際の状況に応じて設定できます。 |
| 実行モード | 即時実行と定時実行の2つのモードをサポートします。 |
ソースインスタンスの設定 | ソースインスタンスタイプ | 購入時に選択したクラウドデータベースインスタンスのタイプは変更できません。 |
| ソースインスタンスの地域 | 購入時に選択したクラウドデータベースインスタンスAの所在地域は変更できません。 |
| サービスプロバイダー | 通常(Tencent Cloud MySQLデータベースおよび自己構築MySQLデータベースを含む)、AWS、Alibaba Cloudをサポートします。 |
| アクセスタイプ | サービスプロバイダーが他のクラウドベンダーを選択した場合、アクセスタイプはパブリックネットワークを選択できます。サービスプロバイダーが通常を選択した場合、データベースの配置状況に応じて選択してください。 パブリックネットワーク:パブリックIPアドレスで接続する自社構築データベース。 CVM自社構築:Tencent CVM上の自社構築データベース。 専用線/VPN接続:専用線/VPNゲートウェイを介して接続する自社構築データベース。 VPC:VPCを介して接続する自社構築データベース。 クラウドデータベース:Tencent Cloudデータベース。 CCN:CCNを介して接続する自社構築データベース。 |
ターゲットインスタンスの設定 | ターゲットインスタンスタイプ | 選択したターゲットインスタンスのタイプは変更できません。 |
| ターゲットインスタンスの地域 | 選択したターゲットインスタンスCの所在地域は変更できません。 |
| アクセスタイプ | ターゲットデータベースCのアクセスタイプを選択してください。 |
5. 同期オプションと同期オブジェクトの設定ページで、データ初期化オプション、データ同期オプション、同期オブジェクトオプションを設定します。設定が完了したら、保存して次へをクリックします。
|
データ初期化オプション | 初期化タイプ | 構造初期化:同期タスクの実行時に、まずソースインスタンスのテーブル構造をターゲットインスタンスに初期化します。 全量データ初期化:同期タスクの実行時に、まずソースインスタンスのデータをターゲットインスタンスに初期化します。 本シナリオでは構造初期化+全量データ初期化を選択します。 |
| 同じ名前のテーブルが存在します | 事前検証とエラー報告:同名テーブルが存在する場合はエラーを報告し、フローは続行されません。 無視して続行:全量データと増分データをターゲットインスタンスのテーブルに直接追加します。 本シナリオでは無視して続行します。 |
データ同期オプション | 競合処理メカニズム | 競合エラー:同期中にテーブルのPK競合を検出した場合、エラーを報告し、データ同期タスクを一時停止します。 競合無視:同期中にテーブルのPK競合を検出した場合、ターゲットデータベースのPKレコードを保持します。 競合上書き:同期中にテーブルのPK競合を検出した場合、ソースデータベースのPKレコードでターゲットデータベースのPKレコードを上書きします。 ユーザーは実際の状況に応じて自身で選択します。 |
| 同期操作タイプ | サポートされる操作:Insert、Update、Delete、DDL。 多対一同期では、1つの同期タスクでDDLを選択することが最大限サポートされます。本シナリオではタスク1でDDLを選択し、その他のタスクでは選択しません。 |
同期オブジェクトオプション | ソースインスタンスのテーブルオブジェクト | 同期対象のオブジェクトを選択します。データベースレベル、テーブルレベル、ビューレベルをサポートします。 |
| 選択済みオブジェクト | 選択済みの同期オブジェクトを表示し、データベース・テーブルマッピングをサポートします。 |
6. 検証タスクページで、システムはまずDDL検証を実行し、次にソースデータベースとターゲットデータベースのパラメータ検証を実行します。検証が完了し、すべての検証項目に合格した後、タスクを開始をクリックします。
説明:
検証結果に警告項目が表示されてもタスクの開始には影響しませんが、詳細を表示をクリックしてアドバイスを取得し、調整することをお勧めします。
DDL検証
ソースデータベースとターゲットデータベースのパラメータ検証
7. データ同期タスクリストに戻り、タスクは実行中状態に入ります。
同期タスク2の作成(インスタンスB > インスタンスC)
前の同期タスクが同期増分段階に進んだ後、同期タスク2を設定します。
同期タスク2と同期タスク1の操作は基本的に同じです。以下では差分のみを詳しく説明します。
1. 同期ソースとターゲットデータベースを設定します。
ソースインスタンス設定とターゲットインスタンス設定に、それぞれインスタンスBとインスタンスCのデータを入力します。
2. 同期オプションと同期オブジェクトを設定します。
初期化タイプ:フルデータ初期化のみを選択し、構造初期化は選択しません。
同じ名前のテーブルが既に存在します:無視して続行します。
競合処理メカニズム:ユーザーが自身で選択してください。
同期操作タイプ:DDLを選択しません。多対一同期では、1つの同期タスクでのみDDLを選択できます。このシナリオでは、タスク1でDDLを選択し、その他のタスクでは選択しません。
同期タスクの終了
同期タスクが不要な場合は、操作列の詳細 > 終了を選択して、同期タスクを終了します。