すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:ApsaraDB RDS for SQL ServerインスタンスからAnalyticDB for PostgreSQLインスタンスへのデータの同期

最終更新日:Nov 12, 2024

このトピックでは、data Transmission Service (DTS) を使用して、ApsaraDB RDS for SQL ServerインスタンスからAnalyticDB for PostgreSQLインスタンスにデータを同期する方法について説明します。 データ同期機能を使用すると、データの転送と分析が簡単になります。

前提条件

  • ApsaraDB RDS for SQL Serverインスタンスが作成されました。 詳細については、「快適なApsaraDB RDS For SQL Serverインスタンスの作成」および「データ同期シナリオの概要」をご参照ください。

    重要

    ApsaraDB RDS for SQL Serverインスタンスのエンジンバージョンは、2012、2014、2016、2017、または2019です。

  • AnalyticDB for PostgreSQLインスタンスが作成されました。 詳細については、「AnalyticDB For PostgreSQLインスタンスの作成」をご参照ください。

  • ApsaraDB RDS for SQL Serverインスタンスのソーステーブルにはプライマリキーが含まれています。

  • AnalyticDB for PostgreSQLインスタンスの宛先テーブルには、主キーまたは一意のインデックスが含まれています。

使用上の注意

  • DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。

  • データ同期のレイテンシを正確にするために、DTSはソースデータベースにハートビートテーブルを追加します。 ハートビートテーブルの名前はdts_log_heart_beatです。

  • このシナリオでは、DTSは、スキーマ、テーブル、ビュー、関数、およびプロシージャのタイプのオブジェクトのスキーマ同期をサポートします。

    警告

    ApsaraDB RDS for SQL ServerとAnalyticDB for PostgreSQLは異種データベースです。 サポートするデータ型には、1対1の対応がありません。 データ型変換がビジネスに与える影響を評価することを推奨します。 詳細については、「スキーマ同期のためのデータ型マッピング」をご参照ください。

  • DTSは、TIMESTAMP、CURSOR、ROWVERSION、HIERARCHYID、SQL_VARIANT、SPATIAL GEOMETRY、SPATIAL GEOGRAPHY、およびTABLEのタイプのデータを同期しません。

課金

同期タイプ

タスク設定料金

スキーマ同期と完全データ同期

無料です。

増分データ同期

有料。 詳細については、「課金の概要」をご参照ください。

同期可能なSQL操作

  • DDL操作: コラムを追加

    説明

    DTSはトランザクションDDL操作を移行しません。

  • DML操作: INSERT、UPDATE、およびDELETE

データベースアカウントに必要な権限

データベース

必要な権限

承認方法

ApsaraDB RDS for SQL Server インスタンス

ソースデータベース所有者の権限

アカウントの権限の変更

AnalyticDB for PostgreSQLインスタンス

  • ログイン権限

  • 宛先テーブルに対するSELECT、CREATE、INSERT、UPDATE、およびDELETE権限

  • ターゲットデータベースに対するCONNECTおよびCREATE権限

  • 宛先スキーマに対するCREATE権限

  • COPY権限 (メモリベースのバッチコピー操作を実行する権限)

説明

AnalyticDB for PostgreSQLインスタンスの初期アカウントを使用できます。

ユーザーと権限の管理

