A migração prematura de triggers durante uma tarefa de sincronização ou migração de dados pode causar inconsistência entre os bancos de dados de origem e de destino. Este tópico explica como configurar a sincronização ou migração de triggers para evitar esse problema.
Pré-requisitos
Os bancos de dados de origem e de destino devem ser de um tipo compatível, como de uma instância do ApsaraDB RDS for MariaDB para uma instância do ApsaraDB RDS for MySQL. Para mais informações, consulte Supported instances.
-
A instância deve estar configurada para tarefas de estrutura e incrementais.
Instância de migração: Em Migration Types, selecione Schema Migration e Incremental Data Migration.
Instância de sincronização: Em Synchronization Types, a opção Incremental Data Synchronization vem selecionada por padrão. Selecione também Schema Synchronization.
Ao configurar a instância, selecione objetos em Source Objects no nível de banco de dados ou schema completo.
Instâncias compatíveis
|
Banco de dados de origem |
Banco de dados de destino |
Descrição |
|
MySQL, PolarDB for MySQL, MariaDB |
MySQL, PolarDB for MySQL, MariaDB |
Se Method to Migrate Triggers in Source Database estiver definido como Automatically Migrate, o DTS adiciona uma instrução de controle ao trigger no banco de dados de destino. Essa instrução impede que o trigger seja acionado por padrão. Para mais informações, consulte Automatic migration. |
|
SQL Server |
SQL Server |
Quando Method to Migrate Triggers in Source Database está definido como Automatically Migrate, o DTS migra os triggers automaticamente para o banco de dados de destino. Importante
Se alterações incrementais de dados no banco de dados de origem fizerem com que os triggers atualizem dados tanto na origem quanto no destino, isso pode gerar inconsistências no banco de dados de destino. Recomendamos selecionar Manual Migration e executar as operações subsequentes necessárias. |
-
Caso o banco de dados de origem da instância de sincronização ou migração contenha triggers e o banco de dados de destino seja uma instância PostgreSQL, PolarDB for PostgreSQL ou PolarDB for PostgreSQL (Compatible with Oracle), o DTS ajuda a prevenir inconsistências de dados causadas pela sincronização ou migração de triggers durante a execução da instância.
Se a conta usada no banco de dados de destino tiver privilégios suficientes, como uma conta privilegiada ou superprivilegiada, o DTS desativa automaticamente o trigger no nível de sessão após a sincronização ou migração para o destino.
Quando a conta do banco de dados de destino não possui privilégios suficientes, garanta que o parâmetro
session_replication_roleesteja definido comoreplicano banco de dados de destino enquanto a instância estiver em execução.
Para outras instâncias de sincronização ou migração que contenham triggers, consulte How do I configure a synchronization or migration task when the source database contains triggers?
Configuração da instância
Na etapa Configure Objects, escolha uma opção para Method to Migrate Triggers in Source Database.
Na versão anterior da página de configuração, essa opção encontra-se na etapa Configure Objects and Advanced Settings.
Selecione Manual Migration: Durante a migração de estrutura, o DTS gera um alerta
object ignored due to incremental migration is enabledpara cada trigger encontrado e não o migra para o banco de dados de destino. Sincronize ou migre manualmente os triggers do banco de dados de origem para o de destino antes de encerrar a tarefa incremental. Para mais informações, consulte Manual migration.Escolha Automatically Migrate: Nenhuma ação adicional é necessária.
Migração manual
O procedimento é semelhante para instâncias de sincronização e de migração. Esta seção usa uma instância de sincronização como exemplo.
-
Acesse a página da lista de tarefas de sincronização da região de destino. Utilize um dos dois métodos a seguir:
Pelo console do DTS
Faça login no console do Data Transmission Service (DTS).
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.
Pelo console do DMS
NotaAs operações reais podem variar conforme o modo e o layout do console do DMS. Para mais informações, consulte Simple mode e Customize the layout and style of the DMS interface.
Faça login no Data Management (DMS).
Na barra de menu superior, escolha .
À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.
Clique em ID da instância de destino.
Opcional: No painel de navegação à esquerda, clique em Task Management.
Na seção Progress, clique em módulo Incremental Write.
-
Na aba Basic Information, clique em Migrate Triggers.
NotaSe o botão Migrate Triggers não for exibido, nenhum trigger foi encontrado durante a migração da estrutura.
Visualize os resultados da sincronização de triggers na seção Progress, dentro do módulo Schema Migration3.
Migração automática
O DTS copia o código do trigger do banco de dados de origem, adiciona uma instrução de controle ao cabeçalho do trigger e grava o código modificado no banco de dados de destino. O código a seguir mostra um exemplo:
Trigger do banco de dados de origem:
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW
BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
END;
Trigger do banco de dados de destino:
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;
A migração automática altera apenas a forma como o DTS processa os triggers, sem impacto na sincronização incremental de dados. A ocorrência da sincronização incremental depende da seleção de Incremental Data Migration em Migration Types. Ao selecionar Schema Migration, migração completa de dados e Incremental Data Migration, o DTS sincroniza automaticamente os novos dados do banco de origem para o de destino após a conclusão da migração completa.
Perguntas frequentes
-
O que significa uma tarefa que inclui operações de estrutura e incrementais?
Para uma instância de sincronização, isso significa que tanto Schema Synchronization quanto Incremental Data Synchronization estão selecionadas em Synchronization Types. Já para uma instância de migração, indica que Schema Migration e Incremental Data Migration foram selecionadas em Migration Types.
-
Como encerrar uma tarefa incremental?
Encerre a tarefa incremental terminando, redefinindo ou liberando a instância. Para mais informações, consulte Terminate a DTS instance, Reset a DTS instance e Release a DTS instance.