Data Transmission Service (DTS) を使用して、自己管理型の IBM Db2 for LUW データベースから PolarDB for MySQL クラスターへ、スキーマ、既存データ、および継続的な変更を継続的にレプリケーションします。DTS は、Db2 の変更データキャプチャ(CDC)レプリケーション技術を活用し、初期の完全ロード完了後に発生する増分変更を追跡します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソースとして使用する Db2 for LUW データベースと、ターゲットとして使用する PolarDB for MySQL クラスターが存在すること。対応バージョンについては、「データ同期シナリオの概要」をご参照ください。
ターゲットクラスターに、ソースデータベースの全データを格納できる十分な空きストレージ容量があること。
ソース Db2 for LUW データベースに対して DBADM 権限が付与されていること。設定手順については、「Db2 データベースインストール用のグループおよびユーザー ID の作成(Linux および UNIX)」および「権限の概要」をご参照ください。
ターゲット PolarDB for MySQL クラスターに対して読み取りおよび書き込み権限が付与されていること。「データベースアカウントの作成と管理」をご参照ください。
Db2 for LUW データベースでログアーカイブが有効化されていること。構成の詳細については、「logarchmeth1」および「logarchmeth2」をご参照ください。logarchmeth1 - プライマリログアーカイブ方式の構成パラメーターlogarchmeth2 - セカンダリログアーカイブ方式の構成パラメーター
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 課金済み。「課金概要 |
サポートされる同期トポロジ
単方向・一対一同期
単方向・一対多同期
単方向・カスケード同期
単方向・多対一同期
詳細については、「同期トポロジ」をご参照ください。
同期可能な SQL 操作
DTS では、DML 操作(INSERT、UPDATE、DELETE)のみを同期します。
制限事項
ソースデータベースの要件
ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、同期速度が低下します。
同期対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が設定されている必要があります。これらの制約がない場合、ターゲットデータベースに重複レコードが生成される可能性があります。
個別のテーブルを同期する際に、ターゲット側でカラム名またはテーブル名の変更(リネーム)を行う場合、1 つのタスクで最大 5,000 個のテーブルをサポートします。選択したテーブル数が 5,000 を超える場合は、複数のタスクに分割するか、代わりにデータベース単位での同期を実行してください。
ソースデータベースでログアーカイブが有効化されている必要があります。無効の場合、事前チェックに失敗し、タスクを開始できません。
同期タイプ別ログ保持要件:
| 同期タイプ | 最低ログ保持期間 |
|---|---|
| 増分データ同期のみ | 24 時間以上 |
| 完全データ同期+増分データ同期 | 最低 7 日間。完全同期完了後は、24 時間以上に短縮できます。 |
必要な期間よりも短い期間でログを保持すると、DTS のサービスレベルアグリーメント(SLA)が無効になります。
CDC 固有の制限事項
これらの制限事項は、増分データ同期が有効な場合にのみ適用されます。
DTS は Db2 for LUW の CDC レプリケーション技術を使用します。この技術固有の制約については、「SQL レプリケーションの一般的なデータ制限」をご参照ください。
MySQL のカラム名は大文字小文字を区別しません。ソース側に、大文字小文字のみが異なる複数のカラム名が存在する場合、それらはターゲット側の同一カラムに書き込まれ、予期しない結果を引き起こす可能性があります。
ソース Db2 for LUW データベースは自己管理データベースです。タスク実行中にソースデータベースでプライマリ/セカンダリ スイッチオーバーが発生すると、タスクが失敗します。
DTS は、ターゲット側の最新レコードのタイムスタンプとソース側の現在時刻を比較することで同期遅延を算出します。ソース側で長期間 DML 操作が行われていない場合、報告される遅延値が不正確になる可能性があります。遅延値を更新するには、ソース側で任意の DML 操作を実行してください。データベース全体を同期する場合は、1 秒ごとに書き込みが行われるハートビートテーブルを作成することで、遅延値の精度を維持できます。
一般的な同期動作
同期タスクは、トラフィックが少ない時間帯(オフピーク時)に実行してください。初期の完全データ同期では、ソースおよびターゲット両方のデータベースで読み取りおよび書き込みリソースが消費されます。
初期の完全データ同期完了後、ターゲットの表領域(tablespace)は、同時 INSERT 操作によるテーブルの断片化(fragmentation)の影響で、ソースより大きくなる可能性があります。
同期中は、データの不整合を防ぐために、送信先へのデータ書き込みを DTS を介して専用に行う必要があります。同期が完了したら、Data Management (DMS) を使用して、DDL ステートメントをオンラインで実行します。「ロックなし DDL 操作の実行」を参照してください。
送信先で DDL 文が失敗した場合、タスクは実行を継続します。 失敗した DDL 文はタスクログで表示できます。 詳細については、「タスクログの表示」をご参照ください。
タスクの [ステータス] が [完了] に変更された後、
analyze table <table_name>を実行して、データが送信先テーブルのディスクに書き込まれたことを確認します。高可用性 (HA) スイッチオーバー シナリオでは、データがメモリ上のみに存在し、失われる可能性があります。
スキーマ同期の動作
DTS は、スキーマ同期時にソースからターゲットへ外部キー(foreign keys)を同期します。
完全および増分データ同期中、DTS はセッションレベルで一時的に外部キー制約(foreign key constraint)のチェックおよびカスケード操作(cascade operations)を無効化します。この期間中にソース側でカスケード更新または削除操作が実行されると、データの不整合が発生する可能性があります。
同期タスクの設定
ステップ 1:データ同期タスクページへ移動
Data Management (DMS) コンソール にログインします。
トップナビゲーションバーで、Data + AI をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > データ同期 を選択します。
操作は、DMS コンソールのモードによって異なります。詳しくは、「簡易モード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。また、「新しい DTS コンソールのデータ同期タスクページ」に直接アクセスすることもできます。
ステップ 2:リージョンの選択
データ同期タスク の右側で、データ同期インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、トップナビゲーションバーでリージョンを選択します。
ステップ 3:ソースおよびターゲットデータベースの設定
タスクの作成 をクリックします。開く データ同期タスクの作成 ウィザードで、以下のパラメーターを設定します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に名前を生成しますが、識別しやすいように意味のある名前を指定することを推奨します。名前の重複は許可されます。 |
| データベースタイプ | DB2 for LUW を選択します。 |
| アクセス方法 | Express Connect、VPN Gateway、または Smart Access Gateway を選択します。 |
| インスタンスリージョン | ソース Db2 for LUW データベースが配置されているリージョンです。 |
| Alibaba Cloud アカウント間のデータ複製 | 同一アカウント内での同期の場合は、いいえ を選択します。 |
| 接続済み VPC | Db2 for LUW データベースに接続されている仮想プライベートクラウド(VPC)の ID です。 |
| IP アドレス | Db2 for LUW データベースのサーバー IP アドレスです。 |
| ポート番号 | ソースデータベースのサービスポートです。デフォルト値:50000。 |
| データベース名 | 同期対象のオブジェクトを含むソース Db2 for LUW データベースの名前です。 |
| データベースアカウント | ソースデータベースのアカウントです。「前提条件」で記載された必要な権限を付与済みであることを確認してください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| データベースタイプ | PolarDB for MySQL を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ターゲット PolarDB for MySQL クラスターが配置されているリージョンです。 |
| PolarDB クラスター ID | ターゲット PolarDB for MySQL クラスターの ID です。 |
| データベースアカウント | ターゲットクラスターのデータベースアカウントです。「前提条件」で記載された必要な権限を付与済みであることを確認してください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ステップ 4:接続性のテスト
ページ下部の 接続性のテストと続行 をクリックします。
DTS は、データベースタイプに応じてホワイトリストの構成を自動的に処理します。
Alibaba Cloud のデータベースインスタンス(例:ApsaraDB RDS、ApsaraDB for MongoDB)の場合:DTS が CIDR ブロックを自動的にインスタンスのホワイトリストに追加します。
Elastic Compute Service (ECS) 上の自己管理データベースの場合:DTS が CIDR ブロックを自動的に ECS のセキュリティグループルールに追加します。ECS インスタンスがデータベースに到達可能であることを確認してください。
データセンターまたはサードパーティクラウド内の自己管理型データベース: DTS の CIDR ブロックをデータベースのホワイトリストに手動で追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストまたはセキュリティグループに追加すると、外部サーバーからのネットワークアクセスが許可されます。続行する前に、これらのリスクを理解・承認し、適切な対策(例:認証情報の強化、公開ポートの制限、API 呼び出しの監査、ホワイトリストルールの定期レビュー、接続には Express Connect/VPN Gateway/Smart Access Gateway の利用を優先)を講じてください。
ステップ 5:同期オブジェクトおよび高度な設定の構成
基本設定
| パラメーター | 説明 |
|---|---|
| 同期タイプ | 増分データ同期 がデフォルトで選択されています。既存データをレプリケーションしたうえで継続的な変更を追跡するには、スキーマ同期 および 完全データ同期 も選択してください。 |
| 競合テーブルの処理モード | 事前チェックとエラー報告オブジェクト名マッピング(デフォルト):ソースおよびターゲットに同名のテーブルが存在する場合、事前チェックが失敗します。必要に応じて、 を使用して、競合するターゲットテーブルの名前を変更してください。エラーを無視して続行:事前チェックをスキップします。完全同期中は、主キーまたは一意キーが一致する既存のターゲットレコードが保持されます。増分同期中は、それらが上書きされます。スキーマが異なる場合、初期化に失敗したり、一部の同期のみが実行されたりする可能性があります。慎重に使用してください。 |
| ターゲットインスタンスにおけるオブジェクト名の大文字小文字の扱い | ターゲット側のデータベース名、テーブル名、カラム名の大文字小文字の扱いを制御します。デフォルト:DTS デフォルトポリシー送信先インスタンスにおけるオブジェクト名の大文字小文字の指定。「」をご参照ください。 |
| ソースオブジェクト | ソースオブジェクト からカラム、テーブル、またはデータベースを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。テーブルまたはカラムを選択した場合、ビュー、トリガー、ストアドプロシージャは同期されません。 |
| 選択済みオブジェクト | 選択済みオブジェクト 内で個別のオブジェクトを右クリックすると、その名前を変更できます。複数のオブジェクトを一度に変更する場合は、一括編集オブジェクト名のマップ をクリックしてください。「」をご参照ください。 |
高度な設定
| パラメーター | 説明 |
|---|---|
| モニタリングとアラート | No: アラート機能を無効化します。Yes: アラート機能を有効化します。アラートのしきい値と通知設定を構成します。詳細については、「モニタリングとアラートの設定」をご参照ください。 |
| ターゲットデータベースのストレージエンジンの選択 | InnoDB(デフォルト):標準ストレージエンジン。X-Engine:オンライントランザクション処理(OLTP)向けストレージエンジン。 |
| 接続失敗時の再試行時間 | タスク開始後の接続失敗時に DTS が再試行する時間を指定します。範囲:10~1,440 分。デフォルト:720 分。少なくとも 30 分以上を設定してください。同じソースまたはターゲットデータベースを共有する複数のデータ同期タスクで異なる再試行時間範囲を指定した場合、最も短い再試行時間範囲が優先されます。再試行中もデータ同期インスタンスの課金は発生します。 |
| ETL の設定 | [はい]: ETL (抽出・変換・書き出し) 処理を有効にします。コードエディタにデータ変換文を入力します。詳細については、「ETL の設定」をご参照ください。[いいえ]: ETL を無効にします。 |
ステップ 6:設定の保存と事前チェックの実行
設定を保存する前に、このタスクの OpenAPI パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存と事前チェック をクリックします。
事前チェックに合格しない限り、タスクは開始できません。事前チェックに失敗した場合は、各失敗項目の横にある 詳細の表示 をクリックし、問題を修正したうえで 再チェック をクリックしてください。安全に無視できるアラート項目については、アラートの詳細の確認 > 無視 > OK > 再チェック の順にクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 7:データ同期インスタンスの購入
成功率 が 100% に達したら、次へ:インスタンスの購入 をクリックします。
購入ページで、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:一定期間の前払い方式で、長期利用にコスト効率が良いです。従量課金:1 時間単位で課金され、短期利用に適しています。不要になった時点でインスタンスを解放すれば、課金を停止できます。 |
| リソースグループ設定 | インスタンスのリソースグループ。デフォルト: default リソースグループ。「Resource Management とは? |
| インスタンスクラス | 同期速度を決定します。スループット要件に基づいてクラスを選択します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション課金方法でのみ利用可能です。選択肢:1~9 か月、または 1、2、3、5 年です。 |
ステップ 8:タスクの開始
Data Transmission Service(従量課金)利用規約 を読み、同意したうえで、購入して開始 をクリックします。確認ダイアログで OK をクリックします。
タスクリストで同期の進行状況を確認できます。