Data Transmission Service (DTS) を使用すると、PolarDB-X 2.0 インスタンスから自己管理 Oracle データベースへデータを移行できます。一括切り替え(ワンタイムカットオーバー)の場合は、スキーマ移行と完全なデータ移行を選択します。また、トランジション期間中にソースとターゲットを同期したままにし、ダウンタイムを最小限に抑えるには、増分データ移行を追加してください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソース PolarDB-X 2.0 インスタンスの全データサイズよりも大きな空きストレージ容量を持つ自己管理 Oracle データベース
Oracle データベース内に作成済みのスキーマ(Oracle でユーザーを作成すると、スキーマは自動的に作成されます)
ソースおよびターゲットの両方のデータベースで必要な権限を持つデータベースアカウント(「必要な権限」を参照)
移行タイプの選択
開始前に、ご使用のシナリオに合った移行タイプを選択してください。
| シナリオ | 選択する移行タイプ |
|---|---|
| 移行中の書き込みなしで一括切り替えを実施 | スキーマ移行 + 完全なデータ移行 |
| トランジション期間中にソースとターゲットを同期してダウンタイムを最小限に抑える | スキーマ移行 + 完全なデータ移行 + 増分データ移行 |
増分データ移行 を選択しない場合、データ整合性を保つため、移行中はソースデータベースへの書き込みを行わないことを推奨します。
制限事項
ソースデータベースの制限事項
| 制限事項 | 影響 | 操作 |
|---|---|---|
| テーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が必要 | ターゲットデータベースに重複レコードが含まれる可能性あり | 移行前にプライマリキーまたは一意制約を追加 |
| 移行中にテーブルまたはカラムの名前を変更する場合、1 つのタスクでは最大 5,000 個のテーブルをサポート | 制限を超えるタスクでリクエストエラーが発生 | 複数のタスクに分割するか、データベース全体を移行 |
| テーブル名に大文字(uppercase letter)を含むテーブルは、スキーマ移行のみ可能 | これらのテーブルについては完全移行および増分移行がサポートされない | これらのテーブルについては手動でのデータ転送を計画 |
binlog_row_image パラメーターを full に設定する必要があります(バイナリロギングはデフォルトで有効化されています) | 事前チェックが失敗し、タスクを開始できません | binlog_row_image を fullパラメーター設定 |
DTS は、スキーマ移行時にソースデータベースの外部キー(foreign keys)を移行します。
一般的な制限事項
データベースサーバーへの負荷を軽減するため、非ピーク時間帯に移行を実施してください。完全なデータ移行では、ソースおよびターゲットの読み取り・書き込みリソースが使用されます。
完全なデータ移行が完了した後、同時実行の INSERT 操作により、ターゲットのテーブルが断片化(fragmentation)します。ターゲットの表領域(tablespace)の使用量は、ソースよりも大きくなります。
移行中は、データの不整合を防ぐために、送信先にデータを書き込む際には、DTSのみを使用してください。
1 つのカラムの属性のみ変更可能です。基本データ型(data type)の変更はできません。
DTS は、ソースインスタンス内に
dts_health_checkという名前のデータベースおよびha_health_checkという名前のテーブルを作成します。DTS はこのテーブルを定期的に更新し、バイナリログ(binary log)の位置を進めます。
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | Alibaba Cloud からインターネット経由でデータを移行する場合にのみ課金されます。詳細については、「課金概要」をご参照ください。 |
| 増分データ移行 | 課金対象です。詳細については、「課金概要」をご参照ください。 |
増分移行でサポートされる SQL 操作
DTS は、増分データ移行において以下の DML 操作をサポートしています:INSERT、UPDATE、DELETE。
DDL
CREATE TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE、DROP TABLE
必要な権限
移行に使用するデータベースアカウントに、以下の権限を付与してください。
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| ソース PolarDB-X 2.0 インスタンス | SELECT | SELECT | REPLICATION SLAVE、REPLICATION CLIENT、および移行対象オブジェクトに対する SELECT |
| ターゲットの自己管理 Oracle データベース | スキーマに対する所有者権限 | — | — |
データベースアカウントの作成および権限の付与方法:
PolarDB-X 2.0 インスタンス:「データベースアカウントの管理」および「データ同期のためのアカウントに必要な権限」をご参照ください。
自己管理 Oracle データベース:「CREATE USER」および「GRANT」をご参照ください。
データ移行の実行
ステップ 1:データ移行タスクページを開く
Data Management (DMS) コンソール にログインします。
上部のナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > データ移行 を選択します。
ナビゲーションは、DMS コンソールのモードおよびレイアウトによって異なります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトおよびスタイルのカスタマイズ」をご参照ください。また、直接「新しい DTS コンソールのデータ移行タスクページ」にアクセスすることもできます。
ステップ 2:リージョンの選択
データ移行タスク の横にあるドロップダウンリストから、データ移行インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、左上隅のリージョンを選択します。
ステップ 3:ソースおよびターゲットデータベースの構成
タスクの作成 をクリックします。タスク作成ウィザードで、以下のパラメーターを構成します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| タスク名 | タスクの名前です。DTS が自動的にタスク名を割り当てます。タスクを容易に識別できるよう、意味のある名前を指定することを推奨します。一意のタスク名を指定する必要はありません。 |
| 既存の DMS データベースインスタンスを選択(任意。DMS データベースインスタンスを登録していない場合は、このオプションを無視し、以下のセクションでデータベース設定を構成してください) | パラメーターを自動入力するために既存のインスタンスを選択するか、手動で構成する場合は空白のままにしてください。 |
| データベースタイプ | PolarDB-X 2.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 2.0 インスタンスが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | ソースとターゲットが同一アカウント下にある場合は、いいえ を選択します。 |
| インスタンス ID | ソース PolarDB-X 2.0 インスタンスの ID です。 |
| データベースアカウント | ソースインスタンスのデータベースアカウントです。必要な権限については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択(任意。DMS データベースインスタンスを登録していない場合は、このオプションを無視し、以下のセクションでデータベース設定を構成してください) | パラメーターを自動入力するために既存のインスタンスを選択するか、手動で構成する場合は空白のままにしてください。 |
| データベースタイプ | Oracle を選択します。 |
| アクセス方法 | ECS 上の自己管理データベース を選択します。異なるアクセス方法を使用する場合は、事前に必要なネットワーク環境を構築してください。詳細については、「事前準備の概要」をご参照ください。 |
| インスタンス リージョン | ターゲットの自己管理 Oracle データベースが配置されているリージョンです。 |
| ECS インスタンス ID | Oracle データベースをホストする Elastic Compute Service (ECS) インスタンスの ID です。 |
| ポート番号 | Oracle データベースのサービスポートです。デフォルト値:1521。 |
| Oracle タイプ | アーキテクチャを選択します:Non-RAC Instance(SID を指定)または RAC or PDB Instance(Service Name を指定)。 |
| データベースアカウント | ターゲット Oracle データベースのアカウントです。必要な権限については、「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ステップ 4:接続性のテスト
ページ下部で、接続性のテストと続行 をクリックします。
ステップ 5:DTS のネットワークアクセス構成
自己管理データベースのセキュリティ設定(ファイアウォールルールなど)に、DTS サーバーの CIDR ブロックを追加し、インバウンドアクセスを許可します。その後、接続性のテストと続行 をクリックします。
ほとんどの場合、DTS がネットワークアクセスを自動的に処理します。
Alibaba Cloud データベースインスタンス(ApsaraDB RDS、ApsaraDB for MongoDB など):DTS が自動的にその CIDR ブロックをインスタンスの IP アドレスホワイトリストに追加します。
単一 ECS インスタンス上の自己管理データベース:DTS が自動的にその CIDR ブロックを ECS のセキュリティグループルールに追加します。ECS インスタンスがデータベースに到達できることを確認してください。
複数の ECS インスタンス上の自己管理データベース:各 ECS インスタンスのセキュリティグループルールに、手動で DTS の CIDR ブロックを追加します。
オンプレミスまたはサードパーティクラウドのデータベース:データベースの IP アドレスホワイトリストに、手動で DTS の CIDR ブロックを追加します。
DTS サーバーの CIDR ブロックの完全な一覧については、「オンプレミスデータベースのセキュリティ設定への DTS サーバー CIDR ブロックの追加」をご参照ください。
DTS の CIDR ブロックをデータベースまたは ECS のセキュリティ設定に追加すると、セキュリティリスクが生じる可能性があります。実行前に、以下のような予防措置を講じてください:アカウント認証情報(credential)の強化、公開ポート(exposed port)の制限、API 認証(authentication)の有効化、IP ホワイトリストおよびセキュリティグループルールの定期的な監査と不正 CIDR ブロックの禁止、Express Connect、VPN Gateway、または Smart Access Gateway を使用した DTS への接続。
ステップ 6:オブジェクトの選択および移行設定の構成
以下の移行パラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| 移行タイプ | ご使用のシナリオに基づいてタイプを選択します。「移行タイプの選択」をご参照ください。 |
| 競合テーブルの処理モード | 事前チェックおよびエラー報告:ターゲットに同名のテーブルが存在する場合、事前チェックが失敗します。削除できない競合テーブルの名前を変更するには、オブジェクト名マッピング(object name mapping)機能を使用します。「オブジェクト名のマッピング」をご参照ください。エラーを無視して続行:同名テーブルに関する事前チェックをスキップします。主キーが一致するレコードはスキップされますが、スキーマの不一致により部分的な移行やタスクの失敗が発生する可能性があります。 |
| ターゲットインスタンスにおけるオブジェクト名の大文字小文字の処理 | ターゲットにおけるデータベース名、テーブル名、カラム名の大文字小文字のケースを制御します。デフォルト:DTS デフォルトポリシー。「ターゲットインスタンスにおけるオブジェクト名の大文字小文字の指定」をご参照ください。 |
| ソースオブジェクト | カラム、テーブル、またはデータベースを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。テーブルまたはカラムを選択すると、ビュー、トリガー、ストアドプロシージャ(stored procedure)は除外されます。 |
| 選択済みオブジェクト | ターゲットデータベースを右クリックし、スキーマの編集 を選択します。スキーマ名 フィールドに、データを受信する Oracle データベース内のスキーマ名を入力します。スキーマ名には大文字を使用してください。行をフィルターするには、テーブルを右クリックして WHERE 条件を指定します。「SQL 条件を使用したデータのフィルター」をご参照ください。オブジェクト名マッピング機能によるオブジェクト名の変更は、依存オブジェクト(dependent object)の移行失敗を引き起こす可能性があります。 |
ステップ 7:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| タスクのスケジュールに使用する専用クラスターの選択 | デフォルトでは、DTS が共有クラスター(shared cluster)上でタスクをスケジュールします。予測可能なパフォーマンスを得るには、専用クラスター(dedicated cluster)を購入して選択します。「DTS 専用クラスターとは」をご参照ください。 |
| アラートの設定 | いいえ:アラートを送信しません。はい:タスクの失敗または移行遅延(migration latency)がしきい値(threshold)を超えた場合に、アラート連絡先(alert contact)へ通知(notification)を送信します。「モニタリングとアラートの構成」をご参照ください。 |
| 接続失敗時の再試行時間 | 接続失敗後に DTS が再試行する時間です。有効範囲:10~1440 分。デフォルト:720 分。30 分より大きい値を設定してください。この時間内に接続が復旧した場合、タスクは再開されます。それ以外の場合は失敗します。複数のタスクが同一のソースまたはターゲットを共有する場合、最も最近設定された値が適用されます。再試行中は、DTS インスタンスに対して課金されます。 |
| ソースおよびターゲットデータベースでその他の問題が発生した際の再試行までの待機時間 | DDL または DML 操作の失敗後に DTS が再試行する時間です。有効範囲:1~1440 分。デフォルト:10 分。10 分より大きい値を設定してください。この値は、接続失敗時の再試行時間 より小さくする必要があります。 |
| 完全なデータ移行のスロットル機能の有効化 | 完全なデータ移行中の読み取り/書き込みスループット(throughput)を制限し、データベース負荷を軽減します。ソースデータベースへのクエリ数(QPS)、完全なデータ移行の RPS、完全移行のデータ移行速度(MB/s) を構成します。完全なデータ移行 が選択されている場合にのみ表示されます。 |
| 増分データ移行のスロットル機能の有効化 | 増分データ移行中のスループットを制限します。増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を構成します。増分データ移行 が選択されている場合にのみ表示されます。 |
| 環境タグ | DTS インスタンスを識別するための任意のタグです。 |
| ETL の構成 | はい:抽出・変換・書き出し(extract, transform, and load)処理を有効化します。コードエディタ(code editor)でデータ処理文(statement)を入力します。「データ移行またはデータ同期タスクにおける ETL の構成」および「ETL とは」をご参照ください。いいえ:ETL を無効化します。 |
| 順方向および逆方向タスクのハートビートテーブル(heartbeat table)に対する SQL 操作の削除 | はい:ハートビート SQL をソースデータベースに書き込みません。DTS インスタンスに遅延インジケーターが表示される場合があります。いいえ:ハートビート SQL をソースに書き込むため、物理バックアップ(physical backup)やクローンなどの機能に影響を与える可能性があります。 |
ステップ 8:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
次へ:タスク設定の保存と事前チェック の上にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックすると、このタスクの OpenAPI パラメーターを確認できます。
DTS は、移行を開始する前に事前チェック(precheck)を実行します。事前チェックが成功するまで、タスクは開始できません。
チェック項目が失敗した場合、隣の 詳細の表示 をクリックし、問題を修正してから 再び事前チェック をクリックします。
チェック項目に無視可能な警告が表示された場合、警告の詳細の確認 > 無視 > OK をクリックし、その後 再び事前チェック をクリックします。警告を無視すると、データの不整合(data inconsistency)が発生する可能性があります。
成功率 が 100 % になるまで待ち、その後 次へ:インスタンスの購入 をクリックします。
ステップ 9:移行インスタンスの購入
インスタンスの購入 ページで、以下のパラメーターを構成します。
| セクション | パラメーター | 説明 |
|---|---|---|
| 新規インスタンスクラス | リソースグループ | 移行インスタンスのリソースグループ。デフォルト: デフォルトリソースグループ。Resource Management とは |
| インスタンスクラス | インスタンスクラスは移行速度を決定します。データ量および遅延要件に基づいて選択してください。「データ移行インスタンスの仕様」をご参照ください。 |
Data Transmission Service(従量課金)利用規約 のチェックボックスを読み、選択した後、購入して開始 をクリックします。
タスクがタスクリストに表示されます。そこで進行状況を監視できます。