Data Transmission Service (DTS) は、CDC レプリケーションを用いて、Db2 for LUW(Linux、UNIX、Windows)データベースの変更データを自己管理 Kafka クラスターにストリーミングします。このガイドでは、前提条件の確認から実行中のタスク構成まで、同期タスクの設定手順について説明します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Kafka クラスターのバージョンが 0.10.1.0 ~ 2.7.0 であること
ソース Db2 for LUW データベースの全データ(完全データ同期に必要)を格納できるだけの、Kafka クラスター上の十分な空きストレージ容量があること
ソース Db2 for LUW データベースに対するデータベース管理者権限があること
ソース Db2 for LUW データベースでログアーカイブが有効化されていること —
LOGARCHMETH1またはLOGARCHMETH2(または両方)を設定してください。詳細については、「logarchmeth1 — プライマリログアーカイブ方法の構成パラメーター」および「logarchmeth2 — セカンダリログアーカイブ方法の構成パラメーター」をご参照ください。
制限事項
外部キー
DTS は外部キーを同期しません。ソースデータベースにおけるカスケード操作および削除操作は、送信先にはレプリケートされません。
ソースデータベースの制限
| 制限事項 | 詳細 |
|---|---|
| アウトバウンド帯域幅 | ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、同期速度が低下します。 |
| プライマリキーまたは一意制約 | 同期対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。これらの制約がない場合、送信先に重複レコードが発生する可能性があります。 |
| 1 タスクあたりのテーブル数 | オブジェクトとしてテーブルを選択し、送信先でテーブル名または列名の変更を予定している場合、1 タスクでサポートされる最大テーブル数は 5,000 個 です。この上限を超えるとリクエストエラーが発生します。その場合は、複数のタスクに分割するか、データベースレベルでの同期を実行してください。 |
| 増分のみのタスクにおけるログ保持期間 | ログを 24 時間以上 保持してください。DTS がログを読み取れない場合、タスクが失敗したり、データの不整合が発生したりする可能性があります。 |
| 完全 + 増分のタスクにおけるログ保持期間 | タスク開始前に、ログを 最低 7 日間 保持してください。完全同期が完了した後は、保持期間を 24 時間以上に短縮できます。前述の要件に基づいて保持期間を設定してください。これを怠ると、DTS の SLA で保証されるサービスの信頼性またはパフォーマンスが確保されない場合があります。 |
CDC 固有の制限
DTS は、増分データに対して Db2 for LUW の CDC レプリケーション技術を使用します。この技術には独自の制限事項があります。「SQL レプリケーションの一般的なデータ制限事項」をご参照ください。
その他の制限
ピーク時を避けて同期を実行してください。完全データ同期は、ソースおよび送信先データベースの読み取り・書き込みリソースを消費し、サーバー負荷を高める可能性があります。
完全同期後に、送信先の表領域は、同時 INSERT 操作による断片化の影響で、ソースよりも大きくなります。
同期中にデータを送信先に書き込む場合は、DTS を通じてのみ行う必要があります。これにより、データの不整合を防止できます。同期が完了した後は、Data Management (DMS) を使用してオンラインで DDL 文を実行できます — 詳細については、「ロックなし DDL 操作の実行」をご参照ください。
タスク実行中にソースでプライマリ/セカンダリ スイッチオーバーが発生した場合、タスクは失敗します。
同期中に送信先の ApsaraMQ for Kafka インスタンスをスケールアップまたはスケールダウンした場合、インスタンスを再起動してください。
同期遅延
DTS は、送信先で最新に同期されたレコードのタイムスタンプと、現在のソースのタイムスタンプを比較することで同期遅延を算出します。ソースで長期間 DML 操作が行われていない場合、報告される遅延値は不正確になる可能性があります。遅延値を更新するには、ソースで DML 操作を実行してください。
データベース全体を同期する場合は、ハートビートテーブルを作成してください。DTS はハートビートテーブルを 1 秒ごとに更新し、遅延値の精度を維持します。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 有料 — 詳細については、「課金概要 |
サポートされる同期トポロジ
単方向 1 対 1 同期
単方向 1 対多 同期
単方向カスケード同期
単方向 多対 1 同期
詳細については、「同期トポロジ」をご参照ください。
同期可能な SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
同期タスクの作成
ステップ 1:データ同期タスクページを開く
Data Management (DMS) コンソール にログインします。
上部ナビゲーションバーで、Data + AI をクリックします。
左側ナビゲーションウィンドウで、DTS (DTS) > データ同期 を選択します。
ナビゲーション パスは、コンソール モードおよびレイアウトによって異なる場合があります。「シンプル モード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、「データ同期タスク ページ」に直接移動することもできます。
ステップ 2:リージョンの選択
データ同期タスク の右側にあるリージョンドロップダウンから、同期インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、上部ナビゲーションバーからリージョンを選択します。
ステップ 3:ソースおよび送信先データベースの構成
タスクの作成 をクリックします。ウィザードで、以下のパラメーターを構成します。
タスク情報
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に名前を生成しますが、タスクを識別しやすいように、意味のある名前を指定することを推奨します(一意である必要はありません)。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| DMS データベースインスタンスの選択 | 既存のデータベースインスタンスを選択するか、空白のままにして手動で構成します。既存のインスタンスを選択した場合、DTS が残りのパラメーターを自動入力します。 |
| データベースタイプ | ここでは DB2 for LUW を選択します。 |
| アクセス方法 | ソースデータベースのデプロイ場所に応じて、アクセス方法を選択します。本例では ECS 上の自己管理データベース を使用します。ソースが自己管理データベースの場合、事前にネットワーク環境を構築する必要があります。「事前準備の概要」をご参照ください。 |
| インスタンスリージョン | ソース Db2 for LUW データベースが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ同期 | Alibaba Cloud アカウント間でデータを同期するかどうかを指定します。本例では いいえ を選択します。 |
| ECS インスタンス ID | ソースデータベースをホストする Elastic Compute Service (ECS) インスタンスの ID です。 |
| ポート番号 | ソース Db2 for LUW データベースのサービスポートです。デフォルト値:50000。 |
| データベース名 | ソース Db2 for LUW データベースの名前です。 |
| データベースアカウント | ソースデータベースへの接続に使用するユーザー名です。このアカウントにはデータベース管理者権限が必要です。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
送信先データベース
| パラメーター | 説明 |
|---|---|
| DMS データベースインスタンスの選択 | 既存のデータベースインスタンスを選択するか、空白のままにして手動で構成します。 |
| データベースタイプ | ここでは Kafka を選択します。 |
| アクセス方法 | Kafka クラスターのデプロイ場所に応じて、アクセス方法を選択します。本例では ECS 上の自己管理データベース を使用します。「事前準備の概要」でネットワーク構成要件をご確認ください。 |
| インスタンスリージョン | 送信先 Kafka クラスターが配置されているリージョンです。 |
| ECS インスタンス ID | Kafka クラスターをホストする ECS インスタンスの ID です。マルチノードクラスターの場合は、任意の 1 ノードを選択してください。DTS は自動的にすべてのノードのトピック情報を検出します。 |
| ポート番号 | Kafka クラスターのサービスポートです。デフォルト値:9092。 |
| データベースアカウント | Kafka クラスターへの接続に使用するユーザー名です。認証が無効な場合は、空白のままにしてください。 |
| データベースパスワード | Kafka アカウントのパスワードです。認証が無効な場合は、空白のままにしてください。 |
| Kafka バージョン | 自己管理 Kafka クラスターのバージョンです。バージョン 1.0 以降の場合は、1.0 より後 を選択します。 |
| 暗号化 | 接続暗号化方式です。ビジネスおよびセキュリティ要件に応じて、非暗号化 または SCRAM-SHA-256 を選択します。 |
| トピック | 送信先トピックです。ドロップダウンリストから選択します。 |
| DDL 情報を格納するトピック | DDL 情報を格納するトピックです。空白のままにした場合、DDL 情報は トピック で指定したトピックに格納されます。 |
| Kafka Schema Registry の使用 | Avro スキーマの保存および RESTful API を介した取得のために Kafka Schema Registry を使用するかどうかを指定します。いいえ を選択するとスキップされ、はい を選択した場合は、Kafka Schema Registry の URL または IP アドレスを指定します。 |
ステップ 4:接続性のテスト
ページ下部の 接続性のテストと続行 をクリックします。
DTS は、Alibaba Cloud データベースインスタンスおよび ECS でホストされるデータベースのセキュリティ設定に、自社サーバーの CIDR ブロックを自動的に追加します。データセンター内またはサードパーティクラウド上のデータベースの場合は、DTS サーバーの CIDR ブロックをデータベースのホワイトリストに手動で追加してください — 詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、セキュリティリスクが生じる可能性があります。実行前に、以下のような予防措置を講じてください:ユーザー名およびパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストおよびセキュリティグループルールの定期的な監査、不正な CIDR ブロックの削除。より高いセキュリティを確保するには、Express Connect、VPN Gateway、または Smart Access Gateway を使用して、データベースと DTS を接続することを推奨します。
ステップ 5:オブジェクトおよび高度な設定の構成
基本設定
| パラメーター | 説明 |
|---|---|
| 同期タイプ | デフォルトでは 増分データ同期 が選択されています。さらに、スキーマ同期 および 完全データ同期 も選択してください。DTS はまず完全同期を実行して既存のデータをコピーし、それを増分同期のベースラインとして使用します。 |
| 競合テーブルの処理モード | ソーステーブルと同名の送信先テーブルを DTS がどのように処理するかを指定します:事前チェックとエラー報告(デフォルト)— 同名のテーブルが存在する場合、事前チェックが失敗します;送信先テーブルのクリア — 同名の送信先テーブルのデータを同期前にクリアします(注意して使用してください);エラーを無視して続行 — 名前の競合チェックをスキップします。このオプションを選択した場合、データの不整合が発生する可能性があります:完全同期中は、一致するプライマリキーを持つ既存のレコードが保持され、増分同期中は既存のレコードが上書きされます。スキーマが異なる場合、一部の列が同期されないか、タスクが失敗する可能性があります。送信先テーブルを削除せずに名前の競合を解決するには、オブジェクト名マッピング機能を使用してください。「オブジェクト名のマッピング」をご参照ください。 |
| Kafka 内のデータ形式 | 送信先 Kafka トピックに格納されるレコードの形式です。デフォルト値:DTS Avro。形式の詳細については、「メッセージキュー内のデータ形式」をご参照ください。 |
| Kafka パーティションへのデータ送信ポリシー | DTS がレコードを Kafka パーティションにルーティングする方法です。「Kafka パーティションへのデータ同期ポリシーの指定」をご参照ください。 |
| 送信先インスタンスにおけるオブジェクト名の大文字小文字設定 | 送信先のデータベース名、テーブル名、列名を大文字または小文字で表示するかどうかを制御します。デフォルト値:DTS デフォルトポリシー宛先インスタンスにおけるオブジェクト名の大文字/小文字の指定。「」をご参照ください。 |
| ソースオブジェクト | ソースオブジェクト セクションからオブジェクトを選択し、右向き矢印アイコンをクリックして 選択済みオブジェクト に移動します。テーブル、列、データベースのいずれかを選択できます。テーブルまたは列を選択した場合、ビュー、トリガー、ストアドプロシージャは除外されます。 |
| 選択済みオブジェクト | 送信先で単一オブジェクトの名前を変更するには、このセクションでそのオブジェクトを右クリックします — 「単一オブジェクトの名前をマッピングする」をご参照ください。複数のオブジェクトを一度に名前を変更するには、[一括編集] をクリックします — 「複数のオブジェクト名を一度にマッピングする」をご参照ください。SQL 条件で行をフィルターするには、オブジェクトを右クリックして WHERE 条件を指定します — 「フィルター条件を指定する」をご参照ください。 |
高度な設定
| パラメーター | 説明 |
|---|---|
| モニタリングとアラート | タスクの失敗や同期遅延が大きい場合にアラート機能を有効にするかどうかを設定します。[いいえ] を選択するとスキップされます。[はい] を選択した場合は、アラートのしきい値と通知設定を構成します。詳細については、「DTS タスク作成時のモニタリングとアラートの設定」をご参照ください。 |
| 接続失敗時のリトライ時間 | タスク開始後に DTS が接続失敗をリトライする時間を設定します。範囲:10~1440 分。デフォルト:720 分。30 分以上に設定することを推奨します。この時間内に DTS が再接続できればタスクは再開されますが、それ以外の場合は失敗します。複数のタスクで同じソースまたはターゲットデータベースを共有している場合、最も短いリトライ時間が適用されます。リトライ試行中も DTS インスタンスに対して課金されることにご注意ください。 |
| ETL の設定 | 抽出・変換・書き出し (ETL) 処理を有効にするかどうかを設定します。[はい] を選択すると、コードエディタにデータ変換の文を入力します。詳細については、「データ移行またはデータ同期タスクでの ETL 設定」をご参照ください。[いいえ] を選択するとスキップされます。ETL の概要については、「ETL とは |
ステップ 6:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
このタスク構成の OpenAPI パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
DTS はタスク開始前に事前チェックを実行します。いずれかの項目が失敗した場合:
失敗した項目の横にある 詳細の表示 をクリックし、問題を解決してから再度事前チェックを実行してください。
無視可能なアラート項目の場合は、アラート詳細の確認 をクリックし、ダイアログで 無視 を選択して OK をクリックし、再チェック をクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 7:インスタンスの購入
成功率 が 100 % に達するまで待ってから、次へ:インスタンスの購入 をクリックします。
購入ページで、以下の項目を構成します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション: 固定期間 (1〜9 か月、または 1、2、3、5 年) 分を前払いします。長期利用の場合、コスト効率が高くなります。従量課金: 時間単位で課金されます。短期利用に適しています。インスタンスが不要になった場合はリリースすることで、課金を停止できます。 |
| リソースグループの設定 | このインスタンスが属するリソースグループです。デフォルト: デフォルトのリソースグループ。詳細については、「Resource Management とは |
| インスタンスクラス | 同期スループットのクラスです。データ量とレイテンシーの要件に基づいて選択します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 |
| サブスクリプション期間 | サブスクリプションの期間です。サブスクリプション の課金方法でのみ利用可能です。 |
[Data Transmission Service(従量課金)サービス利用規約] を読み、選択し、次に [購入して開始] をクリックします。確認ダイアログで [OK] をクリックします。
タスクはタスクリストに表示されます。そこから進行状況を監視できます。