Todos os produtos
Search
Central de documentação

Data Transmission Service:What can I do if data loss occurs in the destination database due to online DDL operations performed in a table merging task?

Última atualização: Sep 23, 2026

Executar operações de linguagem de definição de dados (DDL) online no banco de dados de source enquanto uma tarefa de mesclagem de tabelas está em andamento causa perda de dados no banco de dados de destino. Para evitar esse problema, exclua as operações DDL online da configuração da tarefa ou evite executá-las no banco de dados de source durante a execução da tarefa.

Como funciona

Uma tarefa de mesclagem de tabelas consolida tabelas de múltiplos bancos de dados de source e sincroniza ou migra os dados para uma única tabela de destino.

Por exemplo, se você configure uma tarefa para mesclar tabelas de dois bancos de dados ApsaraDB RDS for MySQL (Banco de Dados 1 e Banco de Dados 2) no banco de dados de destino, o DTS mapeia os dados da seguinte forma:

  • Tabela A1 (Banco de Dados 1) → Tabela A (destino)

  • Tabela A2 (Banco de Dados 2) → Tabela A (destino)

Se a Tabela A1 tiver 100 registros e a Tabela A2 tiver 200 registros, a Tabela A no banco de dados de destino deverá conter 300 registros após a mesclagem.

Por que as operações DDL online causam perda de dados

As operações DDL online funcionam criando uma tabela temporária, aplicando alterações de esquema nela e, em seguida, usando RENAME TABLE para substituir a tabela original pela temporária. A sequência de operações é:

  1. Crie uma tabela temporária:

    CREATE TABLE tmp_table_table LIKE table_name
  2. Altere o esquema da tabela temporária:

    ALTER TABLE tmp_table_table XXXX
  3. Copie os dados históricos para a tabela temporária:

    INSERT IGNORE INTO tmp_table_table (SELECT %s FROM table_name FORCE INDEX (%s) WHERE xxx
  4. Sincronize os dados incrementais via logs binários:

    UPDATA/INSERT/DELETE tmp_table_name
  5. Redirecione as cargas de trabalho para a tabela temporária:

    RENAME TABLE table_name to old_tmp_table_table, tmp_table_name to table_name

Após a conclusão dessas operações, os dados da Tabela A1 do Banco de Dados 1 sobrescrevem os dados da Tabela A no banco de dados de destino. Com isso, os dados da Tabela A2 do Banco de Dados 2 são perdidos.

Nota

Para obter mais informações sobre operações DDL online, consulte

Perform lock-free DDL operations

.

Solução

Para evitar a perda de dados, adote uma das seguintes abordagens:

Abordagem

Descrição

Exclua DDL online da tarefa

Ao configure a tarefa de sincronização de dados, não selecione a opção de sincronizar operações DDL online.

Evitar DDL online nos bancos de dados de source

Não execute operações DDL online em nenhum banco de dados de source enquanto a tarefa de mesclagem de tabelas estiver em andamento.