Todos os produtos
Search
Central de documentação

Data Transmission Service:Synchronize or migrate triggers from the source database

Última atualização: Jun 27, 2026

Quando um trigger no banco de dados de origem atualiza uma tabela que está sendo sincronizada ou migrada, o DTS pode copiar o trigger para o banco de dados de destino antes da fase de dados incrementais, causando inconsistência entre a origem e o destino. Este tópico explica como lidar com triggers durante uma tarefa do DTS para evitar esse problema.

Pré-requisitos

Antes de começar, verifique se:

  • Os tipos de banco de dados de origem e destino são compatíveis. Consulte a seção Tipos de banco de dados compatíveis.

  • Tanto a sincronização/migração de esquema quanto a sincronização/migração de dados incrementais estejam selecionadas ao configure a instância do DTS:

    • Migração de dados: selecione Schema Migration e Incremental Data Migration em Migration Types.

    • Data synchronization: Incremental Data Synchronization está selecionado por padrão em Synchronization Types. Selecione também Schema Synchronization.

  • Source Objects está defina como um banco de dados ou esquema completo.

Tipos de banco de dados compatíveis

SourceDestinationAutomatic migration behavior
MySQL, PolarDB for MySQL ou ApsaraDB RDS for MariaDBMySQL, PolarDB for MySQL ou ApsaraDB RDS for MariaDBO DTS adiciona uma instrução de controle de trigger a cada trigger no banco de dados de destino. Essa instrução impede que o trigger seja disparado durante a fase de escrita do DTS. Consulte Como funciona a migração automática.
SQL ServerSQL ServerO DTS copia os triggers para o banco de dados de destino.
Importante

Se alterações incrementais no banco de dados de origem fizerem com que os triggers nos bancos de dados de origem e destino atualizem dados simultaneamente, dados inconsistentes poderão aparecer no destino. Use Manual Migration para origens SQL Server e execute as operações subsequentes.

Se o banco de dados de destino for PostgreSQL, PolarDB for PostgreSQL ou PolarDB for PostgreSQL (Compatible with Oracle), o DTS evita automaticamente a inconsistência de dados:
Se a instância do DTS usar uma conta de banco de dados de destino com privilégios elevados, o DTS desativa o trigger no nível da sessão após sincronizá-lo ou migrá-lo.
Se a conta não tiver permissões suficientes, defina o parâmetro session_replication_role como replica no banco de dados de destino durante a execução da tarefa. Para outros tipos de banco de dados que contêm triggers, consulte Configurar uma tarefa de sincronização de dados para um banco de dados de origem que contém triggers .

Escolha um método de migração

Na etapa Configure Objects da configuração da instância do DTS, defina Method to Migrate Triggers in Source Database.

Se você usar a versão anterior do console Data Management (DMS), essa opção aparece na etapa Configure Objects and Advanced Settings.

Método

O que o DTS faz

Quando usar

Automatically Migrate

Copia os triggers para o banco de dados de destino adicionando uma instrução de controle. Nenhuma ação adicional é necessária.

Origens da família MySQL, onde o mecanismo de controle de triggers é suficiente.

Manual Migration

Ignora o trigger durante a migração de esquema e gera um alerta object ignored due to incremental migration is enabled. Migre o trigger manualmente antes de concluir a sincronização/migração de dados incrementais.

Origens SQL Server.

Como funciona a migração automática

Ao selecionar Automatically Migrate, o DTS copia o código do trigger do banco de dados de source, envolve o corpo do trigger em uma instrução de controle e grava o trigger modificado no banco de dados de destino.

Trigger no banco de dados de source:

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

Trigger no banco de dados de destino (após a modificação pelo DTS):

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;

Migrar triggers manualmente

As etapas para migrar triggers manualmente são as mesmas da sincronização manual. O exemplo a seguir demonstra a sincronização manual.

  1. Acesse o console do Data Management (DMS). Na barra de navegação superior, clique em Data + AI. No painel de navegação à esquerda, escolha DTS (DTS) > Data Synchronization.

    Também é possível acessar diretamente a página Data Synchronization Tasks do novo console do DTS . Para opções de layout do console, consulte Simple mode e Customize the layout and style of the DMS console .
  2. À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização de dados reside.

    No novo console do DTS, selecione a região na barra de navegação superior.
  3. Localize a instância do DTS e clique em no ID da instância.

  4. (Opcional) No painel à esquerda, clique em Task Management.

  5. Na seção Progress, clique em no módulo Incremental Write.

  6. Na aba Basic Information, clique em Migrate Triggers.

    Se Migrate Triggers não for exibido, nenhum trigger foi encontrado durante a sincronização ou migração de esquema. Para verifique o resultado da sincronização de triggers, acesse o módulo Schema Migration3 na seção Progress .

Perguntas frequentes

Como seleciono os tipos de sincronização de esquema e incremental ao configurar uma instância do DTS?

Para uma tarefa de sincronização de dados, selecione Schema Synchronization e Incremental Data Synchronization em Synchronization Types. Para uma tarefa de migração de dados, selecione Schema Migration e Incremental Data Migration em Migration Types.

Como concluo a sincronização ou migração de dados incrementais?

Encerre, redefina ou libere a instância do DTS. Para mais detalhes, consulte Encerrar uma instância do DTS, Redefinir uma instância do DTS e Liberar instâncias do DTS.