Data Transmission Service (DTS) は、Data Management (DMS) 論理データベースからリアルタイムの増分データ変更をキャプチャできます。これは変更データキャプチャ(CDC)タスクであり、既存のデータベースに対する変更を追跡しますが、初期の完全データロードは実行しません。本ガイドでは、シャード化された PolarDB for MySQL クラスターをバックエンドとする DMS 論理データベース向けに変更追跡タスクを作成する手順について説明します。
DTS による変更追跡の仕組み
DTS は、DMS 論理データベースをサポートする各 PolarDB for MySQL 物理データベースシャードのバイナリログを読み取り、増分変更イベントをコンシューマーへストリーミングします。DTS はバイナリログに依存しているため、制限事項 の「バイナリロギング」に関する要件をすべて満たしたうえで、タスクを開始してください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
構成済みの DMS 論理データベース。詳細については、「論理データベース」をご参照ください。
各 PolarDB for MySQL クラスターでバイナリロギングが有効化されており、
binlog_row_imageがfullに設定されていること。各クラスターでバイナリログの保持期間が 24 時間を超えること。保持期間が短いと、DTS がログを読み取れなくなり、タスクの失敗やデータ損失を招く可能性があります。
ソーステーブルに
PRIMARY KEYまたはUNIQUE制約が設定されており、かつすべてのフィールドが一意であること。これらの制約がないテーブルでは、重複した変更レコードが生成される場合があります。
制限事項
ソースデータベース
| 制約 | 詳細 |
|---|---|
| テーブル制約 | ソーステーブルには、PRIMARY KEY または UNIQUE 制約(すべてのフィールドが一意)が必要です。これらの制約がない場合、追跡された変更に重複が含まれる可能性があります。 |
| テーブル数の上限 | テーブル単位(データベース単位ではない)で追跡する場合、1 つの変更追跡タスクで最大 500 テーブルをサポートします。この上限を超えるとリクエストエラーが発生します。より多くのテーブルを追跡する場合は、複数のタスクをバッチ単位で作成するか、代わりにデータベース全体を追跡してください。 |
| バイナリロギング | バイナリロギングは有効化されている必要があります。binlog_row_image を full に設定し、バイナリログの保持期間を 24 時間以上にしてください。保持期間が短いと、DTS がログセグメントを読み飛ばし、タスクの失敗やデータの不整合を引き起こす可能性があります。これらの要件を満たさない場合、Data Transmission Service (DTS) のサービスレベルアグリーメント(SLA)の対象外となります。 |
その他
| 制約 | 詳細 |
|---|---|
| FLOAT および DOUBLE の精度 | DTS は、FLOAT および DOUBLE カラムの値を ROUND(COLUMN,PRECISION) を使用して取得します。FLOAT のデフォルト精度は 38 桁、DOUBLE のデフォルト精度は 308 桁です。タスクを作成する前に、デフォルト精度が要件を満たすかどうかを確認してください。 |
| DDL ツール | DTS は、gh-ost や pt-online-schema-change によって実行された DDL 操作を追跡しません。これらのツールを使用してスキーマを変更すると、変更追跡クライアントが送信先テーブルへの書き込み時に失敗する可能性があります。 |
| クラシックネットワーク | ApsaraDB RDS for MySQL インスタンスがクラシックネットワークを使用している場合、そのインスタンスには内部エンドポイントが設定されます。 |
変更追跡タスクの作成
ステップ 1:変更追跡タスクページを開く
Data Management (DMS) コンソール にログインします。
上部のナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > 変更追跡 を選択します。
DMS をシンプルモードで使用している場合、左上隅のアイコンにポインターを合わせ、すべての機能 > DTS > 変更追跡 を選択します。あるいは、新しい DTS コンソール を直接開いても構いません。
ステップ 2:リージョンの選択
変更追跡タスク の右側にあるドロップダウンリストから、タスクを作成するリージョンを選択します。
新しい DTS コンソールでは、変更追跡タスクページの Workbench の右側にあるドロップダウンリストからリージョンを選択します。
ステップ 3:ソースデータベースおよびコンシューマーネットワークの設定
タスクの作成 をクリックします。
警告ソースデータベースを指定した後、次に進む前に、ページ上部の 制限事項 セクションを必ずご確認ください。この手順を省略すると、タスクが失敗したり、追跡されたデータがコンシュームされなくなる可能性があります。
以下のパラメーターを設定します。
タスク名
パラメーター 説明 タスク名 変更追跡タスクの名前。DTS がデフォルト名を割り当てますが、識別しやすいように意味のある名前を指定することを推奨します(名前は一意である必要はありません)。 ソースデータベース
パラメーター 説明 既存のデータベース接続を選択 利用可能な接続テンプレートがある場合は、それを選択してください。DTS が残りのパラメーターを自動的に入力します。新しい接続を使用する場合は、この項目を空欄のままにし、以下のパラメーターを手動で入力してください。 データベースタイプ DMS LogicDB を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン DMS 論理データベースが配置されているリージョン。 DMS LogicDB DMS 論理データベースの名前。 データベースアカウント DMS 論理データベースにアクセスする際に使用するユーザー名。物理データベースをホストするすべての PolarDB for MySQL クラスターで、同一のユーザー名およびパスワードを共有する必要があります。また、各クラスターは対応する物理データベースに対して読み取り権限を持つ必要があります。詳細については、「データベースアカウントの作成と管理」をご参照ください。 データベースパスワード データベースアカウントのパスワード。 コンシューマーネットワークタイプ
パラメーター 説明 ネットワークタイプ 固定値:VPC。VPC および vSwitch を選択します。変更追跡クライアントが VPC 内にデプロイされている場合、ネットワーク遅延を最小限に抑えるため、クライアントと同じ VPC および vSwitch を選択してください。これらの設定は、タスク作成後に変更できません。
ステップ 4:接続性のテスト
接続性のテストと続行 をクリックします。
Alibaba Cloud データベースインスタンスおよび ECS でホストされているデータベースの場合、DTS は自動的に DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加します。 オンプレミスデータセンターまたはサードパーティクラウド上の自己管理データベースの場合、DTS サーバーの CIDR ブロックをデータベースのセキュリティ設定に手動で追加してください。 詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
パブリック DTS サーバーの CIDR ブロックをデータベースのホワイトリストまたは ECS セキュリティグループに追加すると、データベースがセキュリティリスクにさらされる可能性があります。続行する前に、以下のような予防措置を講じてください:ユーザー名およびパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストおよびセキュリティグループルールの定期的な監査、Express Connect、VPN Gateway、または Smart Access Gateway を介した DTS への接続など。
ステップ 5:追跡対象オブジェクトおよび高度な設定の構成
基本設定
| パラメーター | 説明 |
|---|---|
| データ変更タイプ | 以下のいずれか、または両方を選択します:データ更新 は、選択したオブジェクトに対する INSERT、DELETE、UPDATE 操作を追跡します。スキーマ更新 は、ソースインスタンス内のすべてのオブジェクトスキーマに対する作成、削除、変更操作を追跡します — 変更追跡クライアントでイベントを下流でフィルター処理できます。 |
| ソースオブジェクト | 「[ソース オブジェクト]」パネルでオブジェクトを選択し、 |
高度な設定
| パラメーター | 説明 |
|---|---|
| モニタリングとアラート | アラート機能を有効化すると、タスクが失敗した場合やレイテンシがしきい値を超えた場合に通知を受け取ることができます。[はい] を選択した場合は、アラートのしきい値と通知設定を構成します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 |
| 失敗した接続の再試行時間 | DTS が接続失敗を検出した後、タスクを失敗としてマークするまでの再試行時間です。有効な値:10~1440 分。デフォルト値:720 分。少なくとも 30 分に設定することを推奨します。複数の変更追跡タスクが同一のソースインスタンスを共有している場合、すべてのタスクの中で最も短い再試行時間が優先されます。再試行期間中は DTS の課金が発生します — ソースデータベースインスタンスがリリースされた場合は、DTS インスタンスを速やかにリリースしてください。 |
| ETL の設定 | 抽出・変換・書き出し(ETL)処理をデータ変換文とともに設定する場合は、はい を選択します。いいえETL とは |
ステップ 6:設定の保存と事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
このタスクの設定に使用される API パラメーターをプレビューするには、ボタンにポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
DTS は、タスクを開始する前に事前チェックを実行します。いずれかの項目が失敗した場合:
失敗した項目の横にある 詳細の表示 をクリックし、報告された問題を修正したうえで、再チェック をクリックします。
無視しても安全なアラートが発生した場合、アラートの詳細の確認 をクリックし、ダイアログで 無視 を選択して確認したうえで、再チェック をクリックします。アラート項目を無視すると、データの不整合が発生する可能性があります。
ステップ 7:事前チェックの完了を待機
成功確率 が 100% になるまで待機し、その後 次へ:インスタンスの購入 をクリックします。
ステップ 8:変更追跡インスタンスの購入
購入 ページで、課金設定を構成します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:一定期間の前払い方式で、長期利用に適しており、契約期間が長いほどコスト効率が高くなります。従量課金:1 時間単位での課金方式で、短期利用に適しています。従量課金インスタンスは、不要になった時点でリリースすることで課金を停止できます。 |
| サブスクリプション期間 | サブスクリプション 課金方法でのみ利用可能です。1~9 ヶ月、または 1、2、3、5 年から選択できます。 |
| リソースグループ設定 | このインスタンスのリソースグループ。デフォルト: デフォルトリソースグループResource Management とは |
ステップ 9:利用規約への同意およびタスクの開始
読み、[Data Transmission Service (従量課金) サービス利用規約] を選択してください。
購入して開始 をクリックします。
変更追跡タスクが開始され、タスクリストに表示されます。
トラブルシューティング
| 症状 | 原因の可能性 | 操作 |
|---|---|---|
| ログフェッチエラーでタスクが失敗する | ソースクラスターのバイナリログが、DTS が読み取る前にパージされました。これは、ログの保持期間が 24 時間未満の場合に発生します。 | バイナリログの保持期間を 24 時間以上に延長し、タスクを再起動してください。 |
| テーブル制約に関する事前チェックでタスクが失敗する | 1 つ以上のソーステーブルに PRIMARY KEY または UNIQUE 制約がありません。 | 該当するテーブルにプライマリキーまたは一意制約を追加し、再度事前チェックを実行してください。 |
| 500 テーブルを超えてタスクを作成しようとしたときにリクエストエラーが発生する | 1 つのタスクにおけるテーブル数の上限は 500 です。 | テーブルを複数の変更追跡タスクに分割するか、個別のテーブルではなくデータベース全体を追跡してください。 |
| 変更追跡クライアントが送信先テーブルへの書き込みに失敗する | gh-ost または pt-online-schema-change を使用して DDL 操作が実行されましたが、DTS はこれらを追跡しません。 | 追跡対象テーブルのスキーマ変更には gh-ost や pt-online-schema-change を使用しないでください。または、DDL 変更を送信先に手動で適用してください。 |
次のステップ
タスクが実行中になったら、下流のクライアントが追跡されたデータをコンシュームできるよう、コンシューマーグループを作成します。
コンシューマーグループを作成および管理します。「コンシューマーグループの作成」を参照してください。
コンシューム方法を選択します。