このトピックでは、data Transmission Service (DTS) を使用して、Elastic Compute Service (ECS) でホストされているセルフマネージドSQL ServerデータベースからAnalyticDB for PostgreSQLインスタンスにデータを同期する方法について説明します。
前提条件
自己管理型SQL Serverデータベースのバージョンは、2008、2008 R2、2012、2014、2016、2017、または2019です。
説明SQL ServerデータベースをAlways On可用性グループ (AOAG) に配置する場合は、同期コミットモードを使用する必要があります。
自己管理型SQL Serverデータベースから同期されるテーブルには、主キーまたはUNIQUE NOT NULLインデックスがあります。
AnalyticDB for PostgreSQLインスタンスの使用可能なストレージ容量は、自己管理型SQL Serverデータベースのデータの合計サイズよりも大きくなっています。
使用上の注意
DTSは、最初の完全データ同期中に、ソースRDSインスタンスとターゲットRDSインスタンスの読み取りおよび書き込みリソースを使用します。 これにより、RDSインスタンスの負荷が増加する可能性があります。 インスタンスのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースRDSインスタンスで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットRDSインスタンスでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データ同期の前に、ソースRDSインスタンスとターゲットRDSインスタンスのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。 たとえば、ソースRDSインスタンスとターゲットRDSインスタンスのCPU使用率が30% 未満の場合にデータを同期できます。
データ同期タスクが期待どおりに実行されるようにするには、ソースデータベースを頻繁にバックアップしないでください。 ログファイルを3日以上保持することを推奨します。 そうしないと、切り捨てられた後にログファイルを取得できません。
データ同期のレイテンシを正確にするために、DTSはハートビートテーブルを自己管理型SQL Serverデータベースに追加します。 ハートビートテーブルの名前は、
ソーステーブルname_dts_mysql_heartbeatです。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
制限事項
DTSは、アセンブリ、サービスブローカー、フルテキストインデックス、フルテキストカタログ、分散スキーマ、分散関数、CLRストアドプロシージャ、CLRスカラー値関数、CLRテーブル値関数、内部テーブル、システム、または集計関数のスキーマを同期しません。
DTSは、TIMESTAMP、CURSOR、ROWVERSION、HIERARCHYID、SQL_VARIANT、SPATIAL GEOMETRY、SPATIAL GEOGRAPHY、およびTABLEのタイプのデータを同期しません。
DTSは、計算列を含むテーブルを同期しません。
同期可能なSQL操作
DML操作: INSERT、UPDATE、およびDELETE
DDL操作: コラムを追加
説明DTSはトランザクションDDL操作を移行しません。
データベースアカウントに必要な権限
データベース | 必要な権限 | 関連ドキュメント |
自己管理型SQL Serverデータベース | sysadmin | |
AnalyticDB for PostgreSQLインスタンス |
説明 AnalyticDB for PostgreSQLインスタンスの初期アカウントを使用できます。 |
準備
データ同期タスクを構成する前に、自己管理型SQL Serverデータベースでログ設定を構成し、クラスタ化インデックスを作成します。
自己管理型SQL Serverデータベースで次のコマンドを実行して、復旧モデルをフルに変更します。 SQL Server Management Studio (SSMS) を使用して、復旧モデルを変更することもできます。 詳細については、「データベースの復旧モデルの表示または変更 (SQL Server) 」をご参照ください。
use master; GO ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GOパラメーター:
<database_name>: ソースデータベースの名前。
例:
use master; GO ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE; GO次のコマンドを実行して、ソースデータベースの論理バックアップを作成します。 すでに論理バックアップを作成している場合は、この手順をスキップします。
バックアップデータベース <database_name>
BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>'; GOパラメーター:
<database_name>: ソースデータベースの名前。
<physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。
例:
BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak'; GO次のコマンドを実行して、ソースデータベースのログエントリをバックアップします。
BACKUP LOG <database_name> をDISK='<physical_backup_device_name>' WITH initに
BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init; GOパラメーター:
<database_name>: ソースデータベースの名前。
<physical_backup_device_name>: バックアップファイルのストレージパスとファイル名。
例:
BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init; GO同期するテーブルのクラスター化インデックスを作成します。 詳細については、「クラスター化インデックスの作成」をご参照ください。
手順
データ同期インスタンスを購入します。 詳細については、「DTSインスタンスの購入」をご参照ください。
説明購入ページで、ソースインスタンスパラメーターをSQL Serverに、宛先インスタンスパラメーターをAnalyticDB for PostgreSQLに、同期トポロジパラメーターを一方向同期に設定します。
左側のナビゲーションウィンドウで、[データ同期] をクリックします。
[同期タスク] ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。
データ同期インスタンスを見つけ、[操作] 列の [同期チャネルの設定] をクリックします。
ソースインスタンスとターゲットインスタンスを設定します。

セクション
パラメーター
説明
非該当
同期タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
ソースデータベースのインスタンスタイプ。 この例では、ECSインスタンスのユーザー作成データベースが選択されています。
説明他のインスタンスタイプを選択した場合は、ソースデータベースに必要な環境を準備する必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。
ECS インスタンス ID
ソースデータベースをホストするElastic Compute Service (ECS) インスタンスのID。
データベースエンジン
このパラメーターの値はSQLServerに固定されており、変更することはできません。
ポート番号
ソースデータベースのサービスポート番号。 デフォルトのポート番号は、3306 です。
データベースアカウント
ソースデータベースのアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
暗号化
ソースインスタンスへの接続を暗号化するかどうかを指定します。 [暗号化なし] または[SSL 暗号化] を選択します。
説明Encryptionパラメーターは、中国本土および中国 (香港) リージョン内でのみ使用できます。
ターゲットインスタンスの詳細
インスタンスタイプ
このパラメーターの値は、AnalyticDB for PostgreSQLに固定されています。
インスタンスリージョン
購入ページで選択したターゲットリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ターゲットAnalyticDB for PostgreSQLインスタンスのID。
データベース名
ターゲットテーブルの名前です。
データベースアカウント
ターゲットAnalyticDB for PostgreSQLインスタンスのデータベースアカウント。 アカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
ページの右下隅にあるをクリックします。ホワイトリストと次への設定.
、ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQL、ApsaraDB 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。
同期ポリシーと同期するオブジェクトを選択します。

設定
説明
同期の初期化
デフォルトでは、初期スキーマ同期、初期フルデータ同期、および初期増分データ同期が選択されています。 事前チェックが完了すると、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つ以上のオブジェクトを選択し、
アイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。 このシナリオでは、異種データベース間でデータ同期が実行されます。 したがって、同期するオブジェクトはテーブルであり、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに同期されません。
説明デフォルトでは、オブジェクトがターゲットインスタンスに同期された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。
[マルチテーブルのマージ] パラメーターを [はい] に設定した場合、選択したテーブルの名前をAnalyticDB for PostgreSQLインスタンスのターゲットテーブルの名前に変更する必要があります。 これを行うには、オブジェクト名マッピング機能を使用できます。
ターゲットオブジェクトに引用符を追加する
オブジェクト名を引用符で囲む必要があるかどうかを指定します。 [はい] を選択し、次の条件が満たされている場合、DTSは、スキーマ同期および増分データ同期中に、オブジェクト名を一重引用符 (') または二重引用符 (") で囲みます。
ソースデータベースのビジネス環境は大文字と小文字が区別され、データベース名には大文字と小文字が含まれます。
ソーステーブル名は、文字で始まるのではなく、文字、数字、および特殊文字以外の文字が含まれます。
説明ソーステーブル名には、アンダースコア (_) 、数字記号 (#) 、およびドル記号 ($) の特殊文字のみを含めることができます。
同期するスキーマ、テーブル、または列の名前は、ターゲットデータベースのキーワード、予約済みキーワード、または無効な文字です。
説明[はい] を選択した場合、DTSがデータをターゲットデータベースに同期した後、オブジェクトを照会するためにオブジェクト名を引用符で指定する必要があります。
データベースとテーブルの名前変更
オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
失敗した接続の再試行時間
既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 必要に応じて再試行時間を指定できます。 DTSが指定された時間内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
AnalyticDB for PostgreSQLインスタンスに同期するテーブルのテーブルタイプ、プライマリキー列、および配布キーを指定します。
説明主キー列と配布列の詳細については、 テーブルの管理と テーブルの配布を定義します。
ページの右下隅にあるをクリックします。事前チェック.
説明データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある
アイコンをクリックして詳細を表示できます。 詳細に基づいて問題をトラブルシューティングした後、新しい事前チェックを開始します。
問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して新しい事前チェックを開始してください。
次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックに合格しました。 次に、データ同期タスクが開始されます。
初期同期が完了し、データ同期タスクが [同期] 状態になるまで待ちます。
データ同期タスクのステータスは、[同期タスク] ページで確認できます。
