A sincronização ou migração de um banco de dados pode causar inconsistências entre a origem e o destino se o banco de dados de origem contiver um trigger que atualize tabelas internas. Este tópico descreve como configurar a tarefa nesse cenário para garantir a consistência dos dados.
Contexto
Se o banco de dados de origem contiver triggers e o cenário atender a uma das condições da tabela abaixo, consulte a documentação vinculada. Caso contrário, siga o procedimento descrito neste tópico.
|
Banco de dados de origem |
Banco de dados de destino |
Descrição |
Referências |
|
Todos os tipos compatíveis |
PostgreSQL, PolarDB for PostgreSQL, PolarDB for PostgreSQL (Compatible with Oracle) |
|
|
|
MySQL, PolarDB for MySQL, ApsaraDB RDS for MariaDB |
MySQL, PolarDB for MySQL, ApsaraDB RDS for MariaDB |
Configure manualmente os triggers para sincronização ou migração. |
|
|
SQL Server |
SQL Server |
Fluxo de trabalho
-
Crie uma tarefa de migração de dados para migrar o esquema do banco de dados de origem para o banco de dados de destino.
Para mais informações, consulte Visão geral dos cenários de migração de dados.
ImportanteEm Migration Types, selecione apenas Schema Migration.
Em Source Objects, selecione todo o banco de dados ou esquema.
Faça login no banco de dados de destino e exclua os triggers migrados do banco de dados de origem.
-
Crie uma tarefa de sincronização ou migração de dados do banco de dados de origem para o banco de dados de destino.
Para mais informações, consulte Visão geral dos cenários de sincronização de dados e Visão geral dos cenários de migração de dados.
ImportantePara tarefas de sincronização de dados, Synchronization Types vem selecionado por padrão em Incremental Data Synchronization. Selecione também Full Data Synchronization. Não selecione Schema Synchronization.
Para tarefas de migração de dados, selecione Migration Types e Full Data Migration em Incremental Data Migration. Não selecione Schema Migration.
-
(Opcional) Após concluir a transferência de dados, encerre ou libere a instância.
Para mais informações, consulte Encerrar uma instância do DTS e Liberar instâncias do DTS.
NotaApós encerrar ou liberar a instância, adicione manualmente os triggers ao banco de dados de destino conforme as necessidades do negócio.
Exemplo
Este exemplo demonstra como configurar uma tarefa para sincronizar dados de um banco de dados MySQL autogerenciado para uma instância do ApsaraDB RDS for MySQL.
Preparação de dados
Este exemplo utiliza um banco de dados MySQL chamado triggertestdata que contém duas tabelas: parent e child. Um trigger na tabela parent insere uma cópia de cada nova linha na tabela child.
A tabela a seguir mostra os esquemas das tabelas e a definição do trigger.
|
Tipo de objeto |
Nome |
Instrução |
|
Tabela |
parent |
|
|
Tabela |
child |
|
|
trigger |
data_check |
|
Nesse cenário, uma operação INSERT na tabela parent durante a sincronização causaria inconsistência nos dados da tabela child entre a origem e o destino. Para evitar isso, exclua o trigger do banco de dados de destino após a migração inicial do esquema.
Procedimento
-
Crie uma tarefa de migração de dados para migrar o esquema do banco de dados de origem para o banco de dados de destino.
-
Acesse a página da lista de tarefas de migração da região de destino usando um dos 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 Migration.
No canto superior esquerdo da página, selecione a região onde está localizada a instância de migração.
Pelo console do DMS
NotaAs operações reais podem variar dependendo do modo e do layout do console do DMS. Para mais informações, consulte Console do modo simples e Personalizar o layout e o estilo do console do DMS.
Faça login no console do Data Management (DMS).
Na barra de menus superior, escolha .
À direita de Data Migration Tasks, selecione a região onde está localizada a instância de migração.
Clique em Create Task para acessar a página de configuração da tarefa.
-
Configure as definições de Source Database e Destination Database e clique em Test Connectivity and Proceed na parte inferior da página.
Para descrições de parâmetros e mais informações, consulte Migrar dados de um banco de dados MySQL autogerenciado para uma instância do ApsaraDB RDS for MySQL.
Em Migration Types, selecione Schema Migration e selecione o banco de dados ou esquema a ser migrado.
Conclua as etapas restantes de configuração conforme as necessidades do negócio.
-
-
A migração de esquema também migra os triggers. Após a conclusão da tarefa, faça login no banco de dados de destino e exclua esses triggers executando o seguinte comando:
drop trigger <trigger_name>;Exemplo:
drop trigger data_check; -
Crie uma tarefa de sincronização de dados para sincronizar dados do banco de dados de origem para o banco de dados de destino.
No painel de navegação à esquerda, clique em Data Synchronization.
-
Configure as definições de Source Database e Destination Database e clique em Test Connectivity and Proceed na parte inferior da página.
Para descrições de parâmetros e mais informações, consulte Sincronizar dados de um banco de dados MySQL autogerenciado para uma instância do ApsaraDB RDS for MySQL.
NotaUse os mesmos bancos de dados de origem e de destino configurados na Etapa 1.
-
Em Synchronization Types, selecione manualmente Full Data Synchronization.
NotaCertifique-se de que os objetos de sincronização sejam os mesmos objetos de migração configurados na Etapa 1.
Synchronization Types vem selecionado por padrão em Incremental Data Synchronization. Não selecione Schema Synchronization.
Conclua as etapas restantes de configuração conforme as necessidades do negócio.
Testar a consistência dos dados
-
Faça login no banco de dados de origem e insira uma linha na tabela
parent.insert into parent values(1,'testname');O trigger no banco de dados de origem insere então a mesma linha na tabela filha de origem.
-
Faça login nos bancos de dados de origem e de destino. Consulte a tabela
childem ambos os bancos de dados para verificar a consistência dos dados.-
Resultados da consulta no banco de dados de origem
+--------------+------------+----------+ | sys_child_id | user_vs_id | name | +--------------+------------+----------+ | 2001 | 1 | testname | +--------------+------------+----------+ -
Resultados da consulta no banco de dados de destino
+--------------+------------+----------+ | sys_child_id | user_vs_id | name | +--------------+------------+----------+ | 2001 | 1 | testname | +--------------+------------+----------+
Os resultados mostram que os dados estão consistentes.
-
Próximas etapas
-
Após concluir a sincronização de dados, encerre a tarefa de sincronização criada na Etapa 3.
Para mais informações, consulte Encerrar uma instância do DTS.
-
(Opcional) Visualize a instrução de criação do trigger.
Localize a tarefa de migração criada na Etapa 1.
Clique em ID da tarefa.
Na página Task Management, clique em Schema Migration2.
Na aba Task Details, clique em View Statements.
Faça login no banco de dados de destino e adicione o trigger manualmente.