このトピックでは、Data Transmission Service (DTS) を使用して、自己管理 Oracle データベースから MaxCompute プロジェクトにデータを同期する方法について説明します。
前提条件
MaxCompute が有効化され、MaxCompute プロジェクトが作成されていること。 詳細については、「MaxCompute と DataWorks の有効化」および「MaxCompute プロジェクトの作成」をご参照ください。
MaxCompute クライアントで IP アドレスホワイトリストが設定され、DTS から MaxCompute へのアクセスが許可されていること。 詳細については、「Alibaba Cloud サービスから MaxCompute へのアクセスを許可するための IP アドレスホワイトリストの設定」をご参照ください。
ターゲットの MaxCompute プロジェクトを所有する Alibaba Cloud アカウントの AccessKey ペアが作成されていること。 詳細については、「AccessKey ペアの作成」をご参照ください。
自己管理 Oracle データベースがアーカイブログモードで実行されていること。 アーカイブされたログファイルにアクセス可能で、適切な保持期間が設定されていること。 詳細については、「Managing Archived Redo Log Files」をご参照ください。
自己管理 Oracle データベースで補足ログ機能が有効になっており、`SUPPLEMENTAL_LOG_DATA_PK` および `SUPPLEMENTAL_LOG_DATA_UI` パラメーターが `Yes` に設定されていること。 詳細については、「Supplemental Logging」をご参照ください。
Oracle データベースからデータを同期する際の DTS の機能と制限に精通していること。 Advanced Database & Application Migration (ADAM) を使用して、データベース同期の実現可能性とコストを評価します。 これにより、Oracle から MaxCompute へのデータ同期をスムーズに行うことができます。 詳細については、「Oracle データベースの準備」および「概要」をご参照ください。
注意事項
DTS は、ソースデータベースからターゲットデータベースに外部キーを同期しません。 そのため、ソースデータベースでのカスケードおよび削除操作はターゲットデータベースに同期されません。
タイプ | 説明 |
ソースデータベースの制限 |
|
その他の制限 |
|
課金
| 同期タイプ | タスク構成料金 |
| スキーマ同期と完全データ同期 | 無料。 |
| 増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
同期可能な SQL 操作
操作タイプ | SQL 文 |
DML | INSERT、UPDATE、DELETE |
DDL | ADD COLUMN 説明 属性列を含む `ADD COLUMN` 操作は同期できません。 |
データベースアカウントに必要な権限
データベースタイプ | 必要な権限 | アカウント作成と権限付与の方法 |
自己管理 Oracle データベース | きめ細かな権限 | データベースアカウントの準備、「CREATE USER」、および「GRANT」をご参照ください。 |
Oracle データベースから増分データを同期する場合、増分データを取得するために、Oracle データベースのアーカイブ・ロギングと補足ログを有効にする必要があります。 詳細については、「Oracle データベースの準備」トピックの「Oracle データベースの設定」セクションをご参照ください。
同期プロセス
初期スキーマ同期。
DTS は、必要なオブジェクトのスキーマをソースデータベースから MaxCompute に同期します。 初期スキーマ同期中、DTS はソーステーブル名の末尾に `_base` サフィックスを追加します。 たとえば、ソーステーブルの名前が `customer` の場合、MaxCompute のテーブル名は `customer_base` になります。
初期完全同期。
DTS は、テーブルの既存データをソースデータベースから MaxCompute のターゲットテーブルに同期します。 たとえば、ソースデータベースの `customer` テーブルは MaxCompute の `customer_base` テーブルに同期されます。 このデータは、後続の増分同期の基礎となります。
説明`_base` サフィックスが付いたターゲットテーブルは、完全ベースラインテーブルとして知られています。
増分データ同期。
DTS は MaxCompute に増分データテーブルを作成します。 増分データテーブルの名前には `_log` サフィックスが付きます (例:`customer_log`)。 その後、DTS はソースデータベースで生成された増分データを増分データテーブルに同期します。
説明増分データテーブルの構造については、「増分データテーブルの構造定義」をご参照ください。
操作手順
次のいずれかの方法で [データ同期] ページに移動し、データ同期インスタンスが存在するリージョンを選択します。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
ページの左上隅で、データ同期タスクが存在するリージョンを選択します。
DMS コンソール
説明実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。 詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、[データ + AI] にポインターを合わせ、 を選択します。
データ同期タスク の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。
タスクの作成 をクリックして、タスク構成ページに移動します。
ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。
セクション
パラメーター
説明
N/A
タスク名
DTS タスクの名前。 DTS は自動的にタスク名を生成します。 タスクを簡単に識別できるような、わかりやすい名前を指定することを推奨します。 一意のタスク名を指定する必要はありません。
移行元データベース
既存の接続情報の選択
DTS に登録されているデータベースインスタンスを使用する場合、ドロップダウンリストからインスタンスを選択します。 DTS は、インスタンスの次のデータベースパラメーターを自動的に入力します。 詳細については、「データベース接続の管理」をご参照ください。
説明DMS コンソールでは、[DMS データベースインスタンスの選択] ドロップダウンリストからデータベースインスタンスを選択できます。
DTS へのインスタンス登録に失敗した場合、または DTS に登録されているインスタンスを使用する必要がない場合は、次のデータベース情報を設定する必要があります。
データベースタイプ
Oracle を選択します。
アクセス方法
ソースデータベースのデプロイメント場所に基づいてアクセス方法を選択します。 この例では、ECS 上の自己管理データベース が選択されています。
説明他のアクセス方法を選択した場合は、自己管理 Oracle データベースに必要な環境を設定する必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスのリージョン
ソース Oracle データベースが存在するリージョン。
ECS インスタンス ID
ソース Oracle データベースがデプロイされている ECS インスタンスの ID。
ポート番号
ソース Oracle データベースのサービスポート番号。 デフォルト値: 1521。
Oracle の型
Non-RAC Instance:このオプションを選択した場合、SID パラメーターを指定する必要があります。
RAC または PDB インスタンス:このオプションを選択した場合、サービス名 パラメーターを指定する必要があります。
この例では、RAC または PDB インスタンス が選択され、サービス名 が指定されています。
データベースアカウント
自己管理 Oracle データベースのアカウント。 必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」セクションをご参照ください。
データベースのパスワード
データベースインスタンスへのアクセスに使用するパスワード。
移行先データベース
既存の接続情報の選択
DTS に登録されているデータベースインスタンスを使用する場合、ドロップダウンリストからインスタンスを選択します。 DTS は、インスタンスの次のデータベースパラメーターを自動的に入力します。 詳細については、「データベース接続の管理」をご参照ください。
説明DMS コンソールでは、[DMS データベースインスタンスの選択] ドロップダウンリストからデータベースインスタンスを選択できます。
DTS へのインスタンス登録に失敗した場合、または DTS に登録されているインスタンスを使用する必要がない場合は、次のデータベース情報を設定する必要があります。
データベースタイプ
MaxCompute を選択します。
アクセス方法
Alibaba Cloud インスタンス を選択します。
インスタンスのリージョン
ターゲットの MaxCompute プロジェクトが存在するリージョン。
プロジェクト
ターゲットの MaxCompute プロジェクトの名前。
Alibaba Cloud アカウントの AccessKey ID
「前提条件」セクションで準備した AccessKey ペアを入力します。
Alibaba Cloud アカウントの AccessKey Secret
ページの下部で、接続をテストして続行 をクリックします。 DTS サーバーの CIDR ブロック ダイアログボックスで、接続テスト をクリックします。
説明DTS サーバーの CIDR ブロックが、ソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加され、DTS サーバーからのアクセスが許可されていることを確認してください。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。
[OK] をクリックして、MaxCompute アカウントに権限を付与します。 接続をテストして続行 をクリックします。
同期するオブジェクトを設定します。
オブジェクト設定 ステップで、同期するオブジェクトを設定します。
パラメーター
説明
同期タイプ
同期タイプ。 デフォルトでは、[増分データ同期] が選択されています。 [スキーマ同期] と [完全データ同期] も選択する必要があります。 事前チェックが完了すると、DTS は選択したオブジェクトの既存データをソースデータベースからターゲットクラスターに同期します。 既存データは、後続の増分同期の基礎となります。
追加列の命名規則
DTS が MaxCompute にデータを同期した後、DTS はターゲットテーブルに追加の列を追加します。 追加列がターゲットテーブルの既存の列と同じ名前を持つ場合、データ同期タスクは失敗し、データ損失が発生する可能性があります。 ビジネス要件に基づいて、このパラメーターに 新規ルール または 前のルール を選択できます。
警告このパラメーターを指定する前に、ターゲットテーブルの追加列と既存の列に名前の競合がないか確認してください。 詳細については、「追加列の命名規則」をご参照ください。
増分データテーブルのパーティション定義
ビジネス要件に基づいてパーティション名を選択します。 詳細については、「パーティション」をご参照ください。
競合するテーブルの処理モード
エラーの事前チェックと報告:ターゲットデータベースにソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかをチェックします。 ソースデータベースとターゲットデータベースに同じテーブル名を持つテーブルが含まれていない場合、事前チェックは合格します。 そうでない場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。
説明ソースデータベースとターゲットデータベースに同じ名前のテーブルが含まれており、ターゲットデータベースのテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期されるテーブルの名前を変更できます。 詳細については、「オブジェクト名のマッピング」をご参照ください。
エラーを無視して続行:ソースデータベースとターゲットデータベースの同じテーブル名の事前チェックをスキップします。
警告エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスに潜在的なリスクが生じる可能性があります。
ソースデータベースとターゲットデータベースのスキーマが同じで、ターゲットデータベースのデータレコードがソースデータベースのデータレコードと同じプライマリキー値または一意キー値を持つ場合:
完全データ同期中、DTS はデータレコードをターゲットデータベースに同期しません。 ターゲットデータベースの既存のデータレコードが保持されます。
増分データ同期中、DTS はデータレコードをターゲットデータベースに同期します。 ターゲットデータベースの既存のデータレコードは上書きされます。
ソースデータベースとターゲットデータベースのスキーマが異なる場合、データの初期化に失敗する可能性があります。 この場合、一部の列のみが同期されるか、データ同期インスタンスが失敗します。 慎重に進めてください。
移行先インスタンスでのオブジェクト名の大文字化
ターゲットインスタンスのデータベース名、テーブル名、列名の大文字/小文字。 デフォルトでは、[DTS デフォルトポリシー] が選択されています。 他のオプションを選択して、オブジェクト名の大文字/小文字がソースまたはターゲットデータベースと一致するようにできます。 詳細については、「ターゲットインスタンスでのオブジェクト名の大文字/小文字の指定」をご参照ください。
ソースオブジェクト
ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択し、
アイコンをクリックしてオブジェクトを 選択中のオブジェクト セクションに追加します。 説明同期するオブジェクトとしてテーブルのみを選択できます。
選択中のオブジェクト
ターゲットインスタンスに同期するオブジェクトの名前を変更するには、選択中のオブジェクト セクションでオブジェクトを右クリックします。 詳細については、「オブジェクト名のマッピング」トピックの「単一オブジェクトの名前のマッピング」セクションをご参照ください。
一度に複数のオブジェクトの名前を変更するには、選択中のオブジェクト セクションの右上隅にある 一括編集 をクリックします。 詳細については、「オブジェクト名のマッピング」トピックの「一度に複数のオブジェクト名をマッピングする」セクションをご参照ください。
説明ターゲットプロジェクトに同期された後、同期するテーブルに新しい名前を使用するには、選択中のオブジェクト セクションでテーブルを右クリックし、名前を指定します。 詳細については、「オブジェクト名のマッピング」をご参照ください。
データをフィルタリングするには、選択中のオブジェクト セクションで同期するテーブルを右クリックします。 表示されるダイアログボックスで、フィルター条件を設定します。 詳細については、「フィルター条件の指定」をご参照ください。
オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、このオブジェクトに依存する他のオブジェクトの同期に失敗する可能性があります。
詳細設定へ をクリックして、詳細設定を行います。
パラメーター
説明
タスクのスケジュールに使用する専用クラスターの選択
デフォルトでは、専用クラスターを指定しない場合、DTS はタスクを共有クラスターにスケジュールします。 データ同期インスタンスの安定性を向上させたい場合は、専用クラスターを購入してください。 詳細については、「DTS 専用クラスターとは」をご参照ください。
失敗した接続の再試行時間
接続失敗時のリトライ時間範囲。 データ同期タスクが開始された後、ソースまたはターゲットデータベースへの接続に失敗した場合、DTS は時間範囲内で即座に接続をリトライします。 有効な値:10~1440。 単位:分。 デフォルト値:720。 このパラメーターを 30 より大きい値に設定することを推奨します。 指定された時間範囲内に DTS がソースおよびターゲットデータベースに再接続した場合、DTS はデータ同期タスクを再開します。 そうでない場合、データ同期タスクは失敗します。
説明同じソースまたはターゲットデータベースを持つ複数のデータ同期タスクに異なるリトライ時間範囲を指定した場合、最も短いリトライ時間範囲が優先されます。
DTS が接続をリトライする際、DTS インスタンスに対して課金されます。 ビジネス要件に基づいてリトライ時間範囲を指定することを推奨します。 また、ソースおよびターゲットインスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることもできます。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
その他の問題のリトライ時間範囲。 たとえば、データ同期タスクが開始された後に DDL または DML 操作が失敗した場合、DTS は時間範囲内で即座に操作をリトライします。 有効な値:1~1440。 単位:分。 デフォルト値:10。 このパラメーターを 10 より大きい値に設定することを推奨します。 失敗した操作が指定された時間範囲内に成功した場合、DTS はデータ同期タスクを再開します。 そうでない場合、データ同期タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメーターの値は、失敗した接続の再試行時間 パラメーターの値より小さくする必要があります。
完全同期レートを制限するかどうか
完全データ同期中、DTS はソースおよびターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 完全データ同期タスクに対して、1 秒あたりのソースデータベースのクエリ率 QPS、1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメーターを設定して、ターゲットデータベースサーバーの負荷を軽減できます。
説明このパラメーターは、同期タイプ パラメーターで 完全データ同期 が選択されている場合にのみ設定できます。
増分同期率を制限するかどうか
増分データ同期のスロットリングを有効にするかどうかを指定します。 ビジネス要件に基づいて、増分データ同期のスロットリングを有効にできます。 スロットリングを設定するには、1 秒あたりの増分同期の行数 RPS および 1 秒あたりの増分同期データ量 (MB) BPS パラメーターを設定する必要があります。 これにより、ターゲットデータベースサーバーの負荷が軽減されます。
実際の書き込みコード
データがターゲットデータベースに書き込まれるエンコード形式。 ビジネス要件に基づいてエンコード形式を選択します。
環境タグ
DTS インスタンスを識別するために使用される環境タグ。 ビジネス要件に基づいて環境タグを選択できます。 この例では、環境タグは追加されていません。
ETL の設定
抽出、変換、ロード (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETL とは」をご参照ください。 有効な値:
[はい]:ETL 機能を設定します。 コードエディタにデータ処理文を入力できます。 詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。
[いいえ]:ETL 機能を設定しません。
監視アラート
データ同期インスタンスのアラートを設定するかどうかを指定します。 タスクが失敗した場合、または同期遅延が指定されたしきい値を超えた場合、アラート連絡先は通知を受け取ります。 有効な値:
[いいえ]:アラートを有効にしません。
[はい]:アラートを設定します。 この場合、アラートのしきい値とアラート通知設定も設定する必要があります。 詳細については、「モニタリングとアラートの設定」トピックの「DTS タスク作成時のモニタリングとアラートの設定」セクションをご参照ください。
タスク設定を保存し、事前チェックを実行します。
関連する API 操作を呼び出して DTS タスクを設定する際に指定するパラメーターを表示するには、次:タスク設定の保存と事前チェック にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
パラメーターを表示する必要がない場合、または表示済みの場合は、ページの下部にある 次:タスク設定の保存と事前チェック をクリックします。
説明データ同期タスクを開始する前に、DTS は事前チェックを実行します。 タスクが事前チェックに合格した後にのみ、データ同期タスクを開始できます。
データ同期タスクが事前チェックに失敗した場合は、各失敗項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題をトラブルシューティングします。 その後、事前チェックを再実行します。
事前チェック中に項目のアラートがトリガーされた場合:
アラート項目を無視できない場合は、失敗した項目の横にある [詳細の表示] をクリックして問題をトラブルシューティングします。 その後、再度事前チェックを実行します。
アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されるメッセージで、[OK] をクリックします。 その後、[再度事前チェック] をクリックして再度事前チェックを実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスに潜在的なリスクが生じる可能性があります。
データ同期インスタンスを購入します。
[成功率] が [100%] になるまで待ちます。 その後、[次へ:インスタンスの購入] をクリックします。
[購入] ページで、データ同期タスクの課金方法とインスタンスクラスのパラメーターを設定します。 次の表にパラメーターを示します。
セクション
パラメーター
説明
新しいインスタンスクラス
課金方法
サブスクリプション:データ同期インスタンスを作成する際にサブスクリプション料金を支払います。 サブスクリプション課金方法は、長期利用の場合、従量課金方法よりも費用対効果が高くなります。
従量課金:従量課金インスタンスは時間単位で課金されます。 従量課金方法は短期利用に適しています。 従量課金のデータ同期インスタンスが不要になった場合は、インスタンスをリリースしてコストを削減できます。
リソースグループ設定
データ同期インスタンスが属するリソースグループ。 デフォルト値: [デフォルトリソースグループ]。 詳細については、「Resource Management とは」をご参照ください。
インスタンスクラス
DTS は、同期速度が異なるインスタンスクラスを提供します。 ビジネス要件に基づいてインスタンスクラスを選択できます。 詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
サブスクリプション期間
サブスクリプション課金方法を選択した場合、サブスクリプション期間と作成するデータ同期インスタンスの数を指定します。 サブスクリプション期間は、1~9 か月、1 年、2 年、3 年、または 5 年です。
説明このパラメーターは、サブスクリプション 課金方法を選択した場合にのみ利用できます。
[Data Transmission Service (従量課金) サービス規約] を読み、選択します。
[購入して開始] をクリックします。 表示されるダイアログボックスで、OK をクリックします。
タスクリストでタスクの進捗状況を確認できます。
増分データテーブルの構造定義
MaxCompute で set odps.sql.allow.fullscan=true; コマンドを実行して、MaxCompute プロジェクトの全表スキャンを許可する必要があります。
DTS は、ソースデータベースで生成された増分データを MaxCompute の増分データテーブルに同期します。 増分データテーブルには、増分データと特定のメタデータが格納されます。 次の表に、増分データテーブルのスキーマを示します。
フィールド | 説明 |
record_id | 増分ログのレコード ID。ログの一意の識別子です。 説明
|
operation_flag | 操作タイプ。 有効な値:
|
utc_timestamp | UTC での操作タイムスタンプ。 バイナリログファイルのタイムスタンプでもあります。 |
before_flag | 列の値が更新前の値であるかどうかを示します。 有効な値:Y と N。 |
after_flag | 列の値が更新後の値であるかどうかを示します。 有効な値:Y と N。 |