手順

  1. データ同期インスタンスを購入します。 詳細については、「DTSインスタンスの購入」をご参照ください。

    説明

    購入ページで、ソースインスタンスパラメーターをSQL Serverに、宛先インスタンスパラメーターをAnalyticDB for PostgreSQLに、同期トポロジパラメーターを一方向同期に設定します。

  2. DTSコンソールにログインします。

  3. 左側のナビゲーションウィンドウで、[データ同期] をクリックします。

  4. [同期タスク] ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。

  5. データ同期インスタンスを見つけ、[操作] 列の [同期チャネルの設定] をクリックします。

  6. ソースインスタンスとターゲットインスタンスを設定します。

    Configure the source and destination instances

    セクション

    パラメーター

    説明

    非該当

    同期タスク名

    DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。

    ソースインスタンスの詳細

    インスタンスタイプ

    ソースインスタンスのインスタンスタイプ。 RDS インスタンスを選択します。

    インスタンスリージョン

    購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。

    インスタンス ID

    ソースApsaraDB RDS for SQL ServerインスタンスのID。

    データベースアカウント

    ApsaraDB RDS for SQL Serverインスタンスのデータベースアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワードを設定します。

    暗号化

    ソースインスタンスへの接続を暗号化するかどうかを指定します。 [暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択する場合は、データ同期タスクを設定する前に、ApsaraDB RDS for SQL ServerインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「SSL暗号化機能の設定」をご参照ください。

    説明

    Encryptionパラメーターは、中国本土および中国 (香港) リージョンのリージョンでのみ使用できます。

    ターゲットインスタンスの詳細

    インスタンスタイプ

    このパラメーターの値は、AnalyticDB for PostgreSQLに固定されています。

    インスタンスリージョン

    購入ページで選択したターゲットリージョン。 このパラメーターの値は変更できません。

    インスタンス ID

    ターゲットAnalyticDB for PostgreSQLインスタンスのID。

    データベース名

    ターゲットテーブルの名前です。

    データベースアカウント

    ターゲットAnalyticDB for PostgreSQLインスタンスのデータベースアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワードを設定します。

  7. ページの右下隅にあるホワイトリストと次への設定をクリックします。

    、ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQLApsaraDB for MongoDBインスタンスなど) の場合、DTSは自動的にDTSサーバーのCIDRブロックをインスタンスのIPアドレスホワイトリストに追加します。 ソースデータベースまたはターゲットデータベースがElastic Compute Service (ECS) インスタンスでホストされている自己管理データベースの場合、DTSサーバーのCIDRブロックがECSインスタンスのセキュリティグループルールに自動的に追加されます。ECSインスタンスがデータベースにアクセスできることを確認する必要があります。 自己管理データベースが複数のECSインスタンスでホストされている場合、DTSサーバーのCIDRブロックを各ECSインスタンスのセキュリティグループルールに手動で追加する必要があります。 ソースデータベースまたはターゲットデータベースが、データセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供される自己管理データベースである場合、DTSサーバーのCIDRブロックをデータベースのIPアドレスホワイトリストに手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 詳細については、「DTSサーバーのCIDRブロックの追加」をご参照ください。

    警告

    DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを同期する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。

  8. 同期ポリシーと同期するオブジェクトを選択します。

    Select the synchronization policy and the objects to be synchronized

    設定

    説明

    同期の初期化

    デフォルトでは、初期スキーマ同期初期フルデータ同期、および初期増分データ同期が選択されています。 事前チェックが完了すると、DTSはソースインスタンスからターゲットインスタンスにオブジェクトのスキーマとデータを同期します。 スキーマとデータは、後続の増分同期のベースラインとなります。

    既存のターゲットテーブルの処理モード

    • 事前チェックとインターセプト: ターゲットデータベースに、ソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかを確認します。 移行先データベースに、移行元データベースのテーブルと同じ名前のテーブルが含まれていない場合は、事前チェックに合格します。 それ以外の場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。

      説明

      ソースデータベースとターゲットデータベースに同じテーブル名が含まれていて、ターゲットデータベース内のテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期されるテーブルの名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。

    • エラーを無視して続行: ソースデータベースとターゲットデータベースの同じテーブル名の事前チェックをスキップします。

      警告

      [エラーを無視して続行] を選択すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

      • ソースデータベースとターゲットデータベースのスキーマが同じである場合、DTSは、ターゲットデータベースのデータレコードと同じ主キーを持つデータレコードを同期しません。

      • ソースデータベースとターゲットデータベースのスキーマが異なる場合、初期データ同期が失敗する可能性があります。 この場合、一部の列のみが同期されるか、データ同期タスクが失敗します。

    マルチテーブルのマージ

    • はい: オンライントランザクション処理 (OLTP) シナリオでは、ビジネステーブルへの応答を高速化するためにシャーディングが実装されます。 ただし、AnalyticDB for PostgreSQLを使用すると、大量のデータを1つのテーブルに保存でき、SQLクエリの効率化が向上します。 同じスキーマを持つ複数のソーステーブルを1つのターゲットテーブルにマージできます。 この機能を使用すると、ソースデータベースの複数のテーブルのデータをAnalyticDB for PostgreSQLの単一のテーブルに同期できます。

      説明
      • ソースデータベースから複数のテーブルを選択した後、これらのテーブルの名前をAnalyticDB for PostgreSQLのターゲットテーブルの名前に変更する必要があります。 これを行うには、オブジェクト名マッピング機能を使用できます。 この機能の使用方法の詳細については、「同期するオブジェクトの名前変更」をご参照ください。

      • AnalyticDB for PostgreSQLのターゲットテーブルに __dts_data_sourceという名前の列を追加する必要があります。 この列は、データソースを記録するために使用されます。 この列のデータ型はTEXTです。 DTSは、<データ同期インスタンスID >:< ソースデータベース名>.<ソーススキーマ名>.<ソーステーブル名> の形式で列値を書き込みます。 このような列値により、DTSは各ソーステーブルを識別できます。 たとえば、dts ********:dtstestdata.testschema.customer1は、ソーステーブルがcustomer1であることを示します。

      • このパラメーターを [はい] に設定すると、タスクで選択したすべてのソーステーブルがターゲットテーブルにマージされます。 特定のソーステーブルをマージする必要がない場合は、これらのテーブルに対して個別のデータ同期タスクを作成できます。

    • No: デフォルト値。

    操作タイプの選択

    ビジネス要件に基づいて、同期する操作の種類を選択します。 すべての操作タイプがデフォルトで選択されています。

    同期するオブジェクトの選択

    [使用可能] セクションから1つ以上のオブジェクトを選択し、Rightwards arrowアイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。

    このシナリオでは、異種データベース間でデータ同期が実行されます。 したがって、同期するオブジェクトはテーブルであり、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに同期されません。

    説明
    • デフォルトでは、オブジェクトがターゲットインスタンスに同期された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。

    • [マルチテーブルのマージ] パラメーターを [はい] に設定した場合、選択したテーブルの名前をAnalyticDB for PostgreSQLインスタンスのターゲットテーブルの名前に変更する必要があります。 これを行うには、オブジェクト名マッピング機能を使用できます。

    ターゲットオブジェクトに引用符を追加する

    オブジェクト名を引用符で囲む必要があるかどうかを指定します。 [はい] を選択し、次の条件が満たされている場合、DTSは、スキーマ同期および増分データ同期中に、オブジェクト名を一重引用符 (') または二重引用符 (") で囲みます。

    • ソースデータベースのビジネス環境は大文字と小文字が区別され、データベース名には大文字と小文字が含まれます。

    • ソーステーブル名は、文字で始まるのではなく、文字、数字、および特殊文字以外の文字が含まれます。

      説明

      ソーステーブル名には、アンダースコア (_) 、数字記号 (#) 、およびドル記号 ($) の特殊文字のみを含めることができます。

    • 同期するスキーマ、テーブル、または列の名前は、ターゲットデータベースのキーワード、予約済みキーワード、または無効な文字です。

    説明

    [はい] を選択した場合、DTSがデータをターゲットデータベースに同期した後、オブジェクトを照会するためにオブジェクト名を引用符で指定する必要があります。

    データベースとテーブルの名前変更

    オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。

    失敗した接続の再試行時間

    既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 必要に応じて再試行時間を指定できます。 DTSが指定された時間内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。

    説明

    DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。

  9. AnalyticDB for PostgreSQLインスタンスに同期するテーブルのテーブルタイプ、プライマリキー列、および配布キーを指定します。

    Specify the table type, primary key column, and distribution key

    説明

    主キー列と配布列の詳細については、「 テーブルの管理」と「 テーブルの配布を定義」をご参照ください。

  10. ページの右下隅にある事前チェックをクリックします。

    説明
    • データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある提示アイコンをクリックして詳細を表示できます。

      • 詳細に基づいて問題をトラブルシューティングした後、新しい事前チェックを開始します。

      • 問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して新しい事前チェックを開始してください。

  11. [事前チェックに合格しました。メッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。 次に、データ同期タスクが開始されます。

  12. 初期同期が完了し、データ同期タスクが [同期] 状態になるまで待ちます。

    データ同期タスクのステータスは、[同期タスク] ページで確認できます。 View the status of a data synchronization task

よくある質問

Q: AnalyticDB for PostgreSQLインスタンスに同期されるテーブルを見つけるにはどうすればよいですか。

A: スキーマ同期中、DTSはソースデータベースのスキーマに基づいてテーブルをターゲットデータベースに同期します。 この例では、次の図に示すように、ターゲットインスタンスのdtstestdataデータベースのdboスキーマにcustomerテーブルとStudentテーブルがあります。 View destination tables in AnalyticDB for PostgreSQL