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