Todos os produtos
Search
Central de documentação

Data Transmission Service:Perguntas frequentes sobre sincronização de dados

Última atualização: Oct 15, 2026
  • P: Quais instâncias de banco de dados o DTS suporta para sincronização?

    R: O DTS oferece suporte à sincronização de dados entre diversas fontes, incluindo sistemas de gerenciamento de banco de dados relacional (RDBMSs), bancos de dados NoSQL e bancos de dados de processamento analítico online (OLAP). Para consultar as instâncias de banco de dados compatíveis, visualize Data synchronization scenarios.

  • P: Como funciona a sincronização de dados?

    R: Para obter detalhes sobre o funcionamento da sincronização de dados, consulte Product architecture and how features work.

  • P: Como a latência de sincronização é calculada?

    R: A latência de sincronização corresponde à diferença entre o timestamp dos dados mais recentes sincronizados no banco de dados de destino e o timestamp atual do banco de dados source. A unidade de medida é milissegundos. Em condições normais, essa latência permanece abaixo de 1.000 milissegundos.

  • P: É possível modificar os objetos de sincronização em uma tarefa de sincronização de dados?

    R: Sim. Para saber como alterar os objetos de sincronização, consulte Add a synchronization object e Remove a synchronization object.

  • P: Posso adicionar novas tabelas a uma tarefa de sincronização de dados?

    R: Sim. Para aprender a incluir novas tabelas, visualize Add a synchronization object.

  • P: Como modifico os objetos de sincronização, como tabelas e colunas, em uma tarefa em execução?

    R: Após a conclusão da fase de sincronização total de dados e o início da fase de sincronização incremental, você pode alterar os objetos de sincronização. Para instruções detalhadas, consulte Add a synchronization object e Remove a synchronization object.

  • P: Se eu pausar uma tarefa de sincronização e reiniciá-la após algum tempo, ocorrerá inconsistência de dados?

    R: Caso o banco de dados source sofra alterações enquanto a tarefa estiver pausada, pode haver inconsistência entre os bancos de dados source e de destino. No entanto, após reiniciar a tarefa e concluir a sincronização dos dados incrementais para o destino, os dados voltarão a ficar consistentes com o source.

  • P: Se eu excluir dados do banco de dados source em uma tarefa de sincronização incremental, os dados correspondentes no destino também serão excluídos?

    R: Se a opção delete não estiver selecionada nas operações DML a serem sincronizadas na tarefa incremental, os dados no banco de dados de destino não serão removidos. Caso contrário, os dados sincronizados no destino serão excluídos.

  • P: Na sincronização Redis para Redis, os dados na instância Redis de destino são sobrescritos?

    R: Dados com a mesma chave são sobrescritos. Durante a etapa de pré-verificação, o DTS verifica o destino. Se o destino não estiver vazio, um erro será reportado.

  • P: Uma tarefa de sincronização permite filtrar colunas ou dados específicos?

    R: Sim. Utilize o recurso de mapeamento para excluir colunas desnecessárias da sincronização e defina condições SQL WHERE para filtrar os dados a serem sincronizados. Para mais informações, consulte Synchronize or migrate specific columns e Filter task data with an SQL condition.

  • P: É possível converter uma tarefa de sincronização em uma tarefa de migração?

    R: Não. Tarefas de tipos diferentes não podem ser convertidas entre si.

  • P: Posso sincronizar apenas os dados sem sincronizar o schema?

    R: Sim. Ao configurar a tarefa de sincronização, não selecione Schema Synchronization.

  • P: Quais são as possíveis causas de inconsistência de dados entre o source e o destino de uma instância de sincronização de dados?

    As principais causas de inconsistência de dados incluem:

    1. O destino não foi limpo durante a configuração da tarefa e já continha dados existentes.

    2. Apenas o módulo de sincronização incremental foi selecionado na configuração, sem incluir o módulo de sincronização total.

    3. Somente o módulo de sincronização total foi selecionado, sem a sincronização incremental, e os dados do source foram alterados após o término da tarefa.

    4. Escrita de dados no destino por outras fontes além da tarefa DTS.

    5. Atraso na escrita incremental, resultando em dados incrementais ainda não gravados totalmente no destino.

  • P: Posso alterar o nome do banco de dados source no banco de dados de destino em uma tarefa de sincronização?

    R: Sim. Para saber como renomear o banco de dados source no destino, consulte Rename synchronized objects in the destination instance.

  • P: O DTS suporta sincronização em tempo real de operações DML ou DDL?

    Sim. Para sincronização de dados entre bancos de dados relacionais, as operações DML suportadas são INSERT, UPDATE e DELETE, enquanto as operações DDL suportadas incluem CREATE, DROP, ALTER, RENAME e TRUNCATE.

    Nota

    As operações DML e DDL suportadas variam conforme o cenário. Em Data synchronization scenarios, selecione o link de sincronização correspondente ao seu cenário de negócios e verifique as operações DML e DDL suportadas no guia de configuração específico desse link.

  • P: Uma instância somente leitura pode ser usada como instância source de uma tarefa de sincronização?

    Por padrão, uma tarefa de sincronização inclui a sincronização incremental de dados. Portanto, aplicam-se os dois cenários seguintes:

    • Se a instância for somente leitura e registrar logs de transação (por exemplo, ApsaraDB RDS for MySQL 5.7 ou 8.0), ela poderá atuar como instância source.

    • Caso a instância seja somente leitura e não registre logs de transação (como ApsaraDB RDS for MySQL 5.6), ela não poderá servir como instância source.

  • P: O DTS suporta sincronização de dados para bancos de dados e tabelas fragmentados (sharded)?

    R: Sim. Por exemplo, é possível sincronizar bancos de dados e tabelas fragmentados do MySQL ou PolarDB for MySQL para AnalyticDB for MySQL a fim de consolidar múltiplas tabelas.

  • P: Por que o volume de dados na instância de destino fica menor que no source após o fim da sincronização?

    R: Se houver filtragem de dados durante a sincronização ou se as tabelas da instância source apresentarem muita fragmentação, o volume de dados no destino poderá ser inferior ao do source após a conclusão da migração.

  • P: Tarefas de sincronização de dados entre contas diferentes suportam sincronização bidirecional?

    R: Atualmente, tarefas de sincronização bidirecional entre contas distintas são suportadas apenas entre instâncias ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instâncias Tair (Enterprise Edition), entre instâncias ApsaraDB for MongoDB (arquitetura replica set) e entre instâncias ApsaraDB for MongoDB (arquitetura sharded cluster).

  • P: O DTS suporta tarefas de sincronização bidirecional transfronteiriças?

    R: Não.

  • P: Por que um registro adicionado a um banco de dados em uma tarefa de sincronização bidirecional não aparece no outro banco?

    R: A tarefa reversa pode não ter sido configurada.

  • P: Por que o progresso de uma tarefa de sincronização incremental nunca atinge 100%?

    R: A sincronização incremental do DTS replica continuamente as alterações do source para o destino em tempo real e não termina automaticamente. Por isso, não existe um estado de conclusão de 100%. Caso não precise mais da sincronização em tempo real, encerre a tarefa no console DTS.

  • P: Por que a tarefa de sincronização incremental falha ao sincronizar dados?

    R: Se apenas a sincronização incremental estiver configurada na instância DTS, somente os dados gerados após o início da tarefa serão sincronizados. Os dados anteriores ao início da tarefa não são transferidos para o banco de dados de destino. Para garantir a consistência dos dados, recomendamos selecionar Incremental Data Synchronization, Schema Synchronization e Full Data Synchronization ao configurar a tarefa.

  • P: A sincronização completa de dados de um banco de dados RDS afeta o desempenho do banco source?

    Sim. O desempenho de consultas do banco de dados source é impactado. Para reduzir o impacto da tarefa DTS no banco de dados source, utilize um dos três métodos abaixo:

    1. Atualize as especificações da instância do banco de dados source.

    2. Pause a tarefa DTS e reinicie-a quando a carga no banco de dados source estiver baixa.

    3. Reduza a taxa de transferência da tarefa DTS. Adjust the full migration rate.

  • P: O DTS suporta sincronização do MySQL para o ClickHouse?

    R: O recurso de sincronização de dados de um banco de dados MySQL para um cluster ClickHouse no DTS foi descontinuado. Usuários que já adquiriram esse recurso não são afetados. Para novas aquisições, consulte a documentação do product ApsaraDB for ClickHouse e visualize o tópico Sincronizar dados do ApsaraDB RDS for MySQL para configurar a sincronização do MySQL para o ClickHouse.

  • P: Por que nenhuma latência é exibida para uma instância de sincronização cujo banco source é o PolarDB-X 1.0?

    R: Instâncias com PolarDB-X 1.0 como source são tarefas distribuídas, mas as métricas monitoradas pelo DTS existem apenas nas subtarefas. Por esse motivo, nenhuma informação de latência é exibida para instâncias com source PolarDB-X 1.0. Para visualizar a latência, clique em no ID da instância e acesse Task Management > Subtask Details da instância.

  • P: Por que uma tarefa de mesclagem de várias tabelas reporta o erro DTS-071001?

    R: Isso pode ocorrer se uma operação DDL online tiver sido executada no banco de dados source durante a execução da tarefa de mesclagem, alterando o schema da tabela source sem que as mudanças correspondentes fossem aplicadas manualmente no banco de dados de destino.

  • P: O que fazer se a adição de lista de permissões falhar ao configurar uma tarefa no console anterior?

    R: Configure a tarefa no novo console.

  • P: O que fazer se uma tarefa de sincronização de dados do DTS falhar devido a uma operação DDL executada no banco de dados source?

    R: Execute manualmente a operação DDL no destino com base na operação realizada no source e reinicie a tarefa. Durante a sincronização de dados, evite usar ferramentas como pt-online-schema-change para realizar alterações DDL online nos objetos de sincronização do banco source, pois isso causa falhas na sincronização. Se nenhum dado externo ao DTS for escrito no banco de destino, utilize o Data Management (DMS) para executar alterações DDL online ou modifique os objetos de sincronização para remover a tabela afetada pela DDL. Para o procedimento de remoção da tabela, consulte Remove a synchronization object.

  • P: O que fazer se uma tarefa de sincronização de dados do DTS falhar devido a uma operação DDL executada no banco de dados de destino?

    Se um banco de dados ou tabela no destino for excluído durante a sincronização incremental pelo DTS e a tarefa apresentar anomalia, utilize uma das duas soluções a seguir para recuperar a tarefa:

    • Solução 1: Reconfigure a tarefa sem selecionar o banco de dados ou tabela que causou a falha como objeto de sincronização.

    • Solução 2: Modifique os objetos de sincronização para remover o banco de dados ou tabela que provocou a falha. Para o procedimento, consulte Remove a synchronization object.

  • P: É possível recuperar uma tarefa de sincronização após sua liberação? A consistência dos dados pode ser garantida reconfigurando a tarefa?

    R: Uma tarefa de sincronização liberada não pode ser recuperada. Ao reconfigurar a tarefa, se você não selecionar Full Data Synchronization, os dados adicionados entre o momento da liberação e o início da nova tarefa não serão sincronizados para o destino, comprometendo a consistência dos dados. Se seu negócio exigir precisão rigorosa, exclua os dados do banco de destino, reconfigure a tarefa de sincronização e selecione tanto Schema Synchronization quanto Full Data Synchronization em Task Stages (Incremental Data Synchronization vem selecionada por padrão).

  • P: O que fazer se uma tarefa de sincronização total do DTS não apresentar progresso por muito tempo?

    R: Tabelas sem chaves primárias tornam a sincronização total extremamente lenta. Recomendamos adicionar chaves primárias às tabelas do banco de dados source antes de sincronizá-las.

  • P: Ao sincronizar tabelas com o mesmo nome, é possível transferir dados da tabela source apenas se eles não existirem na tabela de destino?

    R: Sim. Durante a configuração da tarefa, defina Processing Mode of Conflicting Tables como Ignore Errors and Proceed. Se os schemas forem consistentes, durante a sincronização total, quando o destino encontrar um registro com valor de chave primária idêntico ao do source, o registro do source não será sincronizado.

  • P: Como configuro uma tarefa de sincronização entre contas diferentes?

    SHOW VARIABLES LIKE 'max_allowed_packet';

    R: Primeiro determine Scenarios for cross-account tasks, depois utilize a conta Alibaba Cloud proprietária da instância de banco de dados para Configure RAM authorization for cross-account DTS tasks e, então, Configure a cross-account DTS task.

  • P: O que fazer se não conseguir selecionar uma instância DMS LogicDB?

    R: Verifique se selecionou corretamente a região à qual a instância pertence. Se ainda assim não for possível selecionar a instância, pode haver apenas uma disponível. Prossiga com a configuração dos demais parâmetros.

  • P: Uma tarefa de sincronização com SQL Server como source suporta a sincronização de funções?

    R: Não. Quando tabelas são selecionadas como granularidade dos objetos de sincronização, outros objetos como views, triggers e stored procedures não são sincronizados para o banco de dados de destino.

  • P: O que fazer se uma tarefa de sincronização de dados reportar um erro?

    R: Com base na mensagem de erro, consulte a solução em Overview of Common Errors.

  • P: Como ativo a mesclagem de hotspots em uma tarefa de sincronização?

    R: Consulte Modify parameter values para alterar o valor de trans.hot.merge.enable para true.

  • P: Como realizo a sincronização quando o banco de dados source contém triggers?

    R: Quando um banco de dados inteiro é selecionado como objeto de sincronização e um TRIGGER nesse banco atualiza uma tabela interna, pode ocorrer inconsistência de dados entre o source e o destino. Para o procedimento de sincronização, consulte Configure tasks for source databases with triggers.

  • P: O DTS suporta a sincronização do banco de dados sys e de bancos de dados do sistema?

    R: Não.

  • P: O DTS suporta a sincronização dos bancos de dados admin e local do MongoDB?

    R: Não. O DTS não oferece suporte aos bancos de dados admin e local do MongoDB como source ou destino.

  • P: Quando posso configurar a tarefa reversa de uma sincronização bidirecional?

    R: A tarefa reversa só pode ser configurada após a tarefa incremental direta não apresentar mais latência.

  • P: Quando o PolarDB-X 1.0 é o source de uma tarefa de sincronização, ele suporta dimensionamento de nós?

    R: Não. Se o PolarDB-X 1.0 source passar por scale-up ou scale-down de nós, será necessário reconfigurar a tarefa.

  • P: O DTS garante a unicidade dos dados sincronizados para o Kafka?

    R: Não. Como os dados são anexados ao Kafka, podem ocorrer duplicatas quando a tarefa DTS é reiniciada ou quando os logs do source são extraídos múltiplas vezes. O DTS garante a idempotência dos dados: eles são organizados em ordem, e o valor mais recente dos dados duplicados é posicionado ao final.

  • P: A sincronização de dados do DTS suporta sincronização do ApsaraDB RDS for MySQL para outros destinos?

    R: Sim. Para o procedimento de configuração, consulte Synchronize data from ApsaraDB RDS for MySQL to AnalyticDB for MySQL 3.0.

  • P: Por que a sincronização total não aparece em uma tarefa de sincronização entre instâncias Redis?

    R: A sincronização entre instâncias Redis suporta tanto a sincronização total quanto a incremental de dados. As duas fases são combinadas e exibidas como Incremental Data Synchronization.

  • P: Posso pular a sincronização total?

    R: Sim. Após pular a sincronização total, a sincronização incremental continua, mas erros podem ocorrer. Recomendamos não pular a sincronização total.

  • P: O DTS suporta sincronização automática agendada?

    R: No momento, o DTS não suporta inícios agendados para tarefas de sincronização de dados.

  • P: O espaço fragmentado nas tabelas também é sincronizado durante a sincronização?

    R: Não.

  • P: O que preciso saber ao sincronizar dados do MySQL 8.0 para o MySQL 5.6?

    R: Crie os bancos de dados no MySQL 5.6 antes de iniciar a sincronização. Recomendamos que o source e o destino executem a mesma versão, ou que a sincronização ocorra de uma versão inferior para uma superior, garantindo compatibilidade. Sincronizar de uma versão superior para uma inferior pode causar problemas de compatibilidade no banco de dados.

  • P: Posso sincronizar contas do banco de dados source para o banco de dados de destino?

    R: Atualmente, apenas tarefas de sincronização entre instâncias ApsaraDB RDS for MySQL suportam sincronização de contas. Outras tarefas de sincronização não oferecem esse recurso.

  • P: Posso configurar tarefas de sincronização bidirecional entre contas diferentes?

    Atualmente, tarefas de sincronização bidirecional entre contas distintas são suportadas apenas entre instâncias ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instâncias Tair (Enterprise Edition), entre instâncias ApsaraDB for MongoDB (arquitetura replica set) e entre instâncias ApsaraDB for MongoDB (arquitetura sharded cluster).

    Nota

    Para tarefas que não possuem a opção de configuração Replicate Data Across Alibaba Cloud Accounts, tente utilizar a Cloud Enterprise Network (CEN) para implementar tarefas de sincronização bidirecional entre contas. Para mais informações, consulte Access databases across accounts or regions.

  • P: Como configuro parâmetros quando o ApsaraMQ for Kafka é o destino?

    R: Configure os parâmetros conforme seu cenário real. Para métodos de configuração de alguns parâmetros especiais, consulte Configure Kafka instance parameters.

  • P: Quantas instâncias de sincronização de dados posso testar gratuitamente?

    R: Você pode testar uma instância de sincronização gratuitamente por três meses. Para mais informações, consulte Teste Gratuito da Alibaba Cloud.

  • P: Como lidar com o erro "ERR invalid DB index" ao usar o DTS para sincronizar ou migrar dados do Redis?

    Causa: O erro ERR invalid DB index ocorre quando o banco de dados de destino executa a operação SELECT DB. Geralmente, isso é causado por um número insuficiente de databases no banco de dados de destino. Se o destino utilizar um proxy, verifique se o proxy pode remover o limite de databases.

    Solução: Modifique a configuração de databases do banco de dados de destino. Recomendamos aumentar o valor para corresponder ao do banco de dados source e, em seguida, reiniciar a tarefa DTS. O comando para consultar a configuração de databases do banco de dados de destino é:

    SHOW VARIABLES LIKE 'max_allowed_packet';
  • P: Como lidar com o erro "IDENTIFIER CLUSTERED" ao sincronizar ou migrar dados do SQL Server para o AnalyticDB for PostgreSQL?

    R:

    Causa: Ao sincronizar ou migrar dados do SQL Server para o AnalyticDB for PostgreSQL, a tarefa não consegue prosseguir porque o comando CREATE CLUSTERED INDEX não é suportado.

    Solução: Após confirmar que não há outros comandos DDL no período de latência, Modify instance parameters defina sink.ignore.failed.ddl como true (para filtrar a execução de todas as instruções DDL). Depois que o checkpoint de sincronização ou migração incremental avançar, reverta sink.ignore.failed.ddl para false.

  • P: Em uma tarefa de sincronização ou migração do Redis, estender o tempo de expiração das chaves no banco de dados de destino tem efeito prático?

    R:

    Para evitar que as chaves expirem durante a sincronização total de dados, você pode estender o tempo de expiração das chaves no banco de dados de destino dentro da tarefa. Para tarefas DTS que incluem uma parte de sincronização ou migração incremental, se as chaves no banco source expirarem e forem excluídas, as chaves correspondentes no destino também serão liberadas.

  • P: Após estender o tempo de expiração das chaves no destino, se uma chave no source expirar, a chave correspondente no destino é liberada imediatamente?

    R:

    As chaves no banco de dados de destino não são necessariamente liberadas imediatamente ao expirar. Uma chave no destino é liberada imediatamente apenas quando a chave correspondente no source expira e é limpa.

    Por exemplo, se uma chave no source estiver definida para expirar em 5 segundos e o tempo de expiração da chave correspondente no destino for estendido para 30 segundos, quando a chave do source expirar e for limpa automaticamente após 5 segundos, a chave do destino será liberada imediatamente. Quando uma chave no source expira e é limpa automaticamente, o sistema anexa uma operação de exclusão ao arquivo AOF. Essa solicitação é sincronizada e executada no banco de dados de destino.

  • P: Como lidar com o erro "column_name[xxx], the length of input string is too long than vec schema" ao usar o DTS para sincronizar dados para o SelectDB?

    • Causa: O tamanho incremental da coluna xxx no source excedeu o limite de comprimento do tipo da coluna xxx no destino.

    • Solução: Se a coluna for do tipo STRING, resolva o problema aumentando o parâmetro string_type_length_soft_limit_bytes no console SelectDB. Defina-o com um valor maior que o actual length (7.241.898).

  • P: Como lidar com o erro "column(xxx) values is null while columns is not nullable." ao usar o DTS para sincronizar dados para o SelectDB?

    • Causa: A coluna xxx no destino é NOT NULL, mas valores NULL estão sendo gravados nela.

    • Nota

      Cenário comum: O source contém dados de data inválidos, como 0000-0000-0000. O DTS converte automaticamente esses dados para NULL, o que dispara o erro.

    • Solução:

      • Altere o tipo da coluna no destino para permitir valores NULL.

      • Modifique os objetos de sincronização: remova a tabela problemática, corrija os dados no source e exclua a tabela correspondente no destino. Modifique os objetos de sincronização novamente para readicionar a tabela e execute a sincronização total e incremental.

  • P: Como corrijo um mapeamento de nome de tabela de destino configurado incorretamente?

    R: Na página de configuração da tarefa DTS, na seção Selected Objects, expanda o banco de dados de destino, localize a tabela com o mapeamento incorreto e clique em no botão Edit à direita. Na caixa de diálogo exibida, altere o nome da tabela de destino para o nome correto e salve a alteração.

  • P: Como faço backfill de dados históricos após adicionar uma nova coluna?

    O DTS não realiza backfill automático de dados históricos para colunas recém-adicionadas. Essa regra aplica-se a todos os tipos de banco de dados de destino, não apenas ao SelectDB. Para realizar o backfill de dados históricos, execute as etapas a seguir:

    1. Adicione manualmente a nova coluna à tabela de destino.

    2. No console DTS, modifique os objetos de sincronização e remova a tabela da lista de objetos.

    3. Execute TRUNCATE para limpar os dados da tabela de destino (caso precise garantir a consistência dos dados).

    4. Readicione a tabela aos objetos de sincronização para disparar a sincronização de dados totais e incrementais, migrando os dados históricos, incluindo a nova coluna, para o banco de dados de destino.

  • P: Quando uma tarefa de sincronização incremental do DTS reporta erro devido a schemas de tabela inconsistentes, posso ignorar operações DML em massa?

    O DTS não suporta ignorar operações DML em massa diretamente. Utilize uma das duas soluções abaixo:

    • Solução 1 (recomendada): Adicione as instruções DDL ausentes para tornar os schemas das tabelas do source e do destino consistentes e reinicie a tarefa. Esta solução não causa perda de dados.

    • Solução 2: Modifique o checkpoint de sincronização (por exemplo, ignore um intervalo de tempo de um segundo ou um minuto) para pular os registros incrementais que causaram o erro.

    Aviso

    A Solução 2 ignora todas as operações DML (incluindo INSERT, UPDATE e DELETE) nesse intervalo de tempo, o que pode causar perda de dados ou inconsistência. Avalie cuidadosamente o impacto antes de usar esta solução.

  • P: O que é a opção "Migrate Events" na configuração do DTS? Como escolher um valor para ela?

    A opção Migrate Events controla se os objetos de evento no banco de dados source devem ser sincronizados para o banco de dados de destino.

    • No (padrão): Os objetos de evento no banco de dados source não são sincronizados. Se o banco de dados de destino não precisar executar a lógica de eventos agendados, mantenha o valor padrão.

    • Yes: As definições de eventos e a lógica de gatilho no banco de dados source são sincronizadas para o banco de dados de destino. Selecione esta opção se precisar reproduzir totalmente o agendamento de eventos do source no destino.

  • P: Como lidar com inconsistência de dados ou dessincronização de schema ao modificar os objetos de sincronização?

    R: Quando qualquer um dos problemas abaixo ocorrer, resolva-os removendo e readicionando os objetos de sincronização:

    • Dados no banco de dados de destino inconsistentes com os do banco source.

    • Alterações DDL no source (como adicionar uma coluna ou alterar seu tipo) não sincronizadas para o destino.

    • Tabelas com chaves únicas contendo valores NULL sincronizadas anormalmente.

    • Erros de sintaxe SQL (como o erro near 'null').

    Procedimento:

    1. Modifique os objetos de sincronização da tarefa DTS e remova a tabela problemática.

    2. No destino, exclua (DROP TABLE) ou esvazie (TRUNCATE TABLE) a tabela problemática correspondente.

    3. Readicione a tabela aos objetos de sincronização da tarefa DTS e inicie a pré-verificação. O DTS reinicializará o schema e realizará a sincronização total e incremental na tabela.

  • P: Qual o impacto de modificar dados no banco de dados de destino enquanto uma tarefa de sincronização ou migração de dados está em execução?

    • Modificar dados no banco de destino pode causar falha na tarefa DTS. Durante a migração ou sincronização, executar operações nos objetos que estão sendo migrados ou sincronizados no destino pode gerar conflitos de chave primária ou falta de registros de atualização, levando à falha da tarefa. Contudo, operações que não interrompem a tarefa DTS são permitidas. Por exemplo, criar uma tabela na instância de destino e gravar dados nela não afeta a tarefa DTS, desde que essa tabela não faça parte dos objetos de migração ou sincronização.

    • Como o DTS lê informações do banco de dados da instância source e migra ou sincroniza seus dados totais, schema e dados incrementais para a instância de destino, modificações feitas no banco de destino durante a tarefa podem ser sobrescritas pelos dados migrados ou sincronizados do source.

    P: Ao usar o DTS para sincronização ou migração de dados, os dados existentes no destino são sobrescritos?

    R: Tomando a sincronização de dados como exemplo, o comportamento padrão e os parâmetros relacionados do DTS são:

    Comportamento padrão do DTS: Se ocorrer conflito de chave primária ou única durante a execução da tarefa de sincronização:

    • Se os schemas das tabelas forem iguais e um registro no banco de destino tiver o mesmo valor de chave primária ou única que um registro no source:

      • Durante a sincronização total, o DTS mantém o registro no cluster de destino. O registro correspondente do source não é sincronizado.

      • Durante a sincronização incremental, o registro do source sobrescreve o registro no banco de destino.

    • Se os schemas das tabelas forem diferentes, a sincronização inicial de dados pode falhar. Isso pode resultar na sincronização parcial de colunas ou em uma falha completa. Proceda com cautela.

    Parâmetros relacionados: Ao configurar uma tarefa, utilize o parâmetro Processing Mode of Conflicting Tables para gerenciar como os dados relacionados são processados.

    • Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de destino. Se não existir, a pré-verificação é aprovada. Se existir, a pré-verificação falha e a tarefa de sincronização não inicia.

      Nota

      Se não for possível excluir ou renomear a tabela com o mesmo nome no destino, mapeie-a para um nome diferente. Para mais informações, consulte Map table and column names.

    • Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas duplicados no banco de destino.

      Aviso

      Selecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seu negócio em risco. Por exemplo:

      • Se os schemas das tabelas forem iguais e um registro no banco de destino tiver o mesmo valor de chave primária ou única que um registro no source:

        • Durante a sincronização total, o DTS mantém o registro no cluster de destino. O registro correspondente do source não é sincronizado.

        • Durante a sincronização incremental, o registro do source sobrescreve o registro no banco de destino.

      • Se os schemas das tabelas forem diferentes, a sincronização inicial de dados pode falhar. Isso pode resultar na sincronização parcial de colunas ou em uma falha completa. Proceda com cautela.

    Recomendação: Para garantir a consistência dos dados, recomendamos excluir a tabela de destino antes de configurar a tarefa DTS, caso seu negócio permita.

    P: Um erro de sincronização incremental indica que uma tabela temporária está ausente no banco de destino ou que ocorreu um conflito SELECT INTO. Como resolver?

    • Causa:

      Esse problema não é causado realmente pela ausência de uma tabela temporária no destino. Na verdade, após ativar o Change Data Capture (CDC) no banco source, as triggers criadas pelo DTS interceptam a criação implícita de tabela realizada pelo SELECT INTO, causando conflitos durante a sincronização de dados.

    • Solução:

      1. Verifique se o arquivo de log de transações no source existe e está íntegro.

      2. Desative o recurso CDC no banco de dados source.

      3. Faça login no console DTS, reconfigure a tarefa de sincronização, selecione Parse source database logs como método de sincronização incremental e reinicie a tarefa.

    P: A tarefa de sincronização foi interrompida por várias horas e suspeito que exista um bloqueio MDL no destino. Como resolver?

    • Causa:

      Um bloqueio de metadados (MDL lock) no destino, causado por uma operação DDL de longa duração (como adicionar uma coluna a uma tabela grande ou reconstruir um índice), está bloqueando as gravações incrementais do DTS, interrompendo o link de sincronização por um longo período.

    • Solução:

      1. Acesse o console ApsaraDB RDS, vá até a instância do banco de dados de destino e execute SHOW FULL PROCESSLIST para localizar a sessão anômala que detém o bloqueio MDL. Em seguida, encerre a sessão.

      2. Acesse o console DTS e modifique os objetos de sincronização para remover as tabelas afetadas pelo bloqueio MDL do escopo de sincronização.

      3. Exclua a tabela no banco de dados de destino (antes dessa operação, certifique-se de que os dados foram submetidos a backup ou podem ser limpos).

      4. Após a tarefa de sincronização DTS voltar ao normal e a latência cair para zero, modifique os objetos de sincronização novamente para readicionar a tabela ao escopo e concluir a remigração.

    P: Um erro de sincronização incremental indica que o pacote é muito grande ou que o valor max_allowed_packet no destino é insuficiente. Como resolver?

    • Causa:

      O source contém uma linha com grande volume de dados que excede o limite do parâmetro max_allowed_packet no destino durante a sincronização incremental, causando o erro.

    • Solução:

      1. Acesse o banco de dados source e consulte o valor atual do parâmetro max_allowed_packet:

        SHOW VARIABLES LIKE 'max_allowed_packet';

        Anote o valor (por exemplo, 1073741824, que equivale a 1 GB).

      2. Acesse o console ApsaraDB RDS (ou o console PolarDB se o destino for PolarDB for MySQL). Na página Parameters da instância do banco de dados de destino, defina o parâmetro max_allowed_packet com um valor não inferior ao do source.

      3. Após concluir a modificação do parâmetro, reinicie a tarefa de sincronização no console DTS e verifique se a sincronização voltou ao normal.

    P: Posso ajustar a taxa de transferência após uma instância de sincronização ou migração estar em execução?

    R: Sim. Para mais informações, consulte Enable throttling for data migration.

    P: Os dados no banco de dados source são retidos após o término da sincronização ou migração DTS?

    R: Sim. O DTS não exclui dados do banco de dados source. Caso não precise manter os dados no source, exclua-os manualmente.

    P: Como uso a API para configurar o recurso ETL em uma tarefa de sincronização ou migração?

    R: Configure-o no parâmetro Reserve da API utilizando parâmetros comuns como etlOperatorCtl e etlOperatorSetting. Para mais informações, consulte ConfigureDtsJob e Reserve parameter reference.

    P: Ao sincronizar ou migrar dados, o banco source e o banco de destino precisam estar conectados via rede?

    R: Não.

    P: Ao sincronizar ou migrar dados, preciso criar tabelas manualmente no banco de dados de destino?

    R: Para DTS instances that support schema tasks (sincronização de schema ou migração de schema), se você configurou uma tarefa de schema (Synchronization Types com Schema Synchronization selecionado, ou Migration Types com Schema Migration selecionado), não é necessário criar tabelas manualmente no banco de destino.

    P: O DTS suporta amostragem de sincronização ou migração de dados por intervalo de tempo?

    R: Não.

    P: Dados podem ser gravados no banco source e no banco de destino simultaneamente enquanto uma tarefa de sincronização ou migração está em execução?

    R: Sim. No entanto, enquanto a instância DTS estiver em execução, se fontes de dados externas ao DTS gravarem no banco de destino, poderão ocorrer exceções nos dados do destino ou na própria instância DTS.

    P: O DTS suporta migração ou sincronização de dados entre contas diferentes?

    R: Sim. Para informações sobre como configurar, consulte Configure a cross-account DTS task.