Data Transmission Service (DTS) を使用して、自己管理 Oracle データベースを PolarDB-X 2.0 インスタンスと同期させます。この同期パスでは、DTS がスキーマ同期、初期完全同期、および増分同期を実行するため、Oracle データベースは PolarDB-X 2.0 における継続的な変更と常に最新の状態を保ちます。
前提条件
開始する前に、以下の点を確認してください。
自己管理 Oracle データベースが作成済みであり、ソースの PolarDB-X 2.0 インスタンスからすべてのデータを格納できる十分なストレージ容量が確保されていること。
Oracle データベース内にスキーマが存在すること。Oracle でユーザーを作成すると、スキーマは自動的に作成されます。
ソースおよびターゲットのデータベースアカウントに必要な権限が付与されていること。詳細については、「データベースアカウントに必要な権限」をご参照ください。
制限事項
スキーマ同期中、DTS はソースデータベースからターゲットデータベースへ外部キーを同期します。
ソースデータベースの制限事項
| 制限事項 | 詳細 | 回避策 |
|---|---|---|
| 主キーまたは一意制約が必要 | テーブルには PRIMARY KEY または UNIQUE 制約が必須であり、すべてのフィールドが一意である必要があります。この制約がない場合、ターゲットデータベースに重複レコードが生成される可能性があります。 | タスクを作成する前に、対象テーブルに PRIMARY KEY または UNIQUE 制約を追加してください。 |
| オブジェクト名の変更時のテーブル数制限 | 同期対象としてテーブルを選択し、ターゲット側でテーブル名またはカラム名の変更を行う場合、1 つのタスクでサポートされるテーブル数は最大 5,000 個です。この上限を超えるとリクエストエラーが発生します。 | 作業を複数のタスクに分割するか、テーブルレベル同期からデータベースレベル同期に切り替えてください。 |
| テーブル名に大文字を含む場合 | これらのテーブルでは、スキーマ同期のみがサポートされます。完全データ同期および増分同期は利用できません。 | タスクを作成する前に、ソース側のテーブル名を小文字に変更するか、タスクの範囲をスキーマ同期のみに限定してください。 |
binlog_row_image パラメーター | PolarDB-X 2.0 ではバイナリログがデフォルトで有効になっています。binlog_row_image パラメーターは full に設定する必要があります。この設定が正しく行われていない場合、事前チェックに失敗し、タスクを開始できません。 | binlog_row_image を fullパラメーター設定 に設定したうえでタスクを作成してください。詳細については、「」をご参照ください。 |
その他の制限事項
非ピーク時間帯に同期タスクを実行してください。初期完全同期では、両方のデータベースで読み取りおよび書き込みリソースが使用され、サーバー負荷が増加する可能性があります。
初期完全同期が完了した後、ターゲットの表領域は、同時 INSERT 操作による断片化の影響でソースよりも大きくなります。
同期中は、DTS を経由した書き込みのみをターゲットデータベースに対して実行してください。他のソースからの書き込みは、データの不整合を引き起こす可能性があります。
1 つのカラムの属性のみを変更できます。基本データ型の変更はできません。
DTS は、ソースインスタンス内に
dts_health_checkという名前のデータベースおよびha_health_checkという名前のテーブルを作成し、バイナリログ位置を進めるために定期的にこのテーブルを更新します。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および初期完全同期 | 無料 |
| 増分同期 | 課金対象です。詳細については、「課金概要」をご参照ください。 |
同期可能な SQL 操作
この同期パスでは、DTS が以下の DML 操作をサポートしています:INSERT、UPDATE、DELETE。
操作タイプ | SQL 操作文 |
DML | INSERT、UPDATE、DELETE |
データベースアカウントに必要な権限
タスクの設定前に、以下の権限を付与してください。
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| ソース PolarDB-X 2.0 インスタンス | 同期対象オブジェクトに対する SELECT 権限(ソースデータの読み取り用)、REPLICATION SLAVE および REPLICATION CLIENT 権限(増分同期のためのバイナリログ読み取り用) | データベースアカウントの管理 および データ同期に必要なアカウントの権限 |
| ターゲットの自己管理 Oracle データベース | スキーマに対する所有者権限(ターゲットスキーマ内のテーブルの作成および書き込み用) | CREATE USER および GRANT |
データ同期タスクの作成
ステップ 1:データ同期タスクページへ移動
DMS コンソール にログインします。
上部のナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > データ同期 を選択します。
実際のナビゲーションは、お客様の DMS モードおよびレイアウトによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、新しい DTS コンソールで、「データ同期タスクページ」に直接アクセスすることもできます。
ステップ 2:リージョンの選択
データ同期タスク の右側にあるドロップダウンリストから、タスクを作成するリージョンを選択します。新しい DTS コンソールのデータ同期タスクページ
新しい DTS コンソールでは、ページの左上隅からリージョンを選択します。
ステップ 3:ソースおよびターゲットデータベースの設定
タスクの作成 をクリックします。タスクの作成 ウィザードで、以下のパラメーターを設定します。
タスク名
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS が自動的に名前を割り当てます。タスクを容易に識別できるように、意味のある名前を指定してください。名前は一意である必要はありません。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスの選択 | 任意項目です。既存の DMS インスタンスを選択すると、以下のパラメーターが自動入力されます。空白のままにすると、手動でパラメーターを設定できます。 |
| データベースタイプ | PolarDB-X 2.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 2.0 インスタンスが配置されているリージョンを選択します。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一 Alibaba Cloud アカウント内で同期する場合は、いいえ を選択します。 |
| インスタンス ID | ソース PolarDB-X 2.0 インスタンスを選択します。 |
| データベースアカウント | データベースアカウントを入力します。詳細については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードを入力します。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスの選択 | 任意項目です。既存の DMS インスタンスを選択すると、以下のパラメーターが自動入力されます。空白のままにすると、手動でパラメーターを設定できます。 |
| データベースタイプ | Oracle を選択します。 |
| アクセス方法 | 「[ECS 上のセルフマネージドデータベース]」を選択します。異なるアクセス方法を使用する場合は、まずネットワーク環境を設定してください。詳細については、「準備の概要」をご参照ください。 |
| インスタンスリージョン | Oracle データベースが配置されているリージョンを選択します。 |
| ECS インスタンス ID | Oracle データベースをホストする ECS インスタンスを選択します。 |
| ポート番号 | Oracle サービスポートを入力します。デフォルト値:1521。 |
| Oracle タイプ | Oracle アーキテクチャを選択します:Non-RAC Instance または RAC or PDB Instance。スタンドアロン Oracle のインストールの場合は、Non-RAC Instance を選択し、SID(例:ORCL)を入力します。Real Application Clusters (RAC) または Pluggable Database (PDB) 環境の場合は、RAC or PDB Instance を選択し、Service Name(例:orclpdb1)を入力します。 |
| データベースアカウント | Oracle データベースアカウントを入力します。詳細については、「データベースアカウントに必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードを入力します。 |
ステップ 4:接続性のテスト
ページ下部の 接続性のテストと続行 をクリックします。
DTS サーバーの CIDR ブロックを、自己管理データベースのセキュリティ設定(ファイアウォール設定など)に追加し、DTS サーバーからのアクセスを許可してください。その後、接続性のテストと続行 をクリックします。
ソースデータベースまたはターゲットデータベースが Alibaba Cloud データベースインスタンス (ソース PolarDB-X 2.0 インスタンスなど) である場合、DTS は DTS サーバーの CIDR ブロックをインスタンスのホワイトリストに自動的に追加します。 Oracle データベースが ECS 上にある場合、DTS は DTS サーバーの CIDR ブロックを ECS セキュリティグループルールに自動的に追加します。 ECS インスタンスが Oracle データベースにアクセスできることを確認してください。 データベースがオンプレミスデータセンター内、またはサードパーティのクラウドプロバイダー上にある場合は、DTS サーバーの CIDR ブロックをデータベースの許可リストに手動で追加してください。 詳細については、「オンプレミスデータベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS サーバーの CIDR ブロックをデータベースの許可リストまたは ECS セキュリティグループルールに追加すると、セキュリティリスクが発生する可能性があります。実行前に適切な対策を講じてください:強力な認証情報を使用する、公開ポートを最小限に抑える、API 呼び出しを認証する、許可リストおよびセキュリティグループルールを定期的に監査する。より高い隔離性を実現するには、Express Connect、VPN Gateway、または Smart Access Gateway を介して DTS をデータベースに接続してください。
ステップ 5:同期対象および設定の構成
以下のパラメーターを設定します。
同期タイプ
| パラメーター | 説明 |
|---|---|
| 同期タイプ | デフォルトでは、増分同期 が選択されています。スキーマ同期 および 初期完全同期 も必ず選択してください。DTS はまず履歴データ(初期完全同期)を同期し、その後、継続的な変更(増分同期)を続けます。 |
競合処理
| パラメーター | 説明 |
|---|---|
| 競合テーブルの処理モード | 送信先でソースと同じ名前のテーブルが存在する場合の、DTS のテーブル処理方法を選択します。事前チェックとエラーの報告 は、重複するテーブル名が検出された場合にタスクを停止します — ほとんどのケースで推奨されます。エラーを無視して続行 は、事前チェックをスキップして続行しますが、データの不整合を引き起こす可能性があります — 注意して使用してください。送信先テーブルを削除せずに名前衝突を解決する必要がある場合は、このオプションを有効化する前に、オブジェクト名マッピングを使用して送信先テーブルの名前を変更してください。『オブジェクト名のマップ』をご参照ください。 |
オブジェクトのキャピタライゼーション
| パラメーター | 説明 |
|---|---|
| ターゲットインスタンスにおけるオブジェクト名の大文字小文字の設定 | ターゲットにおけるデータベース名、テーブル名、カラム名の大文字小文字を制御します。デフォルト値は DTS デフォルトポリシーオブジェクト名の大文字/小文字の指定 です。詳細については、「」をご参照ください。 |
オブジェクトの選択
ソースオブジェクト セクションで同期対象のオブジェクトを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。
同期対象として、カラム、テーブル、またはデータベースを選択できます。テーブルまたはカラムを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトは同期されません。
選択済みオブジェクト にオブジェクトを追加した後、ターゲットデータベースのエントリを右クリックし、スキーマの編集 を選択します。スキーマ名 フィールドに、同期データを受け取る Oracle スキーマの名前を入力します。
スキーマ名には大文字を使用してください。
行をフィルターするには、選択済みオブジェクト 内のテーブルを右クリックし、SQL WHERE 条件を指定します。詳細については、「SQL 条件を使用したデータのフィルタリング」をご参照ください。
オブジェクト名マッピングを使用してオブジェクト名を変更した場合、それらに依存する他のオブジェクトの同期が失敗する可能性があります。
ステップ 6:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| タスクのスケジュールに使用する専用クラスターの選択 | DTS 専用クラスターとは共有クラスターを使用する場合は、デフォルト設定のままにしてください。特定のリソース保証付きで専用クラスター上でタスクを実行するには、事前に専用クラスターをご購入ください。詳細については、「」をご参照ください。 |
| アラートの設定 | タスクの失敗または同期遅延がしきい値を超えた場合に通知を受信するには、[はい]モニタリングとアラートの設定 を選択します。アラートのしきい値および連絡先を設定してください。詳細については、「」をご参照ください。 |
| 接続失敗時のリトライ時間 | タスク開始後に DTS が接続失敗をリトライするタイムウィンドウです。範囲:10~1440 分。デフォルト値:720 分。この値は 30 分より大きく設定してください。このタイムウィンドウ内に接続が復旧しなかった場合、タスクは失敗します。複数のタスクが同一のソースまたはターゲットを共有する場合、最も短いリトライウィンドウが適用されます。リトライ中も、DTS インスタンスに対する課金は継続されます。 |
| ソースおよびターゲットデータベースでその他の問題が発生した際のリトライ待機時間 | DDL 操作または DML 操作の失敗に対するリトライウィンドウです。範囲:1~1440 分。デフォルト値:10 分。この値は 10 分より大きく設定してください。また、この値は「接続失敗時のリトライ時間」の値より小さくする必要があります。 |
| フルデータ移行におけるレート制御の有効化 | フルデータ同期におけるクエリ数/秒 (QPS)、レコード数/秒 (RPS)、バイト数/秒 (BPS) を制限し、ターゲットデータベースへの負荷を軽減します。「フルデータ同期」が選択されている場合のみ利用可能です。 |
| 増分同期におけるレート制御の有効化 | 増分同期における RPS および BPS を制限し、ターゲットデータベースへの負荷を軽減します。 |
| 環境タグ | 任意項目です。DTS インスタンスを識別するために、環境タグ(例:production、staging)を割り当てます。 |
| ETL の設定 | 抽出・変換・書き出し(ETL)文を用いて同期中のデータを変換するには、[はい]データ移行またはデータ同期タスクにおけるETLの設定 を選択します。詳細については、「」をご参照ください。 |
| 順方向および逆方向タスクのハートビートテーブルに対する SQL 操作の削除有無 | ソースデータベースへのハートビートテーブル操作の書き込みを DTS が行わないようにするには、[はい] を選択します。これにより、物理バックアップやクローン作成などの機能への影響を回避できますが、DTS インスタンス上で同期遅延のオフセットが表示される場合があります。一方、ハートビート操作の書き込みを許可して同期遅延のメトリックを正確に保つには、[いいえ] を選択します。ただし、この設定ではソースデータベースの機能に影響が出る可能性があります。 |
ステップ 7:事前チェックの実行
次へ:タスク設定の保存と事前チェック をクリックします。
このタスクの設定に使用される API パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にマウスを置き、OpenAPI パラメーターのプレビュー をクリックします。
DTS は、タスクを開始する前に事前チェックを実行します。事前チェックが完了した後:
すべての項目が合格した場合は、次のステップに進んでください。
いずれかの項目が不合格だった場合は、不合格項目の横にある 詳細の表示 をクリックし、問題を修正してから 再事前チェック をクリックしてください。
アラートがトリガーされた場合は:
無視できないアラートの場合は、詳細の表示 をクリックし、問題を修正してから再事前チェックを実行してください。
無視できるアラートの場合は、アラートの詳細の確認 をクリックし、詳細の表示 ダイアログボックスで 無視 をクリックし、OK をクリックします。その後、再事前チェック をクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
成功率が 100% になるまで待ち、その後 次へ:インスタンスの購入 をクリックします。
ステップ 8:インスタンスの購入およびタスクの開始
インスタンスの購入 ページで、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 課金方法 | サブスクリプション:固定期間分を前払いします。長期利用の場合、コスト効率に優れています。従量課金:1 時間単位で課金されます。短期利用に適しています。ご利用のインスタンスが不要になった場合は、すぐにリリースして課金を停止してください。 |
| リソースグループ | インスタンスに割り当てるリソースグループです。デフォルト:default resource group。詳細については、「What is Resource Management?」をご参照ください。 |
| インスタンスクラス | スループット要件に基づいて同期仕様を選択します。仕様によって同期速度が異なります。詳細については、「Specifications of data synchronization instances」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション課金方法でのみ選択可能です。選択肢:1~9 か月、または 1 年、2 年、3 年、5 年。 |
Data Transmission Service (従量課金) 利用規約 をお読みになり、同意した上で、購入して開始 をクリックします。
タスクがタスクリストに表示されます。そこから同期の進行状況を監視できます。
次のステップ
同期遅延のモニタリングとアラートの設定については、「DTS タスクを作成するときにモニタリングとアラート機能を設定する」をご参照ください。
送信先でオブジェクトの名前を変更するには、「オブジェクト名のマッピング」をご参照ください。
同期中の特定行のフィルタリングについては、「SQL 条件を使用したデータのフィルタリング」をご参照ください。