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