Data Transmission Service (DTS) を使用して、自主管理 Db2 for LUW データベースから PolarDB-X 2.0 インスタンスへ、ダウンタイムを最小限に抑えながらデータを移行します。
移行機能
| 機能 | 対応状況 | 備考 |
|---|---|---|
| 完全なデータ移行 | はい | ソースデータベースの既存データを移行します。 |
| 増分データ移行 | はい | 完全移行完了後に発生する変更を移行します。ソースでアーカイブログが有効化されている必要があります。 |
| スキーマ移行 | はい | 外部キーを移行します。DTS は移行中に一時的に外部キー制約チェックを無効化します。 |
| DML 操作(INSERT、UPDATE、DELETE) | はい | 増分データ移行中にサポートされます。 |
| DDL 操作 | いいえ | 完全データ移行中にソースで DDL を実行すると、タスクが失敗します。 |
前提条件
開始前に、以下の条件を満たしていることを確認してください。
Db2 for LUW データベースおよび PolarDB-X 2.0 インスタンスが用意されていること。対応バージョンについては、「データ移行シナリオの概要」をご参照ください。
PolarDB-X 2.0 インスタンスが MySQL 5.7 と互換であること。
宛先インスタンスの利用可能なストレージ容量が、ソースデータベースの合計サイズを超えること。
移行タスクを開始する前に、宛先インスタンスにデータベースおよびテーブルが作成済みであること。
データベースアカウントに必要な権限が付与済みであること。「必要な権限」をご参照ください。
(増分移行の場合)ソースの Db2 for LUW データベースでアーカイブログが有効化されていること。「アーカイブログの有効化」をご参照ください。
必要な権限
| データベース | 完全なデータ移行 | 増分データ移行 |
|---|---|---|
| Db2 for LUW | CONNECT および SELECT | DBADM 権限 |
| PolarDB-X 2.0 | ターゲットデータベースに対する読み取りおよび書き込み | ターゲットデータベースに対する読み取りおよび書き込み |
権限の付与に関する手順については、「Db2 データベースのインストール用グループおよびユーザー ID の作成」、「権限の概要」、および「アカウントの管理」をご参照ください。
制限事項
ソースデータベースの制限
ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、移行速度が低下します。
移行対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が必要です。これらの制約がない場合、宛先データベースに重複レコードが生成される可能性があります。
テーブルを選択して移行対象とし、宛先でテーブル名またはカラム名を変更する必要がある場合、1 つのタスクで最大 1,000 個のテーブルまでサポートされます。1,000 個を超える場合は、複数のタスクに分割するか、データベース全体を移行してください。
増分移行では、ソースデータベースが以下の要件を満たす必要があります。
アーカイブログが有効化されている必要があります。未有効化の場合、事前チェックに失敗し、タスクを開始できません。
増分のみの移行では、データログを最低 24 時間保持してください。
完全移行および増分移行では、データログを最低 7 日間保持してください。完全移行完了後は、保持期間を 24 時間以上に設定できます。DTS がデータログを取得できない場合、タスクが失敗し、データの不整合または損失が発生する可能性があります。
運用上の制限
完全データ移行中は、ソースデータベースに対して DDL 操作を実行しないでください。スキーマやテーブルに対する DDL 変更は、移行タスクの失敗を引き起こします。
完全データ移行のみを実行する場合、移行中にソースデータベースへの書き込みを行わないでください。データの不整合を回避するため、完全データ移行と増分データ移行の両方を選択することを推奨します。
データ型の制限
DTS は
ROUND(COLUMN,PRECISION)関数を使用して FLOAT および DOUBLE カラムを読み取ります。精度(PRECISION)が指定されていない場合、FLOAT ではデフォルトで 38 桁、DOUBLE では 308 桁が使用されます。移行開始前に、これらのデフォルト値が要件を満たすことを確認してください。完全データ移行中、同時実行の INSERT 操作により、宛先のテーブルが断片化します。完全移行完了後の宛先表領域(tablespace)の使用量は、ソースよりも大きくなります。
CDC の動作
DTS は Db2 for LUW の Change Data Capture(CDC)レプリケーション技術を使用して増分更新を移行します。この技術には固有の制限があります。「SQL レプリケーションの一般的なデータ制限」をご参照ください。
その他の CDC の動作に関する注意点は以下のとおりです。
移行タスク実行中にソースデータベースでプライマリ/セカンダリ スイッチオーバーが発生した場合、タスクが失敗します。
DTS は、宛先で最新に移行されたデータのタイムスタンプと、ソースの現在時刻との差分に基づいて移行遅延を算出します。ソースで長期間 DML 操作が行われない場合、報告される遅延が不正確になる可能性があります。遅延を更新するには、ソースで DML 操作を実行してください。データベース全体を移行する場合は、1 秒ごとにデータを受信または更新するハートビートテーブルを作成してください。
タスクの再開
DTS は、失敗した移行タスクを最大 7 日間自動的に再試行します。ワークロードを宛先インスタンスに切り替える前に、移行タスクを停止またはリリースしてください。あるいは、DTS アカウントの書き込み権限を取り消すために revoke コマンドを実行してください。いずれの措置も講じず、DTS がタスクを再開した場合、ソースからのデータが宛先インスタンスのデータを上書きします。
アーカイブログの有効化
Db2 for LUW からの増分データを移行するには、ソースデータベースでアーカイブログの記録を有効化します。「プライマリログアーカイブ方法」と「セカンダリログアーカイブ方法」をご参照ください。
データ移行を開始する前に、移行によるソースおよび宛先データベースのパフォーマンスへの影響を評価してください。ピーク時間帯を避けて移行を実施してください。完全データ移行では、ソースおよび宛先データベースの読み取りおよび書き込みリソースが使用され、データベースサーバーの負荷が増加します。
移行タスクの作成
「データ移行タスク」ページに移動します。
Data Management(DMS)コンソール にログインします。
トップナビゲーションバーで、DTS をクリックします。
左側ナビゲーションウィンドウで、DTS(DTS) > データ移行 を選択します。
ステップは、DMS コンソールのモードおよびレイアウトによって異なる場合があります。「シンプルモード」および「ビジネス要件に応じて DMS コンソールを設定する」をご参照ください。また、直接「新しい DTS コンソールのデータ移行タスクページ」にアクセスすることもできます。
データ移行タスク の横にあるドロップダウンリストから、移行インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、左上隅のリージョンを選択します。
タスクの作成 をクリックし、ソースおよび宛先データベースを設定します。
警告ソースおよび宛先インスタンスを選択した後、ページ上部に表示される制限事項を確認し、タスクの失敗やデータの不整合を防いでください。
ソースデータベース
パラメーター 説明 タスク名 タスクの名前です。DTS が自動的に名前を生成します。タスクを識別できるように、意味のある名前を指定してください。名前は一意である必要はありません。 データベースタイプ DB2 for LUW を選択します。 アクセス方法 パブリック IP アドレス を選択します。 インスタンスリージョン ソースの Db2 for LUW データベースが配置されているリージョンです。 ドメイン名または IP アドレス ソースデータベースに接続するために使用するパブリック IP アドレスです。 ポート番号 ソースデータベースのサービスポートです。インターネット経由でアクセス可能である必要があります。デフォルト値:50000。 データベース名 ソースの Db2 for LUW データベース名です。 データベースアカウント ソースデータベースのアカウントです。「必要な権限」で、最低限必要な権限をご確認ください。 データベースパスワード データベースアカウントのパスワードです。 暗号化 要件に応じて、[暗号化なし] または [SSL 暗号化] を選択します。 [SSL 暗号化] を選択した場合は、タスクの設定を行う前に、ApsaraDB RDS for MySQL インスタンスで SSL 暗号化を有効化します。詳細については、「ApsaraDB RDS for MySQL インスタンスで SSL 暗号化を設定する」をご参照ください。 宛先データベース
パラメーター 説明 データベースタイプ PolarDB-X 2.0 を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン 宛先の PolarDB-X 2.0 インスタンスが配置されているリージョンです。 インスタンス ID 宛先の PolarDB-X 2.0 インスタンスの ID です。 データベースアカウント 宛先データベースのアカウントです。「必要な権限」で、最低限必要な権限をご確認ください。 データベースパスワード データベースアカウントのパスワードです。 接続性のテストと続行 をクリックします。DTS は、Alibaba Cloud のデータベースインスタンス(例:ApsaraDB RDS for MySQL や ApsaraDB for MongoDB)のホワイトリストに、自動的に自身のサーバー CIDR ブロックを追加します。また、Elastic Compute Service(ECS)上でホストされているデータベースのセキュリティグループルールにも追加します。オンプレミスデータベースやサードパーティのクラウドプロバイダーでホストされている自己管理データベースの場合は、データベースのホワイトリストに DTS サーバーの CIDR ブロックを手動で追加してください。「オンプレミスデータベースのセキュリティ設定への DTS サーバー CIDR ブロックの追加」をご参照ください。
警告DTS サーバーの CIDR ブロックをデータベースのホワイトリストまたはセキュリティグループに追加すると、セキュリティリスクが発生します。予防措置として、ユーザー名およびパスワードの強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストおよびセキュリティグループルールの定期的なレビューなどを実施してください。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway を使用して、データベースと DTS を接続することもできます。
移行対象オブジェクトおよび高度な設定を構成します。
基本設定
パラメーター 説明 移行タイプ 完全なデータ移行 を選択すると、既存データのみが移行されます。完全なデータ移行および増分データ移行 を選択すると、移行中にサービスを継続できます。 説明完全データ移行のみを選択する場合、データの不整合を回避するため、移行中にソースインスタンスへの書き込みを行わないでください。
競合するテーブルの処理モード 事前チェックおよびエラー報告:ソースおよび宛先で同名のテーブルが存在するかどうかをチェックします。同名のテーブルが存在しない場合のみ事前チェックが通過し、タスクを開始できます。名前の競合を処理するには、「オブジェクト名マッピング」機能を使用して、移行されるテーブルの名前を変更してください。エラーを無視して続行:同名のテーブルに関する事前チェックをスキップします。 警告このオプションを選択すると、データの不整合が発生する可能性があります。スキーマが一致する場合、DTS は同じプライマリキーを持つレコードをスキップします。スキーマが異なる場合、一部のカラムのみが移行されるか、タスクが失敗する可能性があります。
ソースオブジェクト ソースオブジェクト セクションからオブジェクトを選択し、
アイコンをクリックして 選択済みオブジェクト に追加します。説明テーブルまたはカラムを選択すると、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトは除外されます。
選択済みオブジェクト 選択済みオブジェクト 内でオブジェクトを右クリックすると、単一オブジェクトの名前を変更できます。「単一オブジェクトの名前のマッピング」をご参照ください。複数のオブジェクトを一度に名前変更するには、一括編集 をクリックします。「複数のオブジェクト名を一度にマッピング」をご参照ください。 説明オブジェクトの名前変更により、依存オブジェクトの移行が失敗する可能性があります。行単位でデータをフィルターするには、オブジェクトを右クリックして WHERE 条件を指定してください。「SQL 条件を使用したデータのフィルタリング」をご参照ください。テーブルに対して特定の DML または DDL 操作のみを移行するには、オブジェクトを右クリックして移行対象の操作を選択してください。
高度な設定
パラメーター 説明 アラートの設定 タスクの失敗や移行遅延がしきい値を超えた際に通知を受けるには、はい を選択します。アラートのしきい値および連絡先を指定してください。「DTS タスク作成時のモニタリングおよびアラート機能の設定」をご参照ください。アラートを無効化するには、いいえ を選択します。 失敗した接続の再試行時間 タスク開始後に、DTS が失敗した接続を再試行する時間範囲です。有効値:10~1440 分。デフォルト値:720 分。30 分より大きい値を設定してください。指定された範囲内で DTS が再接続できた場合、タスクは再開されます。それ以外の場合は、タスクが失敗します。 説明複数のタスクが同じソースまたは宛先データベースを共有し、異なる再試行時間設定を持っている場合、最も最近設定された値が適用されます。DTS は再試行操作に対して課金されます。ソースおよび宛先インスタンスがリリースされた後は、速やかに DTS インスタンスをリリースしてください。
次へ:タスク設定の保存と事前チェック をクリックします。
DTS は、移行タスクを開始する前に事前チェックを実行します。いずれかの項目が失敗した場合、「詳細の表示」をクリックして原因を確認し、問題を解決してください。その後、「再チェック」をクリックします。無視可能なアラート項目については、「アラートの詳細の確認」をクリックし、「無視」>「OK」>「再チェック」の順にクリックしてください。アラート項目を無視すると、データの不整合が発生する可能性があります。
成功率 が 100 % になるまで待機し、「次へ:インスタンスの購入」をクリックします。
インスタンスの購入 ページで、移行インスタンスのインスタンスクラスを選択します。
パラメーター 説明 インスタンスクラス 移行速度はインスタンスクラスによって異なります。ワークロードに応じてクラスを選択してください。「データ移行インスタンスの仕様」をご参照ください。 「Data Transmission Service(従量課金)サービス利用規約」を読み、チェックボックスをオンにして同意します。
購入して開始 をクリックします。タスクリストでタスクの進行状況を監視してください。
次のステップ
移行が完了したら、ワークロードを宛先インスタンスに切り替える前に、移行タスクを停止してください。DTS は失敗した移行タスクを最大 7 日間自動的に再試行します。適切なタイミングでタスクを停止またはリリースしない場合、タスクの再開時にソースからのデータが宛先を上書きする可能性があります。フェイルバック目的でタスクを継続して実行する場合は、revoke コマンドを使用して DTS アカウントの書き込み権限を取り消し、ソースデータによる宛先の上書きを防止してください。