Data Transmission Service (DTS) は、ソースデータベースからのデータ変更をリアルタイムでキャプチャし、ダウンストリームのコンシューマーに配信します。本トピックでは、DTS 専用クラスター上で ApsaraDB RDS for MySQL インスタンス向けの変更追跡タスクを作成する方法について説明します。
代表的なユースケースには、キャッシュの更新、非同期なビジネスデカップリング、異種データソース間の同期、抽出・変換・書き出し (ETL) パイプラインなどが含まれます。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
DTS 専用クラスターが存在すること。詳細については、「DTS 専用クラスターの作成」をご参照ください。
ソースとなる ApsaraDB RDS for MySQL インスタンスが存在すること。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
ソースインスタンス上に、読み取り専用権限を持つデータベースアカウント、または REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、および SELECT 権限を持つカスタムアカウントが存在すること。
バイナリログ設定が DTS の要件を満たしていること(開始前に確認):
設定項目 必要な値 binlog_row_imagefullRDS インスタンスのパラメーターの表示バイナリログ保持期間 24 時間以上
制限事項
ソースデータベースの要件
| 要件 | 詳細 |
|---|---|
| 主キーまたは一意制約 | ソーステーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。これらの制約がない場合、DTS が重複した変更レコードを生成する可能性があります。 |
| タスクあたりのテーブル数上限 | 1 つの変更追跡タスクで追跡できるテーブル数は最大 500 個です。それ以上のテーブルを追跡する必要がある場合は、複数のタスクを使用するか、データベース全体を追跡してください。 |
binlog_row_image | full に設定されている必要があります。設定されていない場合、事前チェックに失敗し、タスクを開始できません。 |
| バイナリログ保持期間 | ログは 24 時間以上保持されている必要があります。保持期間が短いと、DTS がログを読み取れず、データの不整合や損失が発生する可能性があり、DTS サービスレベル契約 (SLA) の保証が無効になる場合があります。 |
| インスタンスタイプ | 読み取り専用インスタンスおよび一時インスタンスは、ソースとして使用できません。 |
その他の制限事項
| 制限事項 | 詳細 |
|---|---|
| FLOAT/DOUBLE の精度 | DTS は、ROUND(COLUMN, PRECISION) を使用して FLOAT および DOUBLE 列の値を読み取ります。精度を指定しない場合、DTS は FLOAT に対してはデフォルトで 38 桁、DOUBLE に対しては 308 桁を使用します。これらのデフォルト値が要件を満たすかどうかを確認してください。 |
| gh-ost および pt-online-schema-change | DTS は、gh-ost または pt-online-schema-change によって実行された DDL 操作を追跡しません。これらのツールによるスキーマ変更は、変更追跡クライアントが送信先に書き込む際に競合を引き起こす可能性があります。 |
変更追跡タスクの作成
タスクウィザードには、以下のステージがあります。
| ステージ | 構成内容 |
|---|---|
| 1. ソースデータベースとコンシューマーネットワーク | 接続情報、ネットワークタイプ |
| 2. オブジェクトと変更タイプ | 追跡対象のテーブルまたはデータベース、DML/DDL の範囲 |
| 3. 高度な設定 | アラート、再試行タイムアウト |
| 4. 事前チェック | 自動検証 |
| 5. インスタンスクラス | DTS ユニットの割り当て |
手順 1:タスク構成ページを開く
専用クラスター ページに移動します。
上部のナビゲーションバーで、ご利用の DTS 専用クラスターが配置されているリージョンを選択します。
対象のクラスターを見つけ、[操作] 列で、[タスクの構成] > [変更追跡タスクの構成] の順に選択します。
手順 2:ソースデータベースの構成
ソースインスタンスを選択した後、次に進む前にページ上部に表示される制限事項を必ずお読みください。
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS が自動的に名前を生成します。タスクを識別しやすいように、わかりやすい名前を指定してください。名前に一意性は不要です。 |
| [既存のデータベース接続の選択](オプション) | 保存済みの接続を選択すると、DTS がその設定を自動的に適用します。空白のままにすると、データベースを手動で構成します。 |
| データベースタイプ | MySQL を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | 専用クラスターのリージョンに基づいて自動入力されます。変更はできません。 |
| Alibaba Cloudアカウント全体でのデータの複製 | いいえ を選択します。 |
| RDS インスタンス ID | ソースとなる ApsaraDB RDS for MySQL インスタンスを選択します。 |
| データベースアカウント | データベースアカウントを入力します。 |
| データベースパスワード | アカウントのパスワードを入力します。 |
| 暗号化 | [暗号化なし] または [SSL 暗号化] を選択します。SSL 暗号化の場合は、このタスクを設定する前に、ソースインスタンスで SSL を有効化する必要があります。 |
手順 3:コンシューマーネットワークタイプの構成
| パラメーター | 説明 |
|---|---|
| ネットワークタイプ | Virtual Private Cloud (VPC) のみがサポートされています。VPC および vSwitch を選択します。 |
タスク作成後にネットワークタイプを変更することはできません。すべての変更データは、指定されたネットワーク経由で消費する必要があります。
[接続テストと次へ] をクリックします。
DTS は接続性を確立するために、データベースのセキュリティ設定に自身の CIDR ブロックを追加します。
Alibaba Cloud データベースインスタンス(例:ApsaraDB RDS for MySQL):DTS が自動的にインスタンスのホワイトリストに CIDR ブロックを追加します。
ECS 上の自己管理型データベース:DTS が自動的に ECS セキュリティグループに CIDR ブロックを追加します。データベース自体のセキュリティ設定にも追加する必要があります。
データセンターやサードパーティクラウド上の自己管理型データベース:データベースのセキュリティ設定に DTS の CIDR ブロックを手動で追加する必要があります。
これらのホワイトリスト変更により、潜在的なセキュリティリスクが生じる可能性があります。リスクを軽減するため、強力な認証情報を使用し、公開ポートを制限し、API 呼び出しを認証し、定期的にホワイトリストおよび ECS セキュリティグループルールを確認してください。また、Express Connect、VPN Gateway、または Smart Access Gateway を通じてデータベースを DTS に接続することを検討してください。タスクをリリースした後は、ホワイトリストおよびセキュリティグループルールから DTS の CIDR ブロックを削除してください。
手順 4: オブジェクトの選択とタイプの変更
| パラメーター | 説明 |
|---|---|
| [データ変更タイプ] | データ更新:選択したオブジェクトに対する INSERT、DELETE、UPDATE 操作を追跡します。スキーマ更新:ソースインスタンス内のすべてのスキーマに対する CREATE、DROP、ALTER 操作を追跡します。スキーマ更新を有効にする場合は、変更追跡クライアントを使用して必要なスキーマのみをフィルターしてください。 |
| ソース オブジェクト | テーブルまたはデータベースを選択してから、右向き矢印アイコンをクリックし、それらを[選択済みオブジェクト]に移動します。データベースを選択すると、そのデータベース内の現在および将来のすべてのオブジェクトが追跡されます。個別のテーブルを選択した場合は、そのテーブルのみが追跡されます。新しいテーブルは必要に応じて手動で追加してください。詳細については、「変更追跡の対象オブジェクトを変更する」をご参照ください。 |
[次へ:高度な設定] をクリックします。
手順 5:高度な設定の構成
| パラメーター | 説明 |
|---|---|
| [タスクのスケジュールに使用する専用クラスターの選択] | ご利用の DTS 専用クラスターがデフォルトで選択されています。 |
| [アラートの設定] | タスクが失敗した場合や、レイテンシがしきい値を超えた場合に通知を受信するには、[はい] を選択します。アラートのしきい値とアラート連絡先を指定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 |
| [接続失敗時の再試行時間] | 接続失敗後に DTS が再試行する時間を設定します。範囲:10~1,440 分。デフォルト:720 分。30 分より大きい値を設定してください。複数のタスクが同じソースデータベースを共有する場合、最も最近構成された値が有効になります。再試行中も DTS の課金が発生します。 |
| [その他の問題発生時の再試行前の待機時間] | DDL または DML の失敗後に DTS が再試行するまでの待機時間を設定します。範囲:1~1,440 分。デフォルト:10 分。10 分より大きい値を設定してください。この値は [接続失敗時の再試行時間] より小さくする必要があります。 |
[次へ:タスク設定の保存と事前チェック] をクリックします。
手順 6:事前チェックの実施
DTS はタスクを開始する前に事前チェックを実行します。事前チェックが完了するまでお待ちください。
すべての項目が合格した場合、成功率は 100% になります。
いずれかの項目が不合格の場合、その項目横の情報アイコンをクリックして詳細を確認してください。問題を修正して事前チェックを再実行するか、ブロッキングでない場合は無視して再実行してください。
[次へ:DTS インスタンスタイプの選択] をクリックします。
手順 7:インスタンスクラスの設定とタスクの開始
[新規インスタンスクラス] セクションで、インスタンスクラスを構成します。最小値は 1 DTS ユニット (DU)、最大値は専用クラスター上で利用可能な残り DU 数です。
[Data Transmission Service (従量課金) サービス利用規約] を読み、同意します。
[タスクの開始] をクリックします。
進行状況をモニターするには、クラスター詳細ページに移動し、左側のナビゲーションウィンドウで [クラスタータスクリスト] をクリックします。
次のステップ
変更追跡タスクが実行中になったら、変更データを受信するためのダウンストリームコンシューマーをセットアップします。
コンシューマーグループを作成します。 詳細については、「コンシューマーグループの作成」をご参照ください。
以下のいずれかの方法で追跡されたデータを消費します。