Data Transmission Service (DTS) を使用して、PolarDB-X 2.0 インスタンスから AnalyticDB for MySQL V3.0 クラスターへリアルタイムでデータをレプリケーションします。同期タスクの設定が完了すると、ターゲットクラスターはソースのすべての書き込み操作に即時追随し、本番ワークロードへの影響を及ぼさずに、社内向けビジネスインテリジェンス(BI)システム、インタラクティブなクエリシステム、およびリアルタイムレポートシステムの構築が可能になります。
前提条件
開始する前に、以下の点をご確認ください。
MySQL 5.7 と互換性のある PolarDB-X 2.0 インスタンスが存在し、正常に稼働していること
ターゲットとなる AnalyticDB for MySQL V3.0 クラスターが作成済みであること。詳細については、「クラスターの作成」をご参照ください。
ターゲットクラスターのストレージ容量が、ソースインスタンスが現在使用している容量より大きいこと
PolarDB-X 2.0 インスタンスでバイナリログ記録が有効化されており、
binlog_row_imageパラメーターはfullに設定されています。詳細については、「パラメーター設定」をご参照ください。ソースデータベースアカウントには、同期するすべてのオブジェクトに対して SELECT、REPLICATION CLIENT、および REPLICATION SLAVE 権限が必要です。これらの権限を付与する詳細については、「PolarDB-X のデータ同期ツール」をご参照ください。
ターゲットデータベースアカウントが、ターゲットクラスターに対して読み取りおよび書き込み権限を有していること
制限事項
ソースデータベースの要件
| 制約 | 詳細 | 対応策 |
|---|---|---|
| プライマリキーまたは一意キー | 同期対象となるすべてのテーブルには、PRIMARY KEY または UNIQUE 制約(すべてのフィールドが一意)が必要です。これを満たさない場合、ターゲットデータベースに重複レコードが発生する可能性があります。 | タスク開始前に、各テーブルに PRIMARY KEY または UNIQUE 制約を追加してください。 |
| 1 タスクあたりのテーブル数上限 | 個別のテーブルを同期対象として選択し、ターゲット側でテーブル名またはカラム名の変更を行う場合、1 タスクあたり最大 5,000 テーブルまでサポートされます。 | 5,000 テーブルを超える場合は、複数のタスクを作成するか、データベースレベルでの同期を選択してください。 |
| バイナリログ保持期間 — 増分同期のみ | バイナリログを最低 24 時間保持してください。DTS が必要なログを取得できない場合、タスクは失敗し、データ損失が発生する可能性があります。 | タスク開始前に、バイナリログの保持期間を延長してください。 |
| バイナリログ保持期間 — 完全同期+増分同期 | 完全同期フェーズ中は、バイナリログを最低 7 日間保持してください。完全同期が完了した後は、保持期間を 24 時間以上に設定できます。これらの要件に従って保持期間を設定してください。そうでない場合、Data Transmission Service (DTS) のサービスレベル合意(SLA)で保証されるサービスの信頼性およびパフォーマンスを達成できません。 | 開始前に保持期間を最低 7 日間に設定し、完全同期完了後にのみ調整してください。 |
| 大文字を含むテーブル名 | テーブル名に大文字を含むテーブルは、スキーマ同期のみをサポートしており、完全同期および増分同期はサポートされません。 | 完全同期または増分同期を実行する場合は、タスク開始前にテーブル名を小文字に変更してください。 |
| TABLEGROUP および Locality 属性 | DTS では、TABLEGROUP オブジェクトや Locality 属性を持つデータベースおよびスキーマの同期はサポートされていません。 | このようなオブジェクトを同期対象から除外してください。 |
| 初期同期中の DDL | スキーマ同期または完全データ同期の実行中に、データベースまたはテーブルのスキーマを変更する DDL 文を実行しないでください。 | DDL 変更は、初期同期フェーズの前または後に実行するようスケジュールしてください。 |
その他の制限事項
| 制約 | 詳細 | 操作 |
|---|---|---|
| プレフィックスインデックス | プレフィックスインデックスは同期できません。ソーステーブルでプレフィックスインデックスを使用している場合、該当テーブルの同期が失敗する可能性があります。 | タスク開始前に、プレフィックスインデックスを削除または変換してください。 |
| プライマリキーの設定 | プライマリキーがない場合、データ同期が失敗する可能性があります。 | ターゲット側でカスタムプライマリキーを指定するか、プライマリキー列 を データベース・テーブル・カラムの構成 ステップで設定してください。 |
| ターゲットディスク使用率 | AnalyticDB for MySQL では、ノードのディスク使用率が 80 % に達すると書き込みが遅延し、エラーが返されます。 | 必要なストレージ量を事前に見積もり、ターゲットクラスターに十分な空き容量があることを確認してください。 |
| ターゲットバックアップとの競合 | DTS タスク実行中にターゲットクラスターのバックアップが実行されている場合、タスクは失敗します。 | バックアップ実行時間帯を避け、同期タスクをスケジュールしてください。 |
| 非ピーク時間帯 | 初期の完全同期では、ソースおよびターゲット双方の読み取り/書き込みリソースが使用されるため、両サーバーの負荷が増加します。 | 非ピーク時間帯に同期を実行してください。 |
| 完全同期後の表領域サイズ | 完全データ同期後、ターゲット側の使用済み表領域はソース側よりも大きくなります。これは、同時 INSERT 操作による断片化が原因であり、想定される動作です。 | 対応は不要です。 |
| pt-online-schema-change | DTS タスク実行中に pt-online-schema-change を使用して DDL 操作を実行すると、同期が破綻する可能性があります。 | タスク実行中は pt-online-schema-change を使用しないでください。 |
| 送信先への書き込み中 | DTS 以外のツールからターゲットへ書き込みを行うと、データの不整合や損失が発生する可能性があり、特に Data Management Service (DMS) のオンライン DDL を使用する場合に顕著です。 | 同期中は、ターゲットへの書き込みを DTS のみに限定してください。 |
| DDL 実行失敗 | ターゲットで DDL 文の実行に失敗した場合、DTS は自動的に再試行を続けます。 | タスクログで失敗した DDL 文を確認します。詳細については、「タスクログの表示」をご参照ください。 |
| タスク復旧 | DTS タスクが失敗した場合、DTS テクニカルサポートが 8 時間以内に復旧を試みます。復旧中、タスクは再起動され、タスクレベルのパラメーターが変更される場合がありますが、データベースパラメーターは変更されません。 | 対応は不要です。 |
DTS は、バイナリログ位置を進めるために、ソースデータベースのdts_health_check.ha_health_checkテーブルに定期的に書き込みを行います。
スキーマ同期中は外部キーは同期されません。完全同期および増分同期中は、DTS がセッションレベルで外部キー制約チェックおよびカスケード操作を無効化します。同期中にソースでカスケード UPDATE または DELETE 操作を実行した場合、データの不整合が発生する可能性があります。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期と全データ同期 | 無料 |
| 増分データ同期 | 有料です。詳細については、「課金概要」をご参照ください。 |
サポートされる同期トポロジ
単方向 1 対 1 同期
単方向 1 対多 同期
単方向カスケード同期
単方向多対 1 同期
サポートされているトポロジの完全な一覧については、「同期トポロジ」をご参照ください。
同期可能な SQL 操作
| タイプ | 操作 |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、MODIFY COLUMN、DROP COLUMN |
DTS が AnalyticDB for MySQL V3.0 へ書き込む際、UPDATE 文は自動的に REPLACE INTO に変換されます。UPDATE がプライマリキー列を対象とする場合、DELETE の後に INSERT が実行されます。
データ同期タスクの作成
タスク設定は 7 ステップで構成されます:データ同期ページへ移動、ソースおよびターゲットデータベースの構成、同期対象の選択、高度な設定の構成、必要に応じてテーブル・フィールド属性の設定、事前チェックの実行、およびインスタンスの購入です。
ステップ 1:データ同期ページへ移動
DTS コンソールまたは DMS コンソールを使用します。
DTS コンソール
DMS コンソール
正確な手順は、DMS コンソールのレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
ステップ 2:ソースおよびターゲットデータベースの構成
タスクの作成 をクリックします。
ソースデータベースのパラメーターを構成します。
パラメーター 説明 タスク名 タスクを識別するための記述的な名前を指定します。この名前は一意である必要はありません。未入力の場合、DTS がデフォルト名を生成します。 既存接続の選択 利用可能な場合は、ドロップダウンリストから事前登録済みのデータベースインスタンスを選択します。DTS が残りのパラメーターを自動的に設定します。詳細については、「データベース接続の管理」をご参照ください。事前登録済みのインスタンスを使用しない場合は、以下のパラメーターを手動で設定します。 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソース PolarDB-X 2.0 インスタンスが配置されているリージョンを選択します。 Alibaba Cloud アカウント間でのデータ複製 同一アカウント内での同期の場合は、いいえ を選択します。 インスタンス ID ソース PolarDB-X 2.0 インスタンスを選択します。 データベースアカウント データベースアカウントを入力します。このアカウントは、同期対象のオブジェクトに対して SELECT、REPLICATION CLIENT、および REPLICATION SLAVE 権限を有している必要があります。 データベースパスワード データベースアカウントのパスワードを入力します。 ターゲットデータベースのパラメーターを構成します。
パラメーター 説明 既存接続の選択 利用可能な場合は、ドロップダウンリストから事前に登録済みのクラスターを選択します。DTS が残りのパラメーターを自動的に設定します。事前に登録済みのインスタンスを使用しない場合は、以下のパラメーターを手動で構成してください。 データベースタイプ AnalyticDB MySQL 3.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ターゲット AnalyticDB for MySQL V3.0 クラスターが配置されているリージョンを選択します。 Alibaba Cloud アカウント間でのデータ複製 同一アカウント内での同期の場合は、いいえ を選択します。 インスタンス ID ターゲット AnalyticDB for MySQL V3.0 クラスターを選択します。 データベースアカウント データベースアカウントを入力します。このアカウントは、ターゲットクラスターに対して読み取りおよび書き込み権限を有している必要があります。 データベースパスワード データベースアカウントのパスワードを入力します。 接続テストと続行 をクリックします。
DTS サーバーの CIDR ブロックを、ソースおよび送信先のセキュリティ設定に追加する必要があります。これにより、DTS が接続できるようになります。DTS が自動的に追加することもできますし、手動で追加することもできます。詳細については、「DTS サーバーの CIDR ブロックをセキュリティ設定に追加する」をご参照ください。
ソースおよびターゲットデータベースの構成後は、ページに表示される 使用制限 を必ずご確認ください。このステップをスキップすると、タスクの失敗やデータの不整合が発生する可能性があります。
ステップ 3:同期対象の構成
オブジェクトの構成 ステップで、以下のパラメーターを設定します。
同期タイプ
以下の 3 種類すべてを選択します:スキーマ同期、完全データ同期、および 増分データ同期。
これら 3 種類は以下の順序で実行されます:
スキーマ同期:テーブル構造をソースからターゲットへレプリケーションします。
完全データ同期:既存のすべてのデータをターゲットへコピーします。このフェーズは増分同期の開始前に完了し、継続的な同期のベースラインとなります。
増分データ同期(デフォルトで選択):ソースからの継続的な変更をキャプチャして適用します。このフェーズは課金対象です — スキーマ同期および完全同期は無料です。
完全データ同期 を選択した場合、DTS は CREATE TABLE 文で作成されたテーブルのスキーマおよびデータもターゲットへ同期します。
競合テーブルの処理モード
ソースと同名のテーブルがターゲットに存在する場合の処理方法を選択します。
事前チェックとエラー報告 (デフォルト): DTS は開始前に名前の競合をチェックします。同一のテーブル名が存在する場合、事前チェックは失敗し、タスクは開始できません。これを解決するには、送信先でテーブルの名前を変更するか、オブジェクト名マッピングを使用します。
エラーを無視して続行:DTS は名前衝突チェックをスキップします。ソースとターゲットのスキーマが同一であり、ターゲットに一致するプライマリキーまたは一意キーを持つレコードが存在する場合、完全同期では既存のレコードを保持し、増分同期では上書きします。スキーマの不一致により、タスクが失敗したり、一部のカラムのみが同期されたりする可能性があります。
エラーを無視して続行 を選択すると、データの不整合が発生する可能性があります。
マージテーブル
同じスキーマを持つ複数のソーステーブルを 1 つのターゲットテーブルにマージする場合は、はいアラート通知設定 を設定します。これは、シャード化された OLTP テーブルを分析用に集約する OLAP シナリオで有用です。
マージ時、オブジェクト名マッピング を使用して、各ソーステーブルをターゲット送信先テーブル名に名前を変更します。
DTS は、各行の出所を追跡するために、ターゲットテーブルに
__dts_data_sourceカラム(TEXT 型)を追加します。このカラムの形式は<同期インスタンス ID>:<ソースデータベース名>:<ソーススキーマ名>:<ソーステーブル名>であり、例:dts********:dtstestdata:testschema:customer1です。タスクで選択されたすべてのソーステーブルが、単一のターゲットテーブルにマージされます。特定のソーステーブルをマージ対象から除外するには、それらのテーブル専用に別途同期タスクを作成してください。
マージテーブル を はい に設定している場合、ソースデータベースまたはテーブルのスキーマを変更する DDL 操作を実行しないでください。これにより、データの不整合またはタスクの失敗が発生する可能性があります。
各ソーステーブルが対応するターゲットテーブルにマップされる場合は、いいえ(デフォルト)を設定します。
ソースオブジェクトおよび選択済みオブジェクト
ソースオブジェクト セクションからオブジェクトを選択し、矢印アイコンをクリックして 選択済みオブジェクト へ移動します。
カラム、テーブル、またはデータベースを選択できます。テーブルまたはカラムを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトタイプは同期されません。
データベース全体を選択した場合、DTS が分散キーを自動的に設定します:プライマリキーを持つテーブルは、そのプライマリキー列を分散キーとして使用します。プライマリキーを持たないテーブルは、ターゲット側に自動採番主キー列が追加され、ソースとターゲットの不整合を引き起こす可能性があります。
送信先のオブジェクトの名前を変更するには、[選択されたオブジェクト] でオブジェクトを右クリックして個別に名前を変更するか、[一括編集] をクリックして一括で名前を変更します。詳細については、「データベース、テーブル、および列名のマッピング」をご参照ください。
同期対象の行をフィルターするには、選択済みオブジェクト 内のオブジェクトを右クリックし、WHERE 条件を指定してください。詳細については、「フィルター条件の指定」をご参照ください。
特定のテーブルに対して同期対象の SQL 操作を指定するには、選択済みオブジェクト 内のテーブルを右クリックし、含める操作を選択してください。
ステップ 4:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用の専用クラスター | デフォルトでは、DTS は共有クラスター上でタスクを実行します。より高い安定性を確保するには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| 接続失敗時のリトライ時間 | 接続失敗時に DTS がタスクを失敗と見なすまでのリトライ時間です。有効範囲:10~1440 分。デフォルト:720 分。少なくとも 30 分以上に設定してください。複数のタスクが同一のソースまたはターゲットを共有する場合、最も短いリトライ時間設定がすべてのタスクに適用されます。リトライ期間中は、インスタンスに対して課金されます。 |
| その他の問題発生時のリトライ時間 | 失敗した DML または DDL 操作に対する DTS のリトライ時間です。有効範囲:1~1440 分。デフォルト:10 分。10 分より大きい値を設定し、常に 接続失敗時のリトライ時間 より短く設定してください。 |
| 完全データ同期におけるレート制御の有効化 | 完全同期中の読み取り/書き込みレートを制限して、ソースおよびターゲットの負荷を軽減します。ソースデータベースへのクエリ数(QPS)、完全データ移行の RPS、および 完全移行のデータ移行速度(MB/s) を構成します。完全データ同期 が選択されている場合にのみ利用可能です。 |
| 増分データ同期におけるレート制御の有効化 | 増分同期中のレートを制限します。増分データ同期の RPS および 増分同期のデータ同期速度(MB/s) を構成します。 |
| 環境タグ | DTS インスタンスに環境ラベル(例:本番環境またはステージング環境)を付与します。任意設定です。 |
| フォワードおよびリバースタスクのハートビートテーブルに対する SQL 操作の削除有無 | DTS がソースデータベースにハートビートレコードを書き込むかどうかを制御します。はい を選択すると、ハートビートレコードの書き込みをスキップします — コンソールに遅延指標が表示される場合があります。いいえ を選択すると、ハートビート書き込みを許可します — これにより、ソースデータベースの物理バックアップおよびクローン作成に影響が出る可能性があります。 |
| ETL の構成 | ETL を有効にするには、[はい] を選択し、コードエディタに処理文を入力します。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。ETL をスキップするには、[いいえ] を選択します。 |
| モニタリングとアラート | タスクが失敗した場合、または同期遅延がしきい値を超えた場合にアラートを受信するには、[はい] を選択します。アラートのしきい値と通知連絡先を設定します。詳細については、「モニタリングとアラート機能の設定」をご参照ください。 |
ステップ 5:(任意)データベースおよびテーブルフィールドの構成
次へ:データベースおよびテーブルフィールドの構成 をクリックして、ターゲットテーブルのプロパティを設定します。このステップは、スキーマ同期 が選択されている場合にのみ利用可能です。
定義ステータス を すべて に設定すると、すべてのテーブルを表示および編集できます。各テーブルについて、以下の項目を構成できます:
タイプ:AnalyticDB for MySQL におけるテーブルのタイプ
プライマリキー列:1 つ以上のカラムをプライマリキーとして指定します。複合プライマリキーを構成できます。
分散キー:ノード間でデータを分散するために使用される 1 つ以上のカラム
パーティションキー、パーティショニングルール、パーティションライフサイクル:ターゲットテーブルのパーティション構成
AnalyticDB for MySQL のテーブル作成オプションの詳細については、「CREATE TABLE」をご参照ください。
ステップ 6:設定の保存および事前チェックの実行
次へ:タスク設定の保存および事前チェック をクリックします。
このタスク構成の API パラメーターをプレビューするには、ボタンにカーソルを合わせ、保存前に OpenAPI パラメーターのプレビュー をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックが成功した場合にのみ、タスクを開始できます。
事前チェックが失敗した場合、各失敗項目の横にある 詳細の表示 をクリックします。問題を修正した後、再チェック をクリックします。
アラートがトリガーされたが、その項目を無視できる場合は、アラート詳細の確認 をクリックし、表示されたダイアログで 無視 > OK > 再チェック をクリックします。事前チェックのアラートを無視すると、データの不整合が発生する可能性があります。
ステップ 7:インスタンスの購入および開始
成功率 が 100% と表示されたら、次へ:インスタンスの購入 をクリックします。
購入ページで、インスタンスのパラメーターを構成します。
パラメーター 説明 課金方法 サブスクリプション:一定期間(1~9か月、または1年、2年、3年、5年)の前払い方式です。長期間実行されるタスクにコスト効率が優れます。従量課金:時間単位で課金されます。短期利用に適しています。不要になった場合は、ご利用のインスタンスをリリースして課金を停止してください。 リソースグループ設定項目 Resource Management とは インスタンスクラス データ同期インスタンスのインスタンスクラス必要な同期速度に応じてインスタンスクラスを選択します。詳細については、「」をご参照ください。 サブスクリプション期間 サブスクリプション課金の場合のみ表示されます。期間の長さおよび作成するインスタンス数を設定します。 Data Transmission Service(従量課金)利用規約 をお読みになり、同意してください。
購入および開始 をクリックし、確認ダイアログで OK をクリックします。
タスクはタスク一覧に表示されます。一覧ビューから進行状況を監視できます。
次のステップ
同期遅延とタスクの健全性をトラックするには、「モニタリングとアラートを構成する」をご参照ください。
同期済みオブジェクトの名前の変更または再マッピングを行うには、「データベース、テーブル、および列名のマッピング」をご参照ください。
失敗した DDL 文を表示するには、「タスクログの表示」を参照してください。
インスタンスのパラメーターを変更するには、「DTS インスタンスのパラメーターを変更する」をご参照ください。