Data Transmission Service (DTS) は、完全なデータ移行、増分データ移行、またはその両方を使用して、自己管理 Oracle データベースから PolarDB-X 2.0 インスタンスにデータを移行します。両方の移行タイプを組み合わせることで、移行中もソースデータベースをオンラインに保つことができます。
前提条件
開始する前に、以下を確認してください。
Oracle データベースのバージョンが 9i、10g、11g、12c、18c、または 19c であること
Oracle データベースで補足ログ (SUPPLEMENTAL_LOG_DATA_PK および SUPPLEMENTAL_LOG_DATA_UI) が有効になっていること。詳細については、「Supplemental Logging」をご参照ください。
Oracle データベースがアーカイブログモードで実行されており、アーカイブログファイルにアクセス可能で、適切な保持期間が設定されていること。詳細については、「Managing Archived Redo Log Files」をご参照ください。
Oracle データベースのサービスポートがインターネット経由でアクセス可能であること
移行先の PolarDB-X 2.0 インスタンスが作成されており、データベースエンジンが MySQL 5.x であること。詳細については、「PolarDB-X インスタンスの作成」をご参照ください。
移行先の PolarDB-X 2.0 インスタンス内のデータベースが ApsaraDB RDS for MySQL インスタンスに基づいて作成されていること。DTS は、PolarDB for MySQL クラスターに基づいて作成された PolarDB-X 2.0 データベースをサポートしていません。
ApsaraDB RDS for MySQL インスタンスの利用可能なストレージ容量が、Oracle データベースの総データサイズよりも大きいこと
ソースの Oracle データベースから移行するテーブルのデータ型に基づいて、移行先の PolarDB-X 2.0 インスタンスにデータベースとテーブルが手動で作成されていること。Oracle データベースと PolarDB-X 2.0 インスタンス間のスキーマ移行はサポートされていません。詳細については、「データベースの作成」および「基本的な SQL 操作」をご参照ください。
Oracle と PolarDB-X のデータ型は 1 対 1 で対応していません。移行前に、移行先の PolarDB-X インスタンスで対応するデータ型を定義してください。詳細については、「異種データベース間のデータ型マッピング」をご参照ください。
制限事項
パフォーマンスへの影響:DTS は完全なデータ移行中に両方のデータベースの読み取りおよび書き込みリソースを消費します。両方のデータベースの CPU 使用率が 30% 未満のオフピーク時に移行を実行してください。
プライマリキーまたは一意制約が必要:移行するテーブルには PRIMARY KEY または UNIQUE 制約が必要であり、すべてのフィールドが一意である必要があります。そうでない場合、ターゲットデータベースに重複レコードが含まれる可能性があります。
VPC を使用した Oracle RAC: Oracle データベースがリアルアプリケーションクラスター (RAC) アーキテクチャを使用し、仮想プライベートクラウド (VPC) 経由で DTS に接続する場合は、各 RAC ノードの Single Client Access Name (SCAN) IP アドレスと仮想 IP アドレス (VIP) を VPC に接続してルートを設定します。 詳細については、「VPN Gateway を使用してデータセンターを DTS に接続する」をご参照ください。
重要DTS コンソールでソースの Oracle データベースを設定する際は、データベースエンドポイントまたは IP アドレスとして SCAN の IP アドレスを指定してください。
自動再開のリスク:移行タスクが失敗し、DTS が自動的に再開した場合、ワークロードを移行先に切り替える前にタスクを停止またはリリースしてください。そうしないと、再開されたタスクのアクティビティによって、移行先のデータがソースデータで上書きされてしまいます。
VARCHAR2 の空文字列:Oracle の VARCHAR2 フィールドに空文字列 (Oracle では null として評価される) が含まれており、移行先の対応するフィールドに非 NULL 制約がある場合、移行タスクは失敗します。
外部キー:スキーマ移行では、外部キーがソースから移行先に移行されます。完全なデータ移行および増分データ移行中、DTS はセッションレベルで外部キー制約チェックとカスケード操作を一時的に無効にします。移行中にソースでカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。
課金
| 移行タイプ | タスク構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行と完全なデータ移行 | 無料 | Alibaba Cloud からインターネット経由で移行する場合にのみ課金されます。課金概要をご参照ください。 |
| 増分データ移行 | 有料です。課金概要をご参照ください。 | — |
移行パスの選択
ダウンタイムを許容できるかどうかに基づいて移行パスを選択してください。
| パス | 選択する移行タイプ | 使用場面 |
|---|---|---|
| 完全移行のみ | スキーマ移行 + 完全なデータ移行 | ダウンタイムが許容可能。移行前にソースへの書き込みを停止する |
| ゼロダウンタイム移行 | スキーマ移行 + 完全なデータ移行 + 増分データ移行 | 移行中、ソースをオンラインに保つ必要がある |
増分データ移行は INSERT、DELETE、UPDATE 操作のみをサポートします。DDL 操作は増分移行できません。
増分データ移行の仕組み
DTS は Oracle データベースから REDO ログファイルを取得し、変更をリアルタイムで PolarDB-X 2.0 に適用します。これにより、ソースがトラフィックを処理し続けている間も移行先は同期され、ほぼゼロダウンタイムでのカットオーバーが可能になります。
増分移行なしの完全移行の場合、ソースと移行先の間でデータの一貫性を保つために、移行中はソースの Oracle データベースへの書き込みを避けてください。
必要な権限
Oracle データベースアカウントの権限
| 移行タイプ | 必要な権限 |
|---|---|
| 完全なデータ移行 | スキーマオーナー権限 |
| 増分データ移行 | データベース管理者 (DBA) 権限 |
Oracle アカウントの作成と権限付与の手順については、「CREATE USER」および「GRANT」をご参照ください。
PolarDB-X 2.0 アカウントの権限
完全なデータ移行と増分データ移行の両方で、データベースアカウントには移行先データベースへの書き込み権限が必要です。詳細については、「アカウントの管理」をご参照ください。
移行タスクの作成
データ移行タスクページに移動します。
Data Management (DMS) コンソールにログインします。
上部のナビゲーションバーで、DTS にポインターを合わせます。
DTS (DTS) > データ移行 を選択します。
ナビゲーション オプションは、DMS コンソール モードおよびレイアウトによって異なります。詳細については、「シンプル モード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、DTS コンソールのデータ移行ページに直接アクセスすることもできます。
データ移行タスク の右側にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。
新しい DTS コンソールでは、左上隅でリージョンを選択します。
[タスクの作成] をクリックし、ソースデータベースとターゲットデータベースを設定します。
ソースデータベース
パラメーター 説明 タスク名 DTS タスクの名前。DTS は自動的に名前を生成します。簡単に識別できるように、わかりやすい名前を使用してください。名前は一意である必要はありません。 データベースタイプ [Oracle] を選択します。 アクセス方法 ソースデータベースがデプロイされている場所に基づいてアクセス方法を選択します。この例では [ECS 上の自己管理データベース] を使用します。デプロイメントネットワークの要件については、「準備の概要」をご参照ください。 インスタンスリージョン ソースの Oracle データベースが存在するリージョン。 ECS インスタンス ID Oracle データベースをホストしている Elastic Compute Service (ECS) インスタンスの ID。 ポート番号 Oracle データベースのサービスポート。デフォルト:1521。 Oracle タイプ Oracle のアーキテクチャタイプ。この例では [RAC または PDB インスタンス] を使用します。[非 RAC インスタンス] を選択して [SID] を指定するか、[RAC または PDB インスタンス] を選択して [サービス名] を指定します。 データベースアカウント ソースの Oracle データベースのデータベースアカウント。 データベースパスワード データベースアカウントのパスワード。 宛先データベース
パラメーター 説明 データベースタイプ [PolarDB-X 2.0] を選択します。 アクセス方法 [Alibaba Cloud インスタンス] を選択します。 インスタンスリージョン 移行先の PolarDB-X 2.0 インスタンスが存在するリージョン。 インスタンス ID 移行先の PolarDB-X 2.0 インスタンスの ID。 データベースアカウント 移行先インスタンスのデータベースアカウント。 データベースパスワード データベースアカウントのパスワード。 [接続テストと次へ] をクリックします。
警告DTS は、そのサーバー CIDR ブロックを Alibaba Cloud データベースインスタンスおよび ECS セキュリティグループのセキュリティ設定に自動的に追加します。データセンターまたはサードパーティクラウドの自己管理データベースの場合、DTS サーバー CIDR ブロックをデータベースのホワイトリストに手動で追加します。追加する CIDR ブロックについては、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。ホワイトリストまたはセキュリティグループに DTS CIDR ブロックを追加すると、セキュリティ上のリスクが生じます。続行する前に、アカウントの認証情報の強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期的な監査などの予防策を講じてください。Express Connect、VPN Gateway、または Smart Access Gateway を使用して、データベースを DTS に接続することもできます。移行タスクが完了またはリリースされたら、ホワイトリストまたはセキュリティグループルールから DTS CIDR ブロックを削除します。
移行するオブジェクトを選択し、タスク設定を構成します。
基本設定
パラメーター 説明 同期タイプ 選択したパスに基づいて移行タイプを選択します。[スキーマ移行] + [完全データ移行] は完全移行のみの場合、またはゼロダウンタイム移行の場合は [増分データ移行] を追加します。 競合するテーブルの処理モード [事前チェックしてエラーを報告]オブジェクト名マッピング機能:移行先でソーステーブルと同じ名前のテーブルをチェックします。競合が存在する場合、事前チェックは失敗し、タスクは開始されません。を使用して、競合するテーブルの名前を変更します。[エラーを無視して続行]:名前の競合チェックをスキップします。完全移行中、競合するレコードはスキップされ、既存の移行先レコードが保持されます。増分移行中、競合するレコードは移行先レコードを上書きします。注意して使用してください。 ソースオブジェクト [ソースオブジェクト] セクションからオブジェクトを選択し、矢印アイコンをクリックして [選択したオブジェクト] に移動します。 選択したオブジェクト 単一のオブジェクトの名前を変更するには、[選択済みオブジェクト]でそのオブジェクトを右クリックします。複数のオブジェクトを一度に名前を変更するには、[一括編集]をクリックします。詳細については、「オブジェクト名のマップ」をご参照ください。オブジェクトの名前を変更すると、依存オブジェクトが移行に失敗する可能性があります。 詳細設定
パラメーター 説明 モニタリングとアラート タスクが失敗した場合や移行遅延がしきい値を超えた場合に通知を受信するには、[Yes] を選択します。アラートのしきい値と通知設定を構成してください。[No] を選択すると、アラート機能はスキップされます。構成の詳細については、「Configure monitoring and alerting」をご参照ください。 接続失敗時のリトライ時間 DTS が接続失敗時に再試行を行う時間範囲です。範囲:10~1440 分。デフォルト:120 分。このパラメーターは 30 分を超える値に設定することを推奨します。リトライ期間内に DTS が再接続できれば、タスクは自動的に再開されます。それ以外の場合は、タスクは失敗します。同一のソースまたは宛先インスタンスを共有する複数のタスクで異なるリトライ設定が行われた場合、最も最近設定された値が適用されます。DTS はリトライ期間中もインスタンスに対して課金されます。 ETL の構成 抽出・変換・書き出し (ETL) 処理を構成し、データ処理文を入力するには、[Yes] を選択します。[No] を選択すると、ETL はスキップされます。詳細については、「What is ETL?」および「Configure ETL in a data migration or data synchronization task」をご参照ください。 [次へ: タスク設定を保存して事前チェック] をクリックします。
DTS は移行を開始する前に事前チェックを実行します。いずれかの項目が失敗した場合は、[詳細の表示] をクリックして原因を特定し、問題を修正して再度事前チェックを実行してください。項目がアラートをトリガーし、安全に無視できる場合は、[アラート詳細の確認] をクリックし、ダイアログボックスで [無視] をクリックしてから、[再事前チェック] をクリックします。アラート項目を無視すると、データの不整合が発生する可能性があります。
成功率 が 100% になるまで待ってから、[次へ: インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、インスタンスクラスを設定します。
パラメーター 説明 リソースグループ 移行インスタンスのリソースグループです。 デフォルト: デフォルトのリソースグループ。 詳細については、「Resource Management とは インスタンスクラス インスタンスクラスによって移行速度が決まります。 データ量とパフォーマンス要件に基づいて選択してください。 詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。 [Data Transmission Service (従量課金) 利用規約] を読んで選択します。
[購入して開始] をクリックします。確認ダイアログボックスで、[OK] をクリックします。
データ移行ページでタスクの進行状況を追跡する。
次のステップ
移行に使用するデータベースアカウントには、読み取りおよび書き込み権限があります。移行が完了したら、セキュリティリスクを低減するため、ソース側の Oracle データベースおよび送信先の PolarDB-X 2.0 インスタンスから当該アカウントを削除してください。