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

Data Transmission Service:自己管理 SQL Server データベースから PolarDB for MySQL クラスターへのデータ同期

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) を使用して、自己管理 SQL Server データベースから PolarDB for MySQL クラスターへ、スキーマ、既存データ、および継続的な変更を含むデータを継続的に同期します。

前提条件

開始する前に、以下の要件を満たしていることを確認してください。

ソースデータベースが以下のいずれかの条件を満たす場合、タスクを複数のサブタスクに分割してください。

  • 10 個を超えるデータベースを含む場合

  • 1 時間あたり 1 回を超える頻度でログをバックアップする場合

  • データベースごとに 1 時間あたり 100 件を超える DDL 文を実行する場合

  • データベースごとに 1 秒あたり 20 MB を超える速度でログを書き込む場合

  • 1,000 個を超えるテーブルに対して変更データキャプチャ (CDC) を有効にする必要がある場合

増分同期モードの選択

タスクを構成する前に、ソースデータベースに適した増分同期モードを選択してください。この選択により、ソースデータベースの準備手順および適用される制限が異なります。

モードサポートされるテーブルの種類ソースデータベースへの影響推奨用途
ハイブリッドログベース解析ヒープテーブル、プライマリキーを持たないテーブル、圧縮テーブル、計算列を含むテーブルなど、すべてのテーブルタイプトリガー dts_cdc_sync_ddl、ハートビートテーブル dts_sync_progress、DDL 履歴テーブル dts_cdc_ddl_history を作成し、ソースデータベースおよび特定のテーブルで CDC を有効化DTS がアーティファクトを書き込んでも問題ないほとんどの SQL Server デプロイメント
ソースデータベースログに基づく増分同期クラスター化インデックスとプライマリキー列を持つテーブルのみ。ヒープテーブル、プライマリキーを持たないテーブル、圧縮テーブル、計算列を含むテーブルはサポートされません。ソースデータベース内にトリガー dts_cdc_sync_ddl、ハートビートテーブル dts_sync_progress、DDL 履歴テーブル dts_cdc_ddl_history を作成データベースを変更できない環境
CDC インスタンスのポーリングAmazon RDS for SQL Server、Microsoft Azure SQL Database、Microsoft Azure SQL Managed Instance、Microsoft Azure SQL Server on Virtual Machine、Google Cloud SQL for SQL ServerDTS がデータベースレベルおよびテーブルレベルで CDC を有効化。一時的なテーブルロック(数秒)が発生サードパーティクラウド上の SQL Server データベース
ApsaraDB RDS for SQL Server の Web エディションを実行しているインスタンスでは、必ずソースデータベースログに基づく増分同期を使用する必要があります。
テーブルがヒープテーブル、プライマリキーのないテーブル、圧縮テーブル、または計算列を含むテーブルであるかどうかを確認するには、「よくある質問」をご参照ください。

課金

同期タイプ費用
スキーマ同期および完全データ同期無料
増分データ同期課金対象です。「課金概要」をご参照ください。

サポートされる同期トポロジ

  • 一方向 1 対 1 同期

  • 一方向 1 対多同期

  • 一方向 多対 1 同期

サポートされるすべてのトポロジについては、「同期トポロジ」をご参照ください。

同期可能な SQL 操作

操作タイプ
DMLINSERTUPDATEDELETE
DDLCREATE TABLEADD COLUMNDROP COLUMNDROP TABLECREATE INDEXDROP INDEX

以下の DDL 操作は同期されません。

  • パーティションテーブルまたは関数を含むテーブルに対する CREATE TABLE

  • ユーザー定義型を含む DDL 操作

  • オンライン DDL 操作

  • トランザクション DDL 文

制限事項

ソースデータベースの制限事項

  • テーブルには PRIMARY KEY または一意制約が設定されており、すべてのフィールドが一意である必要があります。これがない場合、ターゲットデータベースに重複レコードが含まれる可能性があります。

  • テーブルをオブジェクトとして選択し、ターゲットデータベースで名前を変更する場合、タスクあたり最大 5,000 テーブルまで可能です。それ以上のテーブルを同期する場合は、複数のタスクを構成するか、データベースレベルで同期を実施してください。

  • 同期タスクあたり最大 10 データベースまでです。それ以上の場合は、複数のタスクを構成してください。

  • DTS はソースログを読み取るために fn_log 関数を使用します。タスク完了前にソースデータベースのログをクリアしないでください。これを行うと、タスクが失敗する可能性があります。

  • データログに関する要件:

    • バックアップモードは Full に設定し、フル物理バックアップを実行する必要があります。

    • 増分同期のみの場合:ログを少なくとも 24 時間保持する必要があります。

    • 完全同期+増分同期の場合:ログを少なくとも 7 日間保持する必要があります。完全同期完了後は、保持期間を 24 時間に短縮できます。

  • ソースが読み取り専用インスタンスの場合、DDL 操作は同期できません。

  • ソースデータベースが Azure SQL Database の場合、1 つのデータ同期タスクで同期できるのは 1 データベースのみです。

  • ApsaraDB RDS for SQL Server インスタンスの場合:タスクを開始する前に、透過的データ暗号化 (TDE) を無効化します。 「TDE の無効化」を参照してください。

  • スキーマ同期および完全データ同期中は、DDL 文を実行しないでください。これを行うと、タスクが失敗します。

  • 完全データ同期では、ソースデータベースで READ_COMMITTED_SNAPSHOT トランザクション隔離モードを使用して、共有ロックによるデータ書き込みのブロッキングを防止してください。これを省略した場合、データの不整合やインスタンス障害が発生する可能性があり、そのような状況は DTS のサービスレベル契約 (SLA) の対象外となります。

CDC 要件(ソーステーブルで CDC を有効化する必要がある場合に適用):

  • sys.sysservers 内の srvname フィールドが、SERVERPROPERTY 関数の戻り値と一致している必要があります。

  • 自己管理 SQL Server データベースの場合:データベース所有者は sa ユーザーである必要があります。ApsaraDB RDS for SQL Server の場合:データベース所有者は sqlsa ユーザーである必要があります。

  • Enterprise エディション:SQL Server 2008 以降が必要です。

  • Standard エディション:SQL Server 2016 SP1 以降が必要です。

  • SQL Server 2017(Standard または Enterprise エディション)を実行している場合は、より新しいバージョンに更新してください。

  • CDC を有効化したテーブルの数が DTS がサポートする上限を超えると、事前チェックに失敗します。

  • CDC を有効化したテーブルの単一フィールドが 64 KB を超える場合、次のコマンドを実行してください:exec sp_configure 'max text repl size', -1;

モード固有の制限事項

ハイブリッドログベース解析:

  • 10 分以内の時間枠で列の追加または削除を行わないでください。たとえば、以下のシーケンスを 10 分以内に実行すると、タスクエラーが発生します。

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • CDC を有効化したテーブルに対して SELECT INTO または TRUNCATE を実行しないでください。また、DTS が作成したトリガーを削除しないでください。

  • CDC コンポーネントは、デフォルトで増分データを 3 日間保持します。保持期間を変更するには、次のコマンドを実行してください。

    exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention = <time>;

    <time> は保持期間(分単位)です。1 日あたりの増分レコードが 1,000 万件を超える場合は、<time>1,440 に設定してください。

  • 遅延や不安定さを回避するため、タスクあたりの CDC 有効化テーブル数を 1,000 以下に維持してください。

  • CDC を有効化したテーブルの最大書き込みレートを 1 秒あたり 1,000 レコードに設定してください。

  • CDC を有効化すると、ソースデータベース上で一時的なテーブルロック(数秒)が発生します。

ソースデータベースログに基づく増分同期:

  • プライマリキー列を含むクラスター化インデックスを持つテーブルのみがサポートされます。

CDC インスタンスのポーリング:

  • DTS アカウントは、データベースレベルの CDC を有効化するために sysadmin ロールのメンバーである必要があります。テーブルレベルの CDC では、特権アカウントが必要です。

    • Microsoft Azure SQL Database(vCore モデル):すべてのデータベースがサポートされます。Azure SQL Database(DTU モデル):S3 以上のサービスタイアのデータベースのみがサポートされます。

    • Amazon RDS for SQL Server:特権アカウントはストアドプロシージャ経由でデータベースレベルで CDC を有効化できます。

    • クラスター化列ストアインデックスは CDC でサポートされません。

  • タスクあたり最大 1,000 テーブルまでです。

  • 1 分間に 2 回を超えて列の追加または削除を行わないでください。

  • 同期中にソースデータベース上の CDC インスタンスを変更しないでください。これにより、データ損失が発生する可能性があります。

  • CDC はデフォルトで増分データを 3 日間保持します。保持期間の変更コマンドはハイブリッドモードと同じです。

  • CDC を有効化すると、ソースデータベース上で一時的なテーブルロック(数秒)が発生します。

一般的な制限事項

  • スキーマ同期は、データベース、スキーマ、テーブルをサポートします。異種データベースエンジン間のシナリオでは、ビュー、トリガー、ストアドプロシージャは同期されません。

  • サポートされないデータの型:TIMESTAMPCURSORROWVERSIONSQL_VARIANTHIERARCHYIDPOLYGONGEOMETRY、および GEOGRAPHY

  • 同期データに 4 バイト文字(希少文字または絵文字)が含まれる場合、ターゲットデータベースおよびテーブルは UTF8mb4 文字セットを使用する必要があります。ターゲットデータベースの character_set_server パラメーターを UTF8mb4 に設定してください。

  • DTS は、複雑な DDL 操作、ユーザー定義型を含む DDL 操作、オンライン DDL 操作、トランザクション DDL 文をサポートしません。

  • 増分同期中にインデックスの再作成を実行しないでください。これにより、タスクが失敗し、データが失われる可能性があります。また、DTS は CDC を有効化したテーブルに対するプライマリキー関連の DDL 操作も同期できません。

  • DTS がターゲットデータベースへの DDL 文の書き込みに失敗した場合、タスクは実行を継続します。 失敗した DDL 文はタスクログで確認できます。 詳細については、「タスクログの表示」をご参照ください。

  • 完全データ同期では同時 INSERT 操作が使用されるため、ターゲットテーブルに断片化が発生します。完全同期完了後、ターゲットの表領域はソースよりも大きくなります。

  • データ同期を開始する前に、ソースおよびターゲットデータベースのパフォーマンスへの影響を評価してください。オフピーク時間帯にデータ同期を実施することを推奨します。初期完全データ同期中、DTS はソースおよびターゲットデータベースの読み取り・書き込みリソースを使用するため、データベースサーバーの負荷が増加する可能性があります。

  • 同期中に他のソースからターゲットデータベースにデータを書き込まないでください。これにより、データの不整合が発生します。

  • タスク開始後に同期オブジェクトを変更する際、データベースの追加または削除はできません。

  • ソースインスタンスが ApsaraDB RDS for SQL Server インスタンスの場合、DTS は rdsdt_dtsacct という名前のアカウントを作成します。タスクの実行中は、このアカウントを削除したりパスワードを変更したりしないでください。詳細については、「システムアカウント」をご参照ください。

  • DTS タスクが失敗した場合、DTS テクニカルサポートは 8 時間以内に復旧を試みます。復旧中、タスクが再起動され、タスクパラメーター(データベースパラメーターではない)が変更される可能性があります。

ソースデータベースの準備

同期タスクを作成する前に、自己管理 SQL Server データベースでログ設定を構成してください。複数のデータベースから同期する場合は、各データベースに対してこれらの手順を繰り返してください。

  1. 復元モードを Full に変更します。これは、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
  2. ソースデータベースの論理バックアップを作成します。すでに論理バックアップが存在する場合は、この手順をスキップしてください。

    • <database_name>:ソースデータベース名

    • <physical_backup_device_name>:バックアップファイルのパスおよびファイル名

    BACKUP DATABASE <database_name> TO DISK='<physical_backup_device_name>';
    GO

    例:

    BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak';
    GO
  3. ソースデータベースのログバックアップを作成します。

    BACKUP LOG <database_name> to DISK='<physical_backup_device_name>' WITH init;
    GO

    例:

    BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init;
    GO

同期タスクの構成

  1. データ同期タスクページに移動します。

    1. Data Management (DMS) コンソール にログインします。

    2. 上部ナビゲーションバーで、Data + AI をクリックします。

    3. 左側のナビゲーションウィンドウで、DTS (DTS) > データ同期 を選択します。

    ナビゲーションパスは、DMS コンソールのモードおよびレイアウトによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、「データ同期タスクページ」に直接アクセスすることもできます。
  2. 同期インスタンスが配置されているリージョンを選択します。新しい DTS コンソールでは、上部ナビゲーションバーでリージョンを選択します。

  3. タスクの作成 をクリックします。以下のパラメーターを使用して、ソースおよびターゲットデータベースを構成します。

    セクションパラメーター説明
    該当なしタスク名タスクを識別するためのわかりやすい名前。一意である必要はありません。DTS がデフォルト名を生成します。
    ソースデータベースDMS データベースインスタンスの選択既存の DMS データベースインスタンスを選択するとパラメーターが自動入力されます。手動で構成する場合は空白のままにしてください。
    データベースタイプSQL Server を選択します。
    アクセス方法Express Connect、VPN Gateway、または Smart Access Gateway を選択します。
    インスタンスリージョン自己管理 SQL Server データベースが配置されているリージョン。自己管理データベースの場合は、事前に必要なネットワーク環境をデプロイしてください。「準備の概要」をご参照ください。
    Alibaba Cloud アカウント間でのデータレプリケーションこのシナリオでは、いいえ を選択します。
    接続先 VPCソース SQL Server データベースがデプロイされている仮想プライベートクラウド (VPC) の ID。
    IP アドレスソースデータベースのサーバー IP アドレス。
    ポート番号サービスポート。デフォルト:1433
    データベースアカウントソースデータベースへの接続に使用するアカウントには、sysadmin ロールの権限が必要です。CREATE USER および GRANT (Transact-SQL) をご参照ください。
    データベースパスワードデータベースアカウントのパスワード。
    ターゲットデータベースDMS データベースインスタンスの選択既存の DMS データベースインスタンスを選択するとパラメーターが自動入力されます。手動で構成する場合は空白のままにしてください。
    データベースタイプPolarDB for MySQL を選択します。
    アクセス方法Alibaba Cloud インスタンス を選択します。
    インスタンスリージョンPolarDB for MySQL クラスターが配置されているリージョン。
    PolarDB クラスター IDターゲットとなる PolarDB for MySQL クラスターの ID。
    データベースアカウントターゲットクラスターへの接続に使用するアカウント。ターゲットデータベースに対する読み取り・書き込み権限が必要です。
    データベースパスワードデータベースアカウントのパスワード。
  4. [接続をテストして続行] をクリックします。 DTS は、Alibaba Cloud データベースインスタンスのホワイトリストと Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに、DTS サーバーの CIDR ブロックを自動的に追加します。 データセンターまたはサードパーティのクラウドプラットフォーム上の自己管理データベースの場合、DTS サーバーの CIDR ブロックをデータベースのホワイトリストに手動で追加してください。 詳細については、「DTS サーバーの CIDR ブロック」をご参照ください。

    警告

    ホワイトリストまたはセキュリティグループルールに DTS CIDR ブロックを追加すると、セキュリティリスクが生じます。続行する前に、強力な認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストルールの定期的な監査などの予防措置を講じてください。さらにセキュリティを強化するには、Express Connect、VPN Gateway、または Smart Access Gateway 経由でデータベースを DTS に接続することを推奨します。

  5. 同期するオブジェクトおよび詳細設定を構成します。

    パラメーター説明
    同期タイプスキーマ同期完全データ同期、および 増分データ同期 を選択します。完全データ同期が最初に実行され、既存データをコピーして増分同期のベースラインを提供します。
    競合テーブルの処理モード事前チェックしてエラーを報告オブジェクト名マッピング(デフォルト):ターゲットにソーステーブルと同じ名前のテーブルが存在する場合、事前チェックに失敗します。ターゲットテーブルの名前を変更する必要がある場合は、「」をご利用ください。エラーを無視して続行:名前競合のチェックをスキップします。完全同期中は、プライマリキーまたは一意キーが競合するレコードはスキップされます。増分同期中は、ターゲットレコードを上書きします。スキーマが異なる場合、初期化が失敗するか、一部のデータが失われる可能性があります。
    SQL Server 増分同期モード増分同期モードの選択」で選択したモードを選択します。UI 上のラベルは次のとおりです:非ヒープテーブルのログベース解析およびヒープテーブルの CDC ベース増分同期(ハイブリッドログベース解析)ソースデータベースのログに基づく増分同期(ヒープテーブルはサポートされません)、および CDC インスタンスのポーリングおよびクエリによる増分同期
    ソースオブジェクト同期するオブジェクトを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動させます。この異種データベースのシナリオでは、テーブルのみを同期できます。
    選択済みオブジェクト送信先で単一オブジェクトの名前を変更するには、そのオブジェクトを右クリックし、名前の変更オプションを使用します。詳細については、「単一オブジェクトの名前をマップする」をご参照ください。複数のオブジェクトを一度に名前を変更するには、[一括編集] をクリックします。詳細については、「複数のオブジェクト名を一度にマップする」をご参照ください。特定のテーブルについて同期する SQL 操作を選択するには、そのテーブルを右クリックして操作を設定します。条件で行をフィルターするには、オブジェクトを右クリックし、WHERE 条件を指定します。詳細については、「フィルター条件を指定する」をご参照ください。
  6. 次へ:詳細設定 をクリックし、以下のパラメーターを構成します。

    パラメーター説明
    モニタリングとアラートタスクが失敗した場合や同期遅延がしきい値を超えた場合に通知を受け取るには、[Yes] を選択します。アラートのしきい値と通知設定を構成してください。詳細については、「モニタリングとアラートの設定」をご参照ください。
    接続失敗時の再試行時間DTS が接続失敗後に再試行する時間を設定します。有効値:10~1,440 分。デフォルト値:720。少なくとも 30 分以上に設定してください。この期間内に DTS が再接続できた場合、タスクは再開されます。複数のタスクで同じソースまたはターゲットデータベースを共有している場合、最も短い再試行時間が適用されます。DTS が接続を再試行している間は、DTS インスタンスに対して課金されます。ビジネス要件に基づいて再試行時間の範囲を適切に指定し、ソースおよび宛先インスタンスをリリースした後は、速やかに DTS インスタンスをリリースすることを推奨します。
    その他の問題発生時の再試行時間DDL または DML の失敗後に DTS が再試行する時間を設定します。有効値:1~1,440 分。デフォルト値:10。少なくとも 10 分以上に設定してください。接続失敗時の再試行時間より短く設定する必要があります。
    ETL の設定同期中に抽出・変換・書き出し(ETL)を使用してデータを変換する場合は、[Yes] を選択します。詳細については、「ETL とは」および「ETL の設定」をご参照ください。
  7. 次へ:タスク設定の保存と事前チェック をクリックします。この構成の API パラメーターをプレビューするには、ボタンにカーソルを合わせて OpenAPI パラメーターのプレビュー をクリックしてから、次へ進んでください。

    DTS はタスク開始前に事前チェックを実行します。いずれかのチェックに失敗した場合は、詳細を表示 をクリックして原因を確認し、トラブルシューティングを行ってください。その後、再度事前チェック をクリックします。アラート項目を無視できる場合は、アラートの詳細を確認 をクリックし、次に 無視、そして 再度事前チェック をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
  8. 成功率100% に達したら、次へ:インスタンスの購入 をクリックします。

  9. 同期インスタンスの課金方法およびインスタンスクラスを構成します。

    セクションパラメーター説明
    新しいインスタンスクラス課金方法サブスクリプション:固定期間分を前払いする方式で、長期利用の場合にコスト効率が高くなります。従量課金:1 時間単位で課金される方式で、短期利用に適しています。ご利用のインスタンスが不要になった場合は、課金を停止するためにインスタンスをリリースしてください。
    リソースグループ設定同期インスタンスのリソースグループです。デフォルト:default resource group。詳細については、「What is Resource Management?
    インスタンスクラス同期スループットのクラスです。詳細については、「Instance classes of data synchronization instances」をご参照ください。
    サブスクリプション期間サブスクリプション課金方法でのみ利用可能です。1~9 か月、または 1 年、2 年、3 年、5 年の期間を選択できます。
  10. Data Transmission Service (従量課金) サービス利用規約 を読み、同意してください。

  11. 購入して開始 をクリックします。確認ダイアログで、OK をクリックします。

タスクがタスクリストに表示されます。ここから同期の進行状況をモニターできます。

次のステップ