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

Data Transmission Service:トリガーの同期または移行の設定

最終更新日:Aug 22, 2026

データ同期または移行タスク中にトリガーを早期に移行すると、ソースデータベースと宛先データベース間でデータの不整合が発生する可能性があります。本トピックでは、この問題を防ぐためのトリガーの同期または移行の設定方法について説明します。

前提条件

  • ソースデータベースと宛先データベースは、ApsaraDB RDS for MariaDB インスタンスから ApsaraDB RDS for MySQL インスタンスへの移行など、サポート対象のタイプである必要があります。詳細については、「サポート対象インスタンス」をご参照ください。

  • インスタンスで、スキーマタスクと増分タスクの両方を設定する必要があります。

    • 移行インスタンス: 移行タイプ には、スキーマ移行増分データ移行 を選択する必要があります。

    • 同期インスタンス: 同期タイプ では、デフォルトで 増分データ同期 が選択されており、スキーマ同期 も選択する必要があります。

  • インスタンスを設定する際、データベース全体またはスキーマレベルでソースオブジェクトにオブジェクトを選択する必要があります。

サポート対象インスタンス

ソースデータベース

宛先データベース

説明

MySQL、PolarDB for MySQL、MariaDB

MySQL、PolarDB for MySQL、MariaDB

移行元データベースのトリガーを移行する方法自動的に移行 に設定されている場合、DTS は、トリガーがデフォルトで起動しないように、移行先データベースのトリガーに制御ステートメントを追加します。詳細については、「自動移行」をご参照ください。

SQL Server

SQL Server

移行元データベースのトリガーを移行する方法自動的に移行 に設定されている場合、DTS はトリガーを移行先データベースに自動的に移行します。

重要

ソースデータベースでの増分データ変更によってトリガーが起動され、ソースデータベースと宛先データベースの両方でデータが更新される場合、宛先データベースでデータ不整合が発生する可能性があります。手動移行 を選択し、必要な後続の操作を実行することをお勧めします。

説明
  • 同期または移行インスタンスのソースデータベースにトリガーが含まれており、宛先データベースが PostgreSQL、PolarDB for PostgreSQL、または PolarDB for PostgreSQL (Compatible with Oracle) インスタンスの場合、DTS はインスタンスの実行中にトリガーの同期または移行によって発生するデータの不整合を防ぐことができます。

    • 宛先データベースのアカウントが特権アカウントやスーパー特権アカウントなど十分な権限を持っている場合、DTS はトリガーが宛先データベースに同期または移行された後、セッションレベルで自動的にトリガーを無効にします。

    • 宛先データベースのアカウントに十分な権限がない場合は、インスタンスの実行中に宛先データベースで session_replication_role パラメーターが replica に設定されていることを確認してください。

  • トリガーを含むその他の同期または移行インスタンスについては、「ソースデータベースにトリガーが含まれている場合、同期または移行タスクをどのように設定すればよいですか?」をご参照ください。

インスタンスの設定

オブジェクト設定 ステップで、移行元データベースのトリガーを移行する方法 のオプションを選択します。

説明

以前のバージョンの設定ページでは、このオプションは オブジェクトの設定と詳細設定 ステップにあります。

  • 手動移行: スキーマ移行中に、DTS は、検出したすべてのトリガーに対して object ignored due to incremental migration is enabled アラートを生成し、それらを宛先データベースに移行しません。増分タスクを終了する前に、ソースデータベースから宛先データベースにトリガーを手動で同期または移行する必要があります。詳細については、「手動移行」をご参照ください。

  • 自動的に移行 を選択すると、追加の操作は必要ありません。

手動移行

説明

同期インスタンスと移行インスタンスの手順は類似しています。ここでは、同期インスタンスを例として説明します。

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

    1. にログインします。 DMSコンソールを使用します。

    2. 上部のナビゲーションバーで、[DTS] をクリックします。

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

    説明
  2. 対象インスタンスの ID をクリックします。

  3. 任意: 左側のナビゲーションペインで、タスク管理 をクリックします。

  4. 進捗状況 セクションで、増分書き込み モジュールをクリックします。

  5. 基本情報 タブで、トリガーの移行 をクリックします。

    説明

    トリガーの移行 ボタンが表示されていない場合は、スキーマ移行中にトリガーが検出されなかったことを示します。

    トリガーの同期結果は、[Schema Migration3] モジュール内の 進捗状況 セクションで表示できます。

自動移行

DTS は、ソースデータベースからトリガーコードをコピーし、トリガーのヘッダーに制御ステートメントを追加した後、変更されたコードを宛先データベースに書き込みます。次にコード例を示します。

ソースデータベースのトリガー:

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW
  BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
  END;

宛先データベースのトリガー:

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW
  BEGIN
    IF (SELECT @`__#aliyun_dts_writer#__) IS NULL THEN
        INSERT INTO test2 SET a2 = NEW.a1;
    END IF;
  END;

自動移行は、DTS がトリガーを処理する方法のみを変更します。増分データ同期には影響を与えません。増分データ同期が実行されるかどうかは、移行タイプ増分データ移行 を選択したかどうかによって決まります。スキーマ移行、フルデータ移行、および 増分データ移行 を選択した場合、フルデータ移行の完了後、DTS はソースデータベースの新しいデータを宛先データベースに自動的に同期します。

よくある質問

  • 「スキーマ操作と増分操作の両方を含むタスク」とは何ですか。

    同期インスタンスの場合、同期タイプスキーマ同期増分データ同期の両方が選択されていることを意味します。 移行インスタンスの場合、移行タイプスキーマ移行増分データ移行の両方が選択されていることを意味します。

  • 増分タスクを終了するにはどうすればよいですか?

    インスタンスを終了、リセット、またはリリースすることで、増分タスクを終了できます。詳細については、「DTS インスタンスの終了」、「DTS インスタンスのリセット」、および「DTS インスタンスのリリース」をご参照ください。