本トピックでは、Data Transmission Service (DTS) を使用して、自主管理 Db2 for LUW データベースから AnalyticDB for PostgreSQL インスタンスへデータを移行する方法について説明します。この移行パスでは、スキーマ移行、完全なデータ移行、および増分データ移行がサポートされています。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソース Db2 for LUW データベースの合計データサイズよりも大きな利用可能なストレージ容量を持つ AnalyticDB for PostgreSQL インスタンス。インスタンスの作成については、「インスタンスの作成」をご参照ください。
移行されたデータを受け取るためのデータベースを、宛先の AnalyticDB for PostgreSQL インスタンス内に作成済みであること。詳細については、「ベクトルデータのインポート」をご参照ください。
必要な権限を持つデータベースアカウント(「必要な権限」をご参照ください)。
増分データ移行のみの場合:
ソース Db2 for LUW データベースでアーカイブ ログ記録が有効化されており、
logarchmeth1またはlogarchmeth2を使用して構成されます。構成の詳細については、「logarchmeth1」および「logarchmeth2」をご参照ください。
logarchmeth 構成を変更した後は、変更を有効にするためにソースデータベースのバックアップを実行してください。これを実行しない場合、事前チェックで DTS がエラーを返します。
対応するデータベースバージョンについては、「データ移行シナリオの概要」をご参照ください。
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | 無料 |
| 増分データ移行 | 課金対象です。詳細については、「課金概要」をご参照ください。 | — |
必要な権限
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| Db2 for LUW | CONNECT および SELECT | CONNECT および SELECT | DBADM 権限 |
| AnalyticDB for PostgreSQL | — | ターゲットデータベースに対する読み取りおよび書き込み権限 | — |
アカウントの作成および権限付与手順については、以下をご参照ください。
Db2 for LUW: Db2 データベースのインストール用のグループおよびユーザー ID の作成 および 権限の概要
AnalyticDB for PostgreSQL:「データベースアカウントの作成」および「ユーザーおよび権限の管理」
制限事項
スキーマ移行中、DTS はソースデータベースから外部キーを宛先データベースへ移行します。
完全なデータ移行および増分データ移行中、DTS はセッションレベルで一時的に外部キー制約チェックおよびカスケード操作を無効化します。移行中にソースデータベースでカスケード操作または削除操作を実行すると、データの不整合が発生する可能性があります。
ソースデータベースの制限事項
ソースサーバーには十分なアウトバウンド帯域幅が必要です。そうでない場合、移行速度が低下します。
テーブルには PRIMARY KEY またはすべてのフィールドが一意である UNIQUE 制約が必要です。これを満たさない場合、宛先データベースに重複レコードが含まれる可能性があります。
オブジェクト名マッピングを使用してオブジェクトをリネームし、1,000 個を超えるテーブルを移行する場合は、移行タスクを複数に分割するか、データベース全体を移行してください。個別に選択した 1,000 個を超えるテーブルをリネーム対象として指定したタスクは、リクエストエラーで失敗します。
増分データ移行の場合:
ソースデータベースでデータログ機能が有効化されている必要があります。無効化されている場合、DTS は事前チェックに失敗します。
増分移行のみの場合:データログは 24 時間以上保持する必要があります。
完全移行+増分移行の場合:データログは少なくとも 7 日間保持する必要があります。完全移行が完了した後は、保持期間を 24 時間以上に短縮できます。
保持期間が不足している場合、DTS がデータログを読み取れず、タスクが失敗する可能性があります。まれに、データの不整合または損失が発生することもあります。このケースは DTS のサービスレベルアグリーメント(SLA)の適用範囲外となります。
完全なデータ移行中は、ソースデータベースに対して DDL 操作を実行しないでください。このフェーズ中にスキーマを変更すると、タスクが失敗します。
増分移行を伴わない完全なデータ移行のみを実行する場合、移行中にソースデータベースへの書き込みを避けてください。データ整合性を保証するには、スキーマ移行、完全なデータ移行、および増分データ移行を同時に実行してください。
その他の制限事項
増分データ移行では、Db2 for LUW の変更データキャプチャ(CDC)レプリケーション技術が使用されます。CDC には独自のデータ型制限があります。「SQL レプリケーションにおける一般的なデータ制限」をご参照ください。
移行対象として選択できるのはテーブルのみです。Append-optimized(AO)テーブルは宛先テーブルタイプとしてサポートされていません。
スキーマ移行および増分データ移行中、外部キーは宛先データベースへ移行されません。
完全なデータ移行中の同時 INSERT 操作により、テーブルスペースのフラグメントが発生します。完全移行完了後の宛先テーブルスペースは、ソースより大きくなります。
移行中に DTS 以外のツールが宛先データベースへ書き込むと、データの不整合が発生する可能性があります。移行完了後は、オンライン DDL 操作に Data Management(DMS)をご利用ください。「ロックフリー DDL 操作の実行」をご参照ください。
非完全テーブル移行で列マッピングを使用する場合、またはソースと宛先のスキーマが異なる場合、宛先に存在しないソース列のデータは失われます。
可能であれば、ピーク時間帯を避けて移行を実行してください。完全なデータ移行では、両方のデータベースで読み取りおよび書き込みリソースが使用されるため、サーバー負荷が増加します。
自主管理 Db2 for LUW 固有の制限事項
移行タスク実行中にソースデータベースでプライマリ/セカンダリのフェールオーバーが発生した場合、タスクは失敗します。
DTS は移行遅延を、宛先データベースで最後に移行されたレコードのタイムスタンプとソースデータベースの現在時刻の差として算出します。ソースで長期間 DML 操作が行われていない場合、表示される遅延値は不正確になる可能性があります。遅延値を更新するには、ソースで DML 操作を実行してください。データベース全体を選択した場合、1 秒ごとに更新されるハートビートテーブルを作成することを推奨します。
増分移行でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
移行タスクの作成
以下の手順に従って、自主管理 Db2 for LUW データベースから AnalyticDB for PostgreSQL インスタンスへの DTS 移行タスクを設定および開始します。
ステップ 1:データ移行タスクページへ移動
Data Management(DMS)コンソール にログインします。
上部のナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS(DTS) > データ移行 を選択します。
上記の手順は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトおよびスタイルのカスタマイズ」をご参照ください。または、直接「データ移行タスクページ」へアクセスしてください。
ステップ 2:ソースおよび宛先データベースの設定
データ移行タスク の横にあるドロップダウンリストから、移行インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、左上隅からリージョンを選択します。
タスクの作成 をクリックします。タスク作成ウィザードで、以下のパラメーターを設定します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択(任意) | 自動的にパラメーターを入力するために登録済みのインスタンスを選択するか、この項目をスキップして手動でパラメーターを設定してください。 |
| データベースタイプ | DB2 for LUW を選択します。 |
| アクセス方法 | ソースデータベースの配置場所に基づいてアクセス方法を選択します。本例では Self-managed Database on ECS を使用します。その他のアクセス方法については、「事前準備の概要」をご参照ください。 |
| インスタンスリージョン | ソース Db2 for LUW データベースが配置されているリージョン。 |
| Alibaba Cloud アカウント間でのデータ複製 | ソースと宛先が同一の Alibaba Cloud アカウント下にある場合(本例)、いいえ を選択します。 |
| ECS インスタンス ID | ソース Db2 for LUW データベースをホストする Elastic Compute Service(ECS)インスタンスの ID。 |
| ポート番号 | ソース Db2 for LUW データベースのサービスポート。 |
| データベース名 | 移行対象オブジェクトを含むソースデータベースの名前。 |
| データベースアカウント | ソースデータベースのアカウント。必要な権限については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択(任意) | 自動的にパラメーターを入力するために登録済みのインスタンスを選択するか、この項目をスキップして手動でパラメーターを設定してください。 |
| データベースタイプ | AnalyticDB for PostgreSQL を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | 宛先 AnalyticDB for PostgreSQL インスタンスが配置されているリージョン。 |
| インスタンス ID | 宛先 AnalyticDB for PostgreSQL インスタンスの ID。 |
| データベース名 | 移行されたデータを受け取る宛先インスタンス内のデータベース名。 |
| データベースアカウント | 宛先データベースのアカウント。必要な権限については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワード。 |
ステップ 3:接続性のテスト
接続性のテストと続行 をクリックします。
DTS は、Alibaba Cloud データベースインスタンスおよび ECS 上でホストされるデータベースのセキュリティ設定に、自動的に自身の CIDR ブロックを追加します。データセンターまたはサードパーティクラウド上の自己管理データベースの場合は、DTS の CIDR ブロックをデータベースの IP アドレスホワイトリストに手動で追加してください。「オンプレミスデータベースのセキュリティ設定への DTS サーバー CIDR ブロックの追加」をご参照ください。
IP アドレスホワイトリストまたは ECS セキュリティグループルールへの DTS CIDR ブロックの追加にはセキュリティリスクが伴います。実行前に、強力なアカウント認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストエントリの定期監査、Express Connect・VPN Gateway・Smart Access Gateway 経由での DTS 接続など、予防措置を講じてください。
ステップ 4:移行対象および高度な設定の構成
以下のパラメーターを設定します。
移行タイプ
許容可能なダウンタイムに応じて、移行タイプを選択してください。
| オプション | 使用タイミング |
|---|---|
| スキーマ移行 + 完全なデータ移行 | 移行前にソースデータベースへの書き込みを停止できる場合に使用します。初期データのロードが完了すると、タスクは終了します。 |
| スキーマ移行 + 完全なデータ移行 + 増分データ移行(推奨) | 移行中もソースデータベースを本番運用状態に維持する必要がある場合に使用します。増分移行は、切り替え(cut over)まで継続的に変更をキャプチャおよび適用します。 |
増分データ移行 を選択しない場合、データの不整合を防ぐため、移行中にソースデータベースへの書き込みを避けてください。
その他の設定
| パラメーター | 説明 |
|---|---|
| 同期対象の DDL および DML 操作 | 増分移行に含める SQL 操作。サポートされる操作については、「増分移行でサポートされる SQL 操作」をご参照ください。オブジェクト単位の SQL 操作フィルターを設定するには、選択済みオブジェクト セクション内のオブジェクトを右クリックし、ダイアログボックスで操作を選択してください。 |
| 競合テーブルの処理モード | 事前チェックおよびエラー報告:宛先テーブルとソーステーブルの名前が一致する場合、DTS は事前チェックに失敗します。タスク開始前に、オブジェクト名マッピングを使用して競合テーブルをリネームしてください。「オブジェクト名のマッピング」をご参照ください。エラーを無視して続行:DTS は名前競合チェックをスキップします。ソースおよび宛先テーブルのスキーマが一致する場合、プライマリキー値が一致するレコードは移行されません。スキーマが異なる場合、一致する列のみが移行されるか、タスクが失敗する可能性があります。慎重に使用してください。 |
| 宛先インスタンスにおけるオブジェクト名の大文字小文字設定 | 宛先のデータベース、テーブル、および列名の大文字小文字を制御します。デフォルトは DTS デフォルトポリシー です。タスク実行中にエラーが発生しないよう、宛先データベースのデフォルトの大小文字規則(例:小文字)に合わせて設定してください。「宛先インスタンスにおけるオブジェクト名の大文字小文字の指定」をご参照ください。 |
| ソースオブジェクト | 1 つ以上のオブジェクトを選択し、 |
| 選択済みオブジェクト | オブジェクトをリネームするには、右クリックしてオブジェクト名マッピング機能を使用します。複数のオブジェクトを一度にリネームするには、一括編集 をクリックします。「オブジェクト名のマッピング」をご参照ください。WHERE 句による行フィルターを設定するには、オブジェクトを右クリックして条件を指定します。「SQL 条件を使用したデータのフィルタリング」をご参照ください。 |
オブジェクト名マッピングおよびソースと宛先のスキーマの違いにより、宛先に存在しないソース列のデータが失われる可能性があります。
ステップ 5:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを設定します。
データ検証
「データ検証の有効化」をご参照ください。
高度な設定
| パラメーター | 説明 |
|---|---|
| タスクのスケジュールに使用する専用クラスターの選択 | デフォルトでは、DTS が共有クラスター上でタスクをスケジュールします。専用クラスターを使用するには、購入後にここで指定してください。「DTS 専用クラスターとは」をご参照ください。 |
| アラートの設定 | タスクの失敗または移行遅延がしきい値を超えた際に通知を受けるには、はい を選択します。しきい値およびアラート連絡先を指定してください。「モニタリングおよびアラートの設定」をご参照ください。 |
| 接続失敗時の再試行時間 | タスク開始後にソースまたは宛先データベースの接続が失敗した場合の DTS の再試行時間。範囲:10~1440 分。デフォルト:720 分。最低でも 30 分以上に設定してください。この期間内に DTS が再接続できた場合、タスクは再開されます。それ以外の場合はタスクが失敗します。 説明 複数のタスクが同一のソースまたは宛先を共有する場合、最も最近設定された再試行時間が有効になります。再試行中は、DTS インスタンスの課金対象となります。 |
| ソースおよび宛先データベースでその他の問題が発生した際の再試行待機時間 | DDL または DML 操作の失敗時に DTS が再試行する時間。範囲:1~1440 分。デフォルト:10 分。最低でも 10 分以上に設定してください。この値は 接続失敗時の再試行時間 より小さくする必要があります。 |
| 完全なデータ移行のスロットリングの有効化 | 完全なデータ移行の負荷を軽減するためにスロットリングを有効化します。ソースデータベースへのクエリ/秒(QPS)、完全なデータ移行の RPS、および 完全移行のデータ移行速度(MB/s) を設定します。完全なデータ移行 が選択されている場合にのみ表示されます。 |
| 増分データ移行のスロットリングの有効化 | 増分データ移行のスロットリングを有効化します。増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を設定します。増分データ移行 が選択されている場合にのみ表示されます。 |
| 環境タグ | DTS インスタンスを環境(例:本番またはステージング)で識別するための任意のタグ。 |
| ETL の設定 | 抽出・変換・書き出し(ETL)機能を使用するには、はい を選択し、データ処理ステートメントを入力してください。「データ移行またはデータ同期タスクにおける ETL の設定」をご参照ください。 |
ステップ 6:データベースおよびテーブルフィールドの設定(任意)
次へ:データベースおよびテーブルフィールドの設定 をクリックし、AnalyticDB for PostgreSQL へ移行されるテーブルの タイプ、プライマリキー列、および 分散キー を設定します。
このステップは、スキーマ移行 が選択されている場合にのみ適用されます。定義ステータス を すべて に設定すると、すべてのテーブルを表示および変更できます。
プライマリキー列 フィールドでは、複数の列を指定して複合プライマリキーを構成できます。少なくとも 1 つのプライマリキー列を分散キーとしても指定する必要があります。
プライマリキーおよび分散キーの設定の詳細については、「テーブルの管理」および「テーブル分散の定義」をご参照ください。
ステップ 7:事前チェックの実行
次へ:タスク設定の保存および事前チェック をクリックします。
このタスク設定の API パラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック の上にカーソルを合わせ、保存前に OpenAPI パラメーターのプレビュー をクリックしてください。
DTS はタスク開始前に事前チェックを実行します。事前チェックに合格した場合にのみ、タスクが開始されます。
事前チェックが失敗した場合、各失敗項目の横にある 詳細の表示 をクリックし、問題を解決した後、再度事前チェック をクリックしてください。
警告項目が安全に無視できる場合は、警告の詳細の確認 をクリックし、次に 無視、OK、そして 再度事前チェック をクリックしてください。警告を無視すると、データの不整合が発生する可能性があります。
ステップ 8:購入および開始
事前チェックの 成功率 が 100% に達したら、次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、以下の設定を行います。
セクション パラメーター 説明 新規インスタンスクラス リソースグループ 移行インスタンスのリソースグループ。デフォルト: デフォルト リソースグループ。詳細については、「Resource Management とは? インスタンスクラス インスタンスクラスは移行速度を決定します。データ量および所要時間に応じて選択してください。「データ移行インスタンスの仕様」をご参照ください。 [Data Transmission Service (従量課金) 利用規約]を読み、選択します。
購入および開始 をクリックします。タスクはタスクリストに表示され、進行状況を監視できます。
次のステップ
移行されたデータを検証するには、「データ検証の有効化」をご参照ください。
移行完了後は、DMS を使用して宛先データベースでオンライン DDL 操作を実行できます。「ロックフリー DDL 操作の実行」をご参照ください。
ソースと宛先で異なる命名規則を使用する場合、「オブジェクト名のマッピング」をご参照ください。