Encontre soluções para problemas comuns do Data Transmission Service (DTS) por categoria ou consulte códigos de erro específicos em Erros comuns.
Categorias de problemas
Os problemas mais frequentes se enquadram nas seguintes categorias:
-
Para obter detalhes sobre a pré-verificação, consulte Itens de pré-verificação e métodos para corrigir falhas.
Problemas de faturamento
Como funciona o faturamento do DTS?
O DTS oferece os modelos de faturamento por assinatura e pagamento conforme o uso. Consulte Visão geral do faturamento.
Como visualizo as faturas do DTS?
Para visualizar as faturas do DTS, consulte Visualizar faturas.
Sou cobrado por instâncias pausadas?
Não há cobrança para instâncias de migração de dados pausadas.
Durante a suspensão de uma instância de sincronização de dados, as cobranças continuam independentemente da acessibilidade do banco de dados de origem ou de destino. Nesse período, o DTS apenas pausa a gravação de dados no banco de destino, mas continua consumindo recursos como CPU e memória para manter conexões persistentes com o banco de dados e extrair logs do banco de origem, permitindo que a instância seja retomada rapidamente após a reinicialização.
Por que a sincronização de dados é mais cara que a migração de dados?
A sincronização de dados oferece recursos mais avançados, como modificação online de objetos de sincronização e sincronização bidirecional entre bancos de dados MySQL. Além disso, utiliza transmissão por rede interna para garantir menor latência.
Quais são os impactos de pagamentos atrasados?
Consulte Vencimento ou pagamentos atrasados.
Como libero uma tarefa por assinatura antecipadamente?
Altere primeiro o método de faturamento para pagamento conforme o uso e, em seguida, libere a tarefa. Consulte Alternar entre métodos de faturamento.
Posso alterar o método de faturamento de uma tarefa de assinatura para pagamento conforme o uso?
Sim. Consulte Alternar entre métodos de faturamento.
Posso alterar o método de faturamento de uma tarefa de pagamento conforme o uso para assinatura?
Sim, essa alteração é possível para tarefas de sincronização de dados ou rastreamento de alterações. Consulte Alternar entre métodos de faturamento.
As tarefas de migração de dados suportam apenas o método de faturamento pagamento conforme o uso.
Por que minha tarefa do DTS começou a gerar cobranças repentinamente?
O período de teste gratuito da instância pode ter expirado. O DTS oferece testes gratuitos para tarefas cujo destino é um mecanismo de banco de dados desenvolvido pela Alibaba Cloud. Após o término do teste, aplica-se o faturamento padrão.
Por que ainda estou sendo cobrado por uma tarefa liberada?
As faturas do DTS no modelo pagamento conforme o uso são geradas diariamente. A cobrança referente ao dia em que você libera a tarefa ocorre porque o service do DTS foi utilizado naquele dia.
Como funciona o faturamento no modelo pagamento conforme o uso?
A cobrança de uma tarefa no modelo pagamento conforme o uso ocorre apenas enquanto a tarefa está em execução. Esse período inclui o tempo em que uma tarefa de Incremental Data Synchronization está pausada, mas não inclui o tempo em que uma tarefa de Incremental Data Migration está pausada. Consulte Método de faturamento.
O DTS cobra por tráfego?
Algumas tarefas do DTS geram cobranças de tráfego de rede pública e de dados, independentemente das regiões dos bancos de dados de origem e de destino. Uma tarefa de migração gera taxas de tráfego de rede pública se o Access Method do banco de dados de destino estiver definido como Public IP Address. Uma tarefa de validação completa no modo Full field validation by row sampling gera taxas de tráfego de dados com base no volume de dados validados. Consulte Itens faturáveis.
Problemas de desempenho e especificação
Quais são as diferenças entre os tipos de instância?
Consulte Especificações de link de migração de dados e Especificações de link de sincronização de dados.
Posso fazer upgrade do tipo de instância?
Sim. Consulte Fazer upgrade das especificações de link de uma instância.
Posso fazer downgrade do tipo de instância?
Atualmente, apenas instâncias de sincronização de dados podem sofrer downgrade. Consulte Fazer downgrade das especificações de uma instância de sincronização de dados.
Posso fazer downgrade do tipo de instância de uma tarefa do DTS?
É possível reduzir as especificações do link para tarefas elegíveis do DTS. Consulte Fazer downgrade das especificações de link de uma instância.
Posso fazer downgrade de uma tarefa do DTS para uma especificação inferior a média?
Não suportado.
Quanto tempo leva para sincronizar ou migrar dados?
Não é possível estimar com precisão o tempo necessário para uma tarefa do DTS. O desempenho depende de diversos fatores, como a carga nas instâncias do DTS, do banco de dados de origem e de destino, o volume de dados, a existência de tarefas incrementais e as condições da rede. Se você tiver altos requisitos de desempenho, selecione um tipo de instância com limite de desempenho superior. Consulte Especificações de link de migração de dados e Especificações de link de sincronização de dados.
Como visualizo as informações de desempenho de uma tarefa de migração ou sincronização de dados?
Consulte Visualizar o status e o desempenho de um link de migração incremental ou Visualizar o status e o desempenho de um link de sincronização.
Por que não encontro uma instância específica do DTS no console?
Causa possível: A instância do DTS especificada é uma instância por assinatura que expirou e foi liberada.
O grupo de recursos selecionado está incorreto. Recomendamos selecionar All Resources.
A região selecionada está incorreta. Certifique-se de ter selecionado a região onde reside a instância de destino.
O tipo de tarefa selecionado para a instância está incorreto. Verifique se a página atual da lista de tarefas corresponde ao tipo de tarefa da instância de destino. Por exemplo, instâncias de sincronização aparecem apenas na lista de Data Synchronization Tasks.
A instância foi liberada devido a vencimento ou pagamento atrasado. Após o vencimento ou atraso no pagamento de uma instância do DTS, a tarefa é interrompida. Se o pagamento não for efetuado em sete dias, o sistema libera e exclui a instância. Consulte Vencimento ou pagamentos atrasados.
Problemas de pré-verificação
Por que o item de verificação da política de evição do Redis gera um alerta?
Se a política de evição de dados (maxmemory-policy) do banco de dados de destino estiver definida com um valor diferente de noeviction, os dados de destino poderão ficar inconsistentes em relação à origem. Consulte Introdução às políticas de evição de dados do Redis.
O que fazer se um item de pré-verificação relacionado a binary logging falhar durante a migração incremental de dados?
Verifique se os binary logs do banco de dados de origem estão funcionando corretamente. Consulte Verificação de binary logging do banco de dados de origem.
Problemas de conexão com o banco de dados
O que fazer se a conexão com o banco de dados de origem falhar?
Verifique se as informações e configurações do banco de dados de origem estão corretas. Consulte Verificação de conectividade do banco de dados de origem.
O que fazer se a conexão com o banco de dados de destino falhar?
Verifique se as informações e configurações do banco de dados de destino estão corretas. Consulte Verificação de conectividade do banco de dados de destino.
O que fazer se a instância de origem ou de destino estiver em uma região não suportada pelo DTS e eu quiser realizar migração e sincronização de dados?
Para uma tarefa de migração de dados, solicite um endpoint público para a instância de banco de dados, como uma instância RDS MySQL, e use o tipo de conexão Public IP Address. Para isso, selecione uma região suportada pelo DTS para a instância e adicione os blocos CIDR dos servidores do DTS nessa região à lista de permissões da instância. Consulte Adicionar blocos CIDR de servidores do DTS à lista de permissões de IP.
O DTS não suporta sincronização de dados nessas regiões porque não oferece suporte ao tipo de conexão Public IP Address para instâncias de banco de dados.
Quanto tempo o DTS leva para detectar uma troca de nome de domínio em uma instância de origem ou de destino?
O DTS detecta a troca de vinculação de nome de domínio em até 10 minutos e alterna automaticamente a tarefa para o novo endereço IP vinculado ao domínio. Durante a troca de nome de domínio, garanta que a relação de replicação de binary logging entre as instâncias antiga e nova seja mantida por mais de 10 minutos.
Problemas de sincronização de dados
Quais instâncias de banco de dados o DTS suporta para sincronização?
O DTS suporta sincronização entre diversas fontes de dados, incluindo bancos de dados RDBMS, NoSQL e OLAP. Consulte Visão geral das soluções de sincronização de dados.
Qual é a diferença entre migração de dados e sincronização de dados?
A tabela a seguir compara a migração e a sincronização de dados.
Uma instância de banco de dados é classificada como banco de dados autogerenciado se o seu Access Method não estiver definido como Alibaba Cloud Instance durante a configuração de uma instância do DTS. Bancos de dados autogerenciados incluem instâncias de bancos de dados de clouds de terceiros, bancos implantados em servidores on-premises e bancos implantados em instâncias ECS.
Item | Migração de dados | Sincronização de dados |
Cenários | Utilizada principalmente para migração para a cloud, como migrar bancos de dados on-premises, bancos autogerenciados em instâncias ECS ou bancos de clouds de terceiros para bancos de dados da Alibaba Cloud. | Utilizada principalmente para sincronização de dados em tempo real entre duas fontes de dados. Adequada para cenários como redundância geográfica ativa, recuperação de desastres de dados, sincronização de dados transfronteiriça, descarregamento de consultas e relatórios, business intelligence (BI) na cloud e data warehousing em tempo real. |
Bancos de dados suportados | Visão geral das soluções de migração de dados. Nota Para alguns bancos de dados não suportados pela sincronização de dados, é possível usar a migração de dados para obter a sincronização. Exemplos incluem bancos de dados MongoDB de nó único e bancos de dados OceanBase (modo MySQL). | |
Locais de implantação de bancos de dados suportados (tipos de conexão) |
|
Nota A sincronização de dados baseia-se em transmissão por rede interna, o que garante menor latência de rede. |
Diferenças de recursos |
|
|
Método de faturamento | Suporta apenas pagamento conforme o uso. | Suporta pagamento conforme o uso e assinatura. |
É um service pago? | Sim, mas as taxas incidem apenas sobre instâncias de migração que incluem tarefas de migração incremental. | Sim. Instâncias de sincronização incluem tarefas de sincronização incremental por padrão e sempre geram cobranças. |
Regra de faturamento | A cobrança ocorre apenas quando a migração incremental de dados está em execução. Não há cobrança quando a migração incremental de dados está pausada. Não há cobrança para migração de schema ou migração completa de dados. |
|
Como funciona a sincronização de dados?
Consulte Arquitetura e recursos do service.
Como a latência de sincronização é calculada?
A latência de sincronização corresponde à diferença de tempo, em milissegundos, entre o timestamp dos dados mais recentes sincronizados no banco de dados de destino e o timestamp atual do banco de dados de origem.
Uma latência normal fica dentro de 1.000 milissegundos.
Posso modificar os objetos de sincronização de uma tarefa de sincronização de dados?
Sim. Consulte Adicionar um objeto de sincronização e Remover um objeto de sincronização.
Posso adicionar uma nova tabela a uma tarefa de sincronização de dados?
Sim. Consulte Adicionar um objeto de sincronização.
Como modifico os objetos de sincronização, como tabelas e campos, de uma tarefa de sincronização em execução?
É possível modificar objetos de sincronização após a conclusão da sincronização completa e o início da sincronização incremental. Consulte Adicionar um objeto de sincronização e Remover um objeto de sincronização.
Se eu pausar uma tarefa de sincronização e reiniciá-la após algum tempo, isso causará inconsistência de dados?
Se o banco de dados de origem sofrer alterações enquanto a tarefa de sincronização estiver pausada, poderá ocorrer inconsistência de dados entre os bancos de origem e de destino. Após reiniciar a tarefa de sincronização e os dados incrementais forem sincronizados no banco de destino, os dados no banco de destino voltarão a ficar consistentes com os do banco de origem.
Se eu excluir dados do banco de origem de uma tarefa de sincronização incremental, os dados sincronizados no banco de destino também serão excluídos?
Se as operações DML configuradas para sincronização incremental não incluírem delete, os dados no banco de destino não serão excluídos. Caso contrário, os dados sincronizados no banco de destino serão excluídos.
Os dados na instância Redis de destino serão sobrescritos durante a sincronização entre instâncias Redis?
Sim, dados com a mesma chave são sobrescritos. O DTS verifica o destino durante a fase de pré-verificação. Se o destino não estiver vazio, um erro será reportado.
Uma tarefa de sincronização pode filtrar determinados campos ou dados?
Sim. Utilize o recurso de mapeamento para filtrar colunas e especifique condições SQL WHERE para filtrar dados. Consulte Sincronizar ou migrar algumas colunas e Filtrar dados usando condições SQL.
Uma tarefa de sincronização pode ser convertida em uma tarefa de migração?
Não. Tarefas de tipos diferentes não podem ser convertidas entre si.
Posso sincronizar apenas os dados sem sincronizar o schema?
Sim. Ao configurar a tarefa de sincronização, não selecione Schema Synchronization.
Quais são as possíveis causas de inconsistência de dados entre a origem e o destino de uma instância de sincronização de dados?
Causas possíveis:
Os dados no destino não foram limpos durante a configuração da tarefa, portanto, o destino contém dados históricos.
Apenas a sincronização incremental foi selecionada durante a configuração da tarefa, sem a sincronização completa.
Apenas a sincronização completa foi selecionada durante a configuração da tarefa, sem a sincronização incremental, e os dados de origem foram alterados após a conclusão da tarefa.
Dados foram gravados no destino a partir de fontes externas à tarefa do DTS.
Há um atraso nas gravações incrementais e nem todos os dados incrementais foram gravados no destino.
Posso alterar o nome do banco de dados de origem no banco de dados de destino em uma tarefa de sincronização de dados?
Sim. Consulte Definir o nome de um objeto de sincronização na instância de destino.
A sincronização em tempo real de operações DML ou DDL é suportada?
Sim. A sincronização de dados relacionais suporta operações DML (INSERT, UPDATE e DELETE) e DDL (CREATE, DROP, ALTER, RENAME e TRUNCATE).
As operações DML ou DDL suportadas variam conforme o cenário. Selecione um link que atenda às suas necessidades de negócio em Visão geral das soluções de sincronização de dados e verifique as operações DML ou DDL suportadas no documento de configuração específico do link.
Uma instância somente leitura pode ser usada como instância de origem para uma tarefa de sincronização?
Por padrão, as tarefas de sincronização incluem sincronização incremental de dados. Isso resulta nos dois cenários a seguir:
Se a instância for somente leitura e registrar logs de transação, como uma instância ApsaraDB RDS for MySQL 5.7 ou 8.0, ela poderá ser usada como instância de origem.
Se a instância for somente leitura e não registrar logs de transação, como uma instância ApsaraDB RDS for MySQL 5.6, ela não poderá ser usada como instância de origem.
O DTS suporta sincronização de dados para bancos de dados e tabelas fragmentados (sharded)?
Sim. Por exemplo, é possível consolidar várias tabelas fragmentadas sincronizando-as do MySQL e PolarDB for MySQL para o AnalyticDB for MySQL.
Por que o volume de dados da instância de destino é menor que o da instância de origem após a conclusão de uma tarefa de sincronização?
Se houver filtragem de dados durante a sincronização ou se existirem muitos fragmentos de tabela na instância de origem, o volume de dados da instância de destino poderá ser menor que o da instância de origem após a conclusão da sincronização.
Uma tarefa de sincronização de dados entre contas diferentes suporta sincronização bidirecional?
Sim, mas atualmente apenas tarefas de sincronização bidirecional entre instâncias ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instâncias Tair (Enterprise Edition), entre instâncias ApsaraDB for MongoDB (ReplicaSet) ou entre instâncias ApsaraDB for MongoDB (cluster fragmentado) suportam sincronização bidirecional entre contas.
A sincronização reversa de uma instância de sincronização bidirecional suporta sincronização DDL?
Não. Apenas a tarefa de sincronização direta (do banco de dados de origem para o banco de dados de destino) suporta sincronização DDL. A tarefa de sincronização reversa (do banco de dados de destino para o banco de dados de origem) não suporta sincronização DDL e filtra automaticamente as operações DDL.
Para sincronizar as operações DDL da tarefa de sincronização reversa atual, inverta a direção da instância de sincronização bidirecional se o seu negócio permitir.
Preciso configurar manualmente uma tarefa de sincronização reversa?
Sim. Aguarde a tarefa de sincronização direta concluir a inicialização (até que o Status seja Running). Em seguida, localize a tarefa de sincronização reversa e clique em Configure Task.
Recomendamos configurar a tarefa de sincronização reversa após a tarefa de sincronização direta não apresentar latência (latência de 0 milissegundos).
O DTS suporta tarefas de sincronização bidirecional transfronteiriças?
Não.
Por que um registro não é adicionado ao outro banco de dados quando é inserido em um dos bancos em uma tarefa de sincronização bidirecional?
Esse problema pode ocorrer porque uma tarefa reversa não foi configurada.
Por que a tarefa de sincronização incremental nunca atinge 100%?
Uma tarefa de sincronização incremental sincroniza continuamente as alterações da origem para o destino em tempo real e não termina sozinha. Isso significa que não existe um estado de conclusão de 100%. Se não precisar mais da sincronização em tempo real, encerre a tarefa no console do DTS.
Por que uma tarefa de sincronização incremental não consegue sincronizar dados?
Se uma instância do DTS for configurada apenas para sincronização incremental, o DTS sincronizará somente os dados incrementais gerados após o início da tarefa. Isso significa que os dados gerados antes do início da tarefa não serão sincronizados com 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.
A sincronização completa de dados de um banco de dados RDS afeta o desempenho da instância RDS de origem?
Sim, isso afeta o desempenho de consulta do banco de dados de origem. Use um dos três métodos a seguir para reduzir o impacto da tarefa do DTS no banco de dados de origem:
Faça upgrade das especificações da instância do banco de dados de origem.
Pause a tarefa do DTS e reinicie-a quando a carga no banco de dados de origem estiver baixa.
Reduza a taxa da tarefa do DTS. Consulte Ajustar a taxa de migração completa.
Por que uma instância de sincronização com origem PolarDB-X 1.0 não exibe latência?
As informações de latência não são exibidas para instâncias com origem PolarDB-X 1.0. Isso ocorre porque a instância executa como uma tarefa distribuída, e as métricas monitoradas pelo DTS existem apenas nas subtarefas. Para visualizar as informações de latência, clique no ID da instância e acesse a seção Subtask Details na página Task Management.
Por que uma tarefa de mesclagem de múltiplas tabelas reporta o erro DTS-071001?
Esse erro pode ocorrer se operações DDL online foram executadas no banco de dados de origem enquanto a tarefa de mesclagem de múltiplas tabelas estava em execução. Essas operações modificaram o schema da tabela no banco de origem, mas as alterações correspondentes não foram feitas no banco de dados de destino.
O que fazer se a adição de uma lista de permissões falhar ao configurar uma tarefa no console legado?
Use o novo console para configurar a tarefa.
O que fazer se uma tarefa de sincronização de dados falhar devido a uma operação DDL executada no banco de dados de origem durante o processo?
Com base na operação DDL executada no banco de dados de origem, execute manualmente a mesma operação no banco de dados de destino e reinicie a tarefa. Durante a sincronização de dados, não utilize ferramentas como pt-online-schema-change para realizar operações DDL online nos objetos de sincronização do banco de dados de origem, pois isso causa falha na sincronização. Caso nenhum dado além dos dados do DTS seja gravado no banco de dados de destino, use o Data Management (DMS) para executar operações DDL online ou modifique os objetos de sincronização para remover as tabelas afetadas. Remover um objeto de sincronização.
O que fazer se uma tarefa de sincronização de dados falhar devido a uma operação DDL executada no banco de dados de destino durante o processo?
Se um banco de dados ou tabela no destino for excluído durante a sincronização incremental, causando anomalia na tarefa, utilize uma das duas soluções abaixo para restaurá-la:
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 responsável pela falha. Remover um objeto de sincronização.
É possível restaurar uma tarefa de sincronização após sua liberação? A reconfiguração garante a consistência dos dados?
Não é possível restaurar uma tarefa de sincronização depois de liberada. Se você reconfigurar a tarefa sem selecionar Full Data Synchronization, os dados adicionados entre a liberação da tarefa original e o início da nova não serão sincronizados com o destino, comprometendo a consistência. Quando a precisão dos dados for crítica para o seu negócio, exclua os dados no banco de dados de destino, reconfigure a tarefa de sincronização e selecione tanto Schema Synchronization quanto Full Data Synchronization em Task Stages. A opção Incremental Data Synchronization vem selecionada por padrão.
O que fazer se uma tarefa de sincronização completa do DTS não apresentar progresso por muito tempo?
Tabelas sem chave primária tornam a sincronização completa extremamente lenta. Recomendamos adicionar uma chave primária à tabela no banco de dados de origem antes de iniciar a sincronização.
Ao sincronizar dados entre tabelas com o mesmo nome, é possível transferir apenas registros inexistentes no destino?
Sim. Durante a configuração da tarefa, defina Processing Mode of Conflicting Tables como Ignore Errors and Proceed. Se os esquemas das tabelas forem consistentes e um registro do banco de dados de origem possuir uma chave primária já existente no destino, esse registro não será sincronizado durante a fase completa.
Como configurar uma tarefa de sincronização entre contas diferentes?
Primeiro, compreenda os cenários para tarefas entre contas. Em seguida, use a conta Alibaba Cloud proprietária da instância de banco de dados para configurar a autorização RAM para tarefas entre contas Alibaba Cloud. Por fim, configure a tarefa entre contas Alibaba Cloud.
O que fazer se não for possível selecionar uma instância DMS LogicDB?
Verifique se a região da instância está correta. Caso ainda não consiga selecioná-la, pode haver apenas uma instância disponível. Nesse caso, prossiga com a configuração dos demais parâmetros.
Tarefas de sincronização com origem SQL Server suportam a sincronização de funções?
Não. Se a granularidade do objeto de sincronização estiver definida como tabela, outros objetos como views, triggers e stored procedures não serão sincronizados com o banco de dados de destino.
O que fazer se uma tarefa de sincronização de dados apresentar erro?
Consulte a solução em Erros comuns com base na mensagem de erro exibida.
Como ativar a mesclagem de hot spot em uma tarefa de sincronização?
Consulte Modificar valores de parâmetros para alterar o valor de trans.hot.merge.enable para true.
Como realizar a sincronização quando o banco de dados de origem possui triggers?
Quando o objeto de sincronização é o banco de dados inteiro e uma trigger atualiza uma tabela dentro dele, pode ocorrer inconsistência de dados. Configurar uma tarefa de sincronização ou migração quando o banco de dados de origem possui triggers.
O DTS suporta a sincronização do banco de dados sys e de bancos de dados do sistema?
Não.
O DTS suporta a sincronização dos bancos de dados admin e local do MongoDB?
Não. O DTS não permite utilizar os bancos de dados admin e local do MongoDB como origem ou destino.
Quando é possível configurar a tarefa reversa de uma sincronização bidirecional?
A tarefa reversa só pode ser configurada após a tarefa incremental direta não apresentar mais latência.
Quando o PolarDB-X 1.0 é a origem, a instância de origem suporta dimensionamento de nós?
Não. Se o PolarDB-X 1.0 de origem passar por dimensionamento de nós, será necessário reconfigurar a tarefa.
Os dados sincronizados pelo DTS para o Kafka têm garantia de unicidade?
Não. Como os dados gravados no Kafka são anexados, podem ocorrer duplicações quando a tarefa do DTS é reiniciada ou quando há leitura repetida de logs da origem. O DTS garante a idempotência dos dados, organizando-os em ordem sequencial, onde o valor mais recente dos dados duplicados é posicionado ao final.
O DTS suporta sincronização de dados do RDS for MySQL para AnalyticDB for MySQL?
Sim. Sincronizar dados do RDS for MySQL para o AnalyticDB for MySQL 3.0.
Por que uma tarefa de sincronização entre instâncias Redis não exibe a fase de sincronização completa?
A sincronização entre instâncias Redis inclui tanto a sincronização completa quanto a incremental de dados. Esses dois métodos são exibidos conjuntamente como Incremental Data Synchronization.
É possível pular a sincronização completa?
Sim. Após pular a sincronização completa, a sincronização incremental continua, mas podem ocorrer erros. Recomendamos não pular a sincronização completa.
É possível agendar a sincronização automática?
Não. Atualmente, o DTS não oferece suporte ao agendamento do início de tarefas de sincronização de dados.
A fragmentação de tabelas é sincronizada durante o processo?
Não.
Quais cuidados devo ter ao sincronizar do MySQL 8.0 para o MySQL 5.6?
Crie o banco de dados no MySQL 5.6 antes de iniciar a sincronização. Recomendamos manter as versões dos bancos de dados de origem e destino consistentes, ou sincronizar de uma versão inferior para uma superior para garantir compatibilidade. A sincronização de uma versão superior para uma inferior pode causar problemas de compatibilidade.
As contas do banco de dados de origem podem ser sincronizadas com o destino?
Atualmente, apenas tarefas de sincronização entre instâncias ApsaraDB RDS for MySQL suportam a sincronização de contas. Demais tarefas não oferecem esse suporte.
É possível configurar uma tarefa de sincronização bidirecional entre contas diferentes?
Sim, mas atualmente apenas tarefas de sincronização bidirecional entre instâncias ApsaraDB RDS for MySQL, entre clusters PolarDB for MySQL, entre instâncias Tair (Enterprise Edition), entre instâncias ApsaraDB for MongoDB (ReplicaSet) ou entre instâncias ApsaraDB for MongoDB (sharded cluster) suportam sincronização bidirecional entre contas.
Para tarefas que não possuem o item de configuração Replicate Data Across Alibaba Cloud Accounts, utilize o CEN para configurar a sincronização bidirecional entre contas. Acessar recursos de banco de dados entre contas ou regiões Alibaba Cloud.
Como configurar parâmetros quando o Message Queue for Apache Kafka é o destino?
Configure os parâmetros conforme necessário. Configurar parâmetros para uma instância Message Queue for Apache Kafka.
Como resolver 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 acontece porque o número de databases no destino é insuficiente. Se o banco de dados de destino utilizar um proxy, verifique se ele permite aumentar o limite de databases.
Solução: Modifique a configuração de databases do banco de dados de destino. Aumente o valor para corresponder ao do banco de dados de origem e reinicie a tarefa do DTS. Execute o comando abaixo para consultar a configuração de databases do destino:
CONFIG GET databases;
Como resolver o erro IDENTIFIER CLUSTERED ao sincronizar ou migrar dados do SQL Server para o AnalyticDB for PostgreSQL?
Causa: Ao sincronizar ou migrar dados do SQL Server para o AnalyticDB for PostgreSQL, a tarefa falha porque o comando CREATE CLUSTERED INDEX não é suportado.
Solução: Após confirmar que não há outros comandos DDL durante o período de latência, modifique o parâmetro da instância sink.ignore.failed.ddl para true, filtrando assim todas as execuções DDL. Assim que o offset da sincronização ou migração incremental avançar, altere sink.ignore.failed.ddl de volta para false.
Em uma tarefa de sincronização ou migração do Redis, estender o tempo de expiração de uma chave no destino tem efeito prático?
Para evitar que chaves expirem durante a sincronização completa de dados, estenda o tempo de expiração no banco de dados de destino. Para tarefas do DTS que envolvem sincronização ou migração incremental, se uma chave expirar e for excluída na origem, a chave correspondente no destino também será liberada.
Após definir um tempo de expiração estendido para uma chave no destino, ela será liberada imediatamente se expirar na origem?
Uma chave no banco de dados de destino não é necessariamente liberada imediatamente ao expirar. Ela só é liberada instantaneamente quando a chave correspondente na origem expira e é limpa.
Por exemplo, se uma chave na origem estiver configurada para expirar em 5 segundos, mas no destino o tempo for de 30 segundos, a chave no destino será excluída assim que a chave de origem expirar. Quando a chave expira na origem, o sistema adiciona uma operação de exclusão ao Append-Only File (AOF). Essa solicitação é então sincronizada e executada no banco de dados de destino.
Como resolver o erro column_name[xxx], the length of input string is too long than vec schema ao usar o DTS para sincronizar dados com o SelectDB?
Mensagem de erro detalhada:
Reason: The input string for column_name[xxx] is longer than the length specified in the vector schema. First 32 bytes of the input string: [01a954b4-xxx-xxx-xxx-95b675b9]. Schema length: 2147483643. Limit length: 1048576. Actual length: 7241898. Source line: [].Causa: O tamanho dos dados incrementais no campo xxx da origem excede o limite de comprimento do campo correspondente no destino.
Solução: Se o campo for do tipo
STRING, aumente o parâmetro string_type_length_soft_limit_bytes no console do SelectDB. O valor deve ser maior que oactual length(7241898).
Como resolver o erro column(xxx) values is null while columns is not nullable. ao usar o DTS para sincronizar dados com o SelectDB?
Mensagem de erro detalhada:
Reason: column(xxx) values is null while columns is not nullable. src line [ xxx ];-
Causa: O campo xxx no destino é
NOT NULL, mas valoresNULLestão sendo gravados.NotaCenário comum: O formato de data de origem contém dados inválidos, como
0000-0000-0000, fazendo com que o DTS converta automaticamente para um valorNULLe acione o erro. -
Solução:
Altere o tipo do campo no destino para permitir valores NULL.
Modifique o objeto de sincronização: remova a tabela problemática, corrija os dados na origem e exclua a tabela no destino. Em seguida, modifique novamente o objeto de sincronização para readicionar a tabela e, por fim, execute novamente a sincronização completa e incremental.
Como corrigir um mapeamento de nome de tabela de destino configurado incorretamente?
Na página de configuração da tarefa do DTS, expanda o banco de dados de destino na seção Selected Objects, localize a tabela com o mapeamento incorreto e clique 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.
Como preencher dados históricos após adicionar uma nova coluna?
O DTS não preenche automaticamente dados históricos para colunas recém-adicionadas. Esta regra aplica-se a todos os tipos de banco de dados de destino, não apenas ao SelectDB. Para preencher os dados históricos, siga estas etapas:
Adicione manualmente o novo campo à tabela de destino.
No console do DTS, modifique os objetos de sincronização para remover a tabela da lista de sincronização.
Execute
TRUNCATEpara limpar os dados da tabela de destino e garantir a consistência.Readicione a tabela aos objetos de sincronização. Isso aciona a sincronização completa e incremental para migrar os dados históricos para o destino.
Problemas de migração de dados
Os dados no banco de dados de origem permanecem após a execução de uma tarefa de migração?
O DTS realiza a migração e sincronização copiando dados do banco de dados de origem para o destino, sem afetar a origem.
Quais instâncias de banco de dados o DTS suporta para migração?
O DTS suporta migração entre diversas fontes de dados, incluindo bancos RDBMS, NoSQL e OLAP. Visão geral das soluções de migração de dados
Como funciona a migração de dados?
Posso modificar os objetos de migração de uma tarefa em andamento?
Não.
Posso adicionar uma nova tabela a uma tarefa de migração de dados?
Não.
Como modificar objetos de migração, como tabelas e campos, em uma tarefa em execução?
Tarefas de migração não suportam a modificação de objetos de migração.
Se eu pausar uma tarefa de migração e reiniciá-la após algum tempo, isso causará inconsistência de dados?
Se houver alterações no banco de dados de origem enquanto a tarefa estiver pausada, pode ocorrer inconsistência entre a origem e o destino. Após reiniciar a tarefa e migrar os dados incrementais para o destino, os dados voltarão a ficar consistentes com a origem.
Uma tarefa de migração pode ser convertida em uma tarefa de sincronização?
Não. Tarefas de tipos diferentes não podem ser convertidas entre si.
Posso migrar apenas os dados sem migrar o esquema?
Sim. Ao configurar a tarefa de migração, não selecione Schema Migration.
Quais são as possíveis causas de inconsistência de dados entre origem e destino em uma instância de migração?
Possíveis causas:
Os dados no destino não foram limpos durante a configuração, deixando dados históricos residuais.
Apenas a migração incremental foi selecionada, sem incluir a migração completa.
Apenas a migração completa foi selecionada, e os dados na origem foram alterados após a conclusão da tarefa.
Dados foram gravados no destino por outras fontes além da tarefa do DTS.
Há atraso nas gravações incrementais, impedindo que todos os dados sejam escritos no destino.
Posso alterar o nome do banco de dados de origem no banco de dados de destino durante a migração?
A migração de dados dentro da mesma instância é suportada?
Sim. Sincronização ou migração de dados entre nomes de banco de dados diferentes.
A migração em tempo real de operações DML ou DDL é suportada?
Sim. As operações DML suportadas para dados entre bancos relacionais são INSERT, UPDATE e DELETE. As operações DDL suportadas são CREATE, DROP, ALTER, RENAME e TRUNCATE.
As operações DML ou DDL suportadas variam conforme o cenário. Selecione um link adequado às suas necessidades em Visão geral das soluções de migração de dados e verifique as operações suportadas na documentação específica de configuração.
Uma instância somente leitura pode ser usada como origem em uma tarefa de migração?
Se a tarefa não exigir migração incremental de dados, uma instância somente leitura pode servir como origem. Caso a migração incremental seja necessária, existem dois cenários:
Instâncias somente leitura que registram logs de transações, como ApsaraDB RDS for MySQL 5.7 ou 8.0, podem ser usadas como origem.
Instâncias somente leitura que não registram logs de transações, como ApsaraDB RDS for MySQL 5.6, não podem ser usadas como origem.
O DTS suporta migração de dados para bancos e tabelas fragmentados (sharded)?
Sim. Por exemplo, é possível migrar bancos e tabelas fragmentados do MySQL e PolarDB for MySQL para o AnalyticDB for MySQL para consolidar múltiplas tabelas.
Uma tarefa de migração pode filtrar campos ou dados específicos?
Sim. Utilize o recurso de mapeamento para filtrar colunas e especifique condições SQL WHERE para filtrar dados. Sincronizar ou migrar algumas colunas e Filtrar dados a serem migrados.
Por que o volume de dados da instância de destino fica menor que o da origem após a migração?
Se houver filtragem de dados durante a migração ou se a instância de origem tiver muita fragmentação de tabelas, o volume de dados no destino poderá ser menor após a conclusão.
Por que o valor "Concluído" é maior que o total em uma tarefa de migração?
O total exibido é uma estimativa. Após a conclusão da tarefa, o valor será ajustado para o número exato.
Qual a finalidade da tabela increment_trx adicionada ao destino durante a migração?
A tabela increment_trx é criada pela migração incremental do DTS na instância de destino para registrar o offset da migração e permitir a retomada a partir de um ponto de interrupção após reinícios anômalos. Não a exclua durante o processo, sob pena de falha na migração.
A tarefa de migração de dados suporta retomada a partir de ponto de interrupção na fase completa?
Sim. Se você pausar a tarefa durante a fase de migração completa e reiniciá-la posteriormente, ela continuará de onde parou, sem recomeçar do zero.
Como migrar uma instância fora da Alibaba Cloud para a Alibaba Cloud?
Migrar dados de uma cloud de terceiros para a Alibaba Cloud.
Como migrar um banco de dados Oracle on-premises para o PolarDB?
É possível pausar uma tarefa que ainda não concluiu a fase de migração completa?
Sim.
Como migrar parte dos dados do RDS for MySQL para um banco de dados MySQL autogerenciado?
Ao configurar a tarefa, selecione os objetos a serem migrados na seção Source Objects ou filtre-os na seção Selected Objects conforme necessário. As operações de migração entre bancos MySQL são semelhantes. Migrar dados de um banco de dados MySQL autogerenciado para uma instância ApsaraDB RDS for MySQL.
Como migrar instâncias RDS sob a mesma conta Alibaba Cloud?
O DTS suporta migração e sincronização entre instâncias RDS. Consulte os documentos de configuração relevantes em Visão geral das soluções de migração de dados.
O que fazer se um alerta de IOPS for acionado na origem após o início da migração, e como garantir a estabilidade do negócio?
Se a carga na instância de origem estiver alta durante a execução da tarefa do DTS, utilize um dos três métodos abaixo para reduzir o impacto:
Atualize as especificações da instância do banco de dados de origem.
Pause a tarefa do DTS e reinicie-a quando a carga no banco de dados de origem estiver baixa.
Reduza a taxa da tarefa do DTS. Ajustar a taxa de migração completa.
Por que não é possível selecionar um banco de dados chamado "test" na migração?
A migração de dados do DTS não suporta bancos de dados do sistema. Selecione um banco de dados criado para fins de negócio.
Por que uma instância de migração com origem PolarDB-X 1.0 não exibe latência?
Informações de latência não são exibidas para instâncias com origem PolarDB-X 1.0. Isso ocorre porque a instância opera como uma tarefa distribuída, e as métricas monitoradas pelo DTS existem apenas nas subtarefas. Para visualizar a latência, clique no ID da instância e acesse a seção Subtask Details na página Task Management.
Por que o DTS não consegue migrar um banco de dados MongoDB?
Isso pode ocorrer se o banco de dados a ser migrado for "local" ou "admin". O DTS não suporta o uso dos bancos de dados admin e local do MongoDB como origem ou destino.
Por que uma tarefa de mesclagem de múltiplas tabelas reporta o erro DTS-071001?
Esse erro geralmente ocorre quando operações DDL online são executadas na origem durante a tarefa de mesclagem. Tais operações modificam o esquema da tabela na origem, mas as alterações correspondentes não foram aplicadas no destino.
O que fazer se a adição de lista de permissões falhar ao configurar uma tarefa no console legado?
Utilize o novo console para configurar a tarefa.
O que fazer se uma tarefa de migração falhar devido a uma operação DDL executada na origem durante o processo?
Com base no conteúdo DDL executado na origem, execute manualmente a operação no destino e reinicie a tarefa. Durante a migração, evite usar ferramentas como pt-online-schema-change para operações DDL online nos objetos de migração, pois isso causa falhas. Se nenhum dado além dos dados do DTS for gravado no destino, utilize o Data Management (DMS) para executar operações DDL online.
O que fazer se uma tarefa de migração falhar devido a uma operação DDL executada no destino durante o processo?
Se um banco de dados ou tabela no destino for excluído durante a migração incremental, causando anomalia na tarefa, reconfigure a tarefa sem selecionar o banco de dados ou tabela que causou a falha como objeto de migração.
É possível restaurar uma tarefa de migração após sua liberação? A reconfiguração garante a consistência dos dados?
Não é possível restaurar uma tarefa de migração depois de liberada. Se você reconfigurar a tarefa sem selecionar Full Data Migration, os dados adicionados após a liberação não serão migrados, comprometendo a consistência. Caso seja necessária alta precisão, exclua os dados no destino, reconfigure a tarefa e selecione Schema Migration, Incremental Data Migration e Full Data Migration em Task Stages.
O que fazer se uma tarefa de migração completa do DTS não apresentar progresso por muito tempo?
Tabelas sem chave primária tornam a migração completa extremamente lenta. Recomendamos adicionar uma chave primária à tabela no banco de dados de origem antes de iniciar a migração.
Ao migrar dados entre tabelas com o mesmo nome, é possível transferir apenas registros inexistentes no destino?
Sim. Durante a configuração da tarefa, defina Processing Mode of Conflicting Tables como Ignore Errors and Proceed. Se os esquemas forem consistentes, registros da origem com chaves primárias já existentes no destino não serão migrados durante a fase completa.
Como configurar uma tarefa de migração entre contas diferentes?
Primeiro, compreenda os cenários para tarefas entre contas. Em seguida, use a conta Alibaba Cloud proprietária da instância de banco de dados para configurar a autorização RAM para tarefas entre contas Alibaba Cloud. Por fim, configure a tarefa entre contas Alibaba Cloud.
Como uma tarefa de migração se conecta a um banco de dados on-premises?
Defina o Access Method do banco de dados on-premises como Public IP Address para configurar a tarefa. Migrar dados de um banco de dados MySQL autogerenciado para uma instância ApsaraDB RDS for MySQL.
O que fazer se uma migração falhar com o erro DTS-31008?
Com base na mensagem de erro, clique em View Cause ou consulte Erros comuns.
O que fazer se a conexão via linha dedicada com um banco autogerenciado for interrompida?
Verifique se a lista de permissões de endereços IP relacionados ao DTS está configurada corretamente para a linha dedicada. Para obter a lista de endereços IP a serem adicionados, consulte Adicionar faixas de endereços IP dos servidores DTS à lista de permissões de IP de um banco de dados autogerenciado.
Tarefas de migração com origem SQL Server suportam a migração de funções?
Não. Se a granularidade do objeto de migração estiver definida como tabela, outros objetos como views, triggers e stored procedures não serão migrados para o banco de dados de destino.
O que fazer se a migração completa do DTS estiver lenta?
A migração de dados pode levar algum tempo. Acompanhe o progresso no módulo Full Data Migration nos detalhes da tarefa, dentro da página Task Management.
O que fazer se a migração de esquema apresentar erro?
Clique no ID da instância para acessar a página de detalhes. Visualize a mensagem de erro no módulo de migração de esquema na página Task Management e resolva o problema adequadamente. Para soluções de erros comuns, consulte Erros comuns.
A migração de esquema e a migração completa são gratuitas?
Sim, são gratuitas. Itens de faturamento.
Os dados zset no destino são sobrescritos durante a migração entre instâncias Redis?
Sim. Se já existir no destino uma chave idêntica à da origem, o DTS excluirá primeiro o zset dessa chave no destino e, em seguida, executará zadd para cada objeto da coleção zset de origem.
Qual o impacto da migração completa no banco de dados de origem?
Durante a migração completa, o DTS segmenta os dados e depois realiza leituras e gravações dentro desses segmentos. No banco de dados de origem, o IOPS aumenta durante a segmentação. Durante a leitura dos dados segmentados, o IOPS, CachePool e a largura de banda de saída são afetados em certa medida. Com base na experiência prática do DTS, esses impactos são insignificantes.
Quando o PolarDB-X 1.0 é a origem, a instância de origem da tarefa de migração suporta dimensionamento de nós?
Não. Se o PolarDB-X 1.0 de origem passar por dimensionamento de nós, será necessário reconfigurar a tarefa.
Os dados migrados pelo DTS para o Kafka têm garantia de unicidade?
Não. Como os dados gravados no Kafka são anexados, podem ocorrer duplicações quando a tarefa do DTS é reiniciada ou quando há leitura repetida de logs da origem. O DTS garante a idempotência dos dados, organizando-os em ordem sequencial, onde o valor mais recente dos dados duplicados é posicionado ao final.
Se eu configurar primeiro uma tarefa de migração completa e depois uma tarefa de migração incremental, ocorrerá inconsistência de dados?
Sim, pode ocorrer inconsistência de dados. Quando uma tarefa de migração de dados incrementais é configurada separadamente, ela só começa a migrar os dados após ser iniciada. Os dados incrementais gerados na instância de origem antes do início da tarefa de migração não serão sincronizados com a instância de destino. Para realizar uma migração sem tempo de inatividade, recomendamos que você selecione migração de schema, migração completa de dados e migração incremental de dados como tipos de migração ao configurar a tarefa.
Preciso selecionar a migração de schema ao configurar uma tarefa de migração incremental?
A migração de schema é o processo de migrar as definições dos objetos de migração para a instância de destino antes do início da migração de dados, como migrar a definição da tabela A para a instância de destino. Para executar a migração incremental, recomendamos selecionar a migração de schema, a migração completa de dados e a migração incremental de dados para garantir a consistência dos dados.
Por que o espaço de armazenamento usado pelo RDS é maior que o do banco de dados de origem durante a migração de um banco de dados autogerenciado para o RDS?
Como o DTS executa uma migração lógica, ele encapsula os dados a serem migrados em SQL e os migra para a instância RDS de destino. Nesse momento, dados de log binário são gerados na instância RDS de destino, portanto, o espaço de armazenamento usado pelo RDS durante o processo de migração pode ser maior que o do banco de dados de origem.
O DTS suporta a migração de MongoDB em uma VPC?
Sim, suporta. Atualmente, o DTS permite usar o ApsaraDB for MongoDB em uma VPC como banco de dados de origem para migração.
O que acontece com os dados migrados se o banco de dados de origem for alterado durante a migração de dados?
Se a tarefa de migração estiver configurada com migração de schema, migração completa e migração incremental, quaisquer alterações de dados ocorridas no banco de dados de origem durante a migração serão migradas pelo DTS para o banco de dados de destino.
Liberar uma tarefa de migração concluída afetará o uso do banco de dados migrado?
Não. Você pode liberar com segurança uma tarefa de migração somente após sua conclusão, ou seja, quando seu Status for Completed.
O DTS suporta migração incremental para MongoDB?
Sim. Consulte os exemplos de configuração relevantes em Visão geral das soluções de migração de dados.
Qual é a diferença entre usar uma instância RDS e uma instância de banco de dados autogerenciado com endereço IP público como origem para uma tarefa de migração?
Se você selecionar uma instância RDS ao configurar uma tarefa de migração, a tarefa de migração do DTS poderá se adaptar a alterações como modificações de DNS e trocas de tipo de rede da instância RDS, o que garante efetivamente a confiabilidade do link.
O DTS suporta a migração de um banco de dados autogerenciado em uma instância ECS em uma VPC para uma instância RDS?
Sim, suporta.
Se a instância ECS de origem e a instância RDS de destino estiverem na mesma região, o DTS poderá acessar diretamente o banco de dados autogerenciado na instância ECS dentro da VPC.
Caso a instância ECS de origem e a instância RDS de destino estejam em regiões diferentes, a instância ECS precisará ter um Elastic IP Address (EIP) associado. Ao configurar a tarefa de migração, selecione a instância ECS como instância de origem, e o DTS usará automaticamente o EIP da instância ECS para acessar o banco de dados nela.
O DTS bloqueia tabelas durante a migração? Isso afeta o banco de dados de origem?
O DTS não bloqueia tabelas no banco de dados de origem durante a migração completa de dados e a migração incremental de dados. Durante essas fases, as tabelas de dados da origem da migração podem ser acessadas normalmente para leitura e escrita.
Quando o DTS realiza a migração de RDS, ele obtém dados do banco de dados RDS primário ou secundário?
Ao executar a migração de dados, o DTS extrai os dados do banco de dados RDS primário.
Posso agendar uma migração automática?
Não, atualmente o DTS não oferece suporte ao agendamento do início de tarefas de migração de dados.
O DTS suporta migração de dados para instâncias RDS no modo VPC?
Sim, você pode especificar o ID da instância RDS ao configurar uma tarefa de migração.
Quando o DTS executa migração ou sincronização para a mesma conta ou entre contas diferentes, ele usa a rede interna ou a rede pública para instâncias ECS e RDS? Há cobrança de taxas de tráfego?
A rede (interna ou pública) usada pelo DTS para tarefas de sincronização ou migração não depende de a tarefa ser entre contas. A cobrança de taxas de tráfego depende do tipo de tarefa.
-
Rede utilizada
Tarefa de migração: Se a migração de dados for realizada na mesma região, o DTS usa a rede interna para se conectar às instâncias ECS e RDS. Se a migração for realizada entre regiões, o DTS usa a rede pública para se conectar à instância de origem (ECS ou RDS) e a rede interna para se conectar à instância RDS de destino.
Tarefa de sincronização: Usa a rede interna.
-
Taxas de tráfego
Para tarefas de migração, há cobrança de taxas de tráfego de saída pela rede pública se o Access Method da instância de banco de dados de destino for Public IP Address. Outros tipos de instâncias DTS não incorrem em taxas de tráfego.
Tarefa de sincronização: Não há cobrança de taxas de tráfego.
Os dados no banco de dados de origem serão excluídos após a migração usando o DTS?
Não, não serão. Quando o DTS executa a migração de dados, ele copia os dados do banco de dados de origem para o banco de dados de destino, sem afetar os dados no banco de dados de origem.
Quando o DTS realiza a migração de dados entre instâncias RDS, posso especificar o nome do banco de dados de destino?
Sim. Ao realizar a migração de dados entre instâncias RDS, use o recurso de mapeamento de nomes de banco de dados para especificar o nome do banco de dados de destino. Sincronização ou migração de dados entre diferentes nomes de banco de dados.
O que devo fazer se a origem de uma tarefa de migração do DTS não conseguir se conectar a uma instância ECS?
A instância ECS pode não ter um endereço IP público exposto. Associe um EIP à instância ECS e tente novamente. Elastic IP Address.
Por que uma tarefa de migração entre instâncias Redis não mostra a migração completa?
Você pode migrar dados entre instâncias Redis usando a Incremental Data Migration, que combina a migração completa de dados e a migração incremental de dados.
É possível pular a migração completa?
Sim, é possível. Após pular a migração completa, a migração incremental continuará, mas podem ocorrer erros. Recomendamos que você não pule a migração completa.
Uma edição cluster do Redis suporta conexão ao DTS com um endereço IP público?
Não, não suporta. Atualmente, apenas a edição standalone do Redis suporta conexão a uma instância de migração do DTS com um endereço IP público.
O que devo observar ao migrar do MySQL 8.0 para o MySQL 5.6?
É necessário criar um banco de dados no MySQL 5.6 antes de executar a operação de migração. Recomendamos que as versões dos bancos de dados de origem e de destino sejam consistentes, ou que você migre de uma versão inferior para uma superior para garantir compatibilidade. Se você migrar de uma versão superior para uma inferior, poderão ocorrer problemas de compatibilidade do banco de dados.
As contas do banco de dados de origem podem ser migradas para o banco de dados de destino?
Atualmente, apenas tarefas de migração entre instâncias do ApsaraDB RDS for MySQL suportam a migração de contas. Outras tarefas de migração não oferecem esse suporte.
Como configuro parâmetros quando o Message Queue for Apache Kafka é o destino?
Configure os parâmetros conforme necessário. Configurar parâmetros para uma instância do Message Queue for Apache Kafka.
Como realizo uma migração completa agendada?
Use a política de agendamento do recurso de integração de dados para migrar periodicamente o schema e os dados históricos da origem para o destino. Configurar uma tarefa de integração de dados entre instâncias do ApsaraDB RDS for MySQL.
Há suporte para migrar um SQL Server autogerenciado em uma instância ECS para um SQL Server autogerenciado local?
Sim. O SQL Server autogerenciado local precisa estar conectado à Alibaba Cloud. Visão geral dos preparativos.
Há suporte para migrar bancos de dados PostgreSQL de outras clouds?
Sim, a migração de dados por meio do DTS é suportada quando um banco de dados PostgreSQL de outra cloud permite que o DTS o acesse pela rede pública.
Se a versão do PostgreSQL for anterior à 10.0, a migração incremental não é suportada.
Problemas de Assinatura de Dados
Como funciona a assinatura de dados?
O grupo de consumidores será excluído após a expiração de uma tarefa de rastreamento de alterações?
Após a expiração de uma tarefa de rastreamento de alterações do DTS, o grupo de consumidores de dados é retido por sete dias. Se a instância não for renovada dentro de sete dias após a expiração, ela será liberada e o grupo de consumidores correspondente também será excluído.
Uma instância somente leitura pode ser usada como instância de origem para uma tarefa de rastreamento?
Isso pode ocorrer nas duas situações seguintes:
Se a instância for somente leitura e registrar logs de transações, como uma instância do ApsaraDB RDS for MySQL 5.7 ou 8.0, ela poderá ser usada como instância de origem.
Caso a instância seja somente leitura e não registre logs de transações, como uma instância do ApsaraDB RDS for MySQL 5.6, ela não poderá ser usada como instância de origem.
Como consumo dados rastreados?
Por que o formato dos dados de data muda após a transferência de dados usando o recurso de rastreamento de alterações?
O formato padrão de armazenamento de dados de data para o DTS é AAAA:MM:DD. AAAA-MM-DD é o formato de exibição, mas o formato real de armazenamento é AAAA:MM:DD. Portanto, independentemente do formato dos dados transferidos, eles serão eventualmente convertidos para o formato padrão.
Como soluciono problemas de uma tarefa de rastreamento?
O que devo fazer se o SDK pausar repentinamente e não conseguir rastrear dados enquanto baixa dados normalmente?
Verifique se a interface ackAsConsumed é chamada no código do SDK para reportar o offset do consumidor. Se ackAsConsumed não for chamado para reportar o offset, os dados no espaço de cache Record definido dentro do SDK não serão excluídos. Quando o cache estiver totalmente ocupado, novos dados não poderão ser extraídos, o que fará com que o SDK pause e não consiga rastrear dados.
O que devo fazer se o SDK não conseguir rastrear dados com êxito após ser reiniciado?
Antes de iniciar o SDK, modifique o offset do consumidor para que esteja dentro do intervalo de dados. Salvar e consultar offsets de consumidor.
Como um cliente especifica um ponto no tempo para consumo de dados?
Ao consumir dados rastreados, preencha o parâmetro initCheckpoint para especificar um ponto no tempo. Usar código de exemplo do SDK para consumir dados rastreados.
Como redefino o offset se uma tarefa de rastreamento do DTS tiver um backlog?
-
De acordo com o modo de uso do cliente SDK, abra o arquivo de código correspondente, como DTSConsumerAssignDemo.java ou DTSConsumerSubscribeDemo.java.
Na coluna Data Range da lista de tarefas de rastreamento, visualize o intervalo de offset modificável para a instância de rastreamento de destino.
Selecione um novo offset de consumidor conforme necessário e converta-o para um timestamp UNIX.
Use o novo offset de consumidor convertido para substituir o antigo offset de consumidor (parâmetro initCheckpoint) no arquivo de código.
Execute o cliente novamente.
O que devo fazer se o cliente não conseguir se conectar usando o endereço VPC da tarefa de rastreamento?
A máquina onde o cliente está localizado pode não estar na VPC especificada quando a tarefa de rastreamento foi configurada (por exemplo, a VPC do cliente foi alterada). Reconfigure a tarefa.
Por que o offset do consumidor no console é maior que o valor máximo do intervalo de dados?
Isso ocorre porque a frequência de atualização do intervalo de dados do canal de rastreamento é de 1 minuto, enquanto a frequência de atualização do offset do consumidor é de 10 segundos. Portanto, se você consumir em tempo real, o valor do offset do consumidor poderá ser maior que o valor máximo do intervalo de dados do canal de rastreamento.
Como o DTS garante que os dados rastreados pelo SDK sejam uma transação completa?
O DTS busca a transação completa correspondente ao offset de consumidor fornecido. O lado do servidor distribui os dados downstream a partir da instrução BEGIN de toda a transação, para que o conteúdo completo da transação possa ser recebido.
Como confirmo se os dados estão sendo consumidos normalmente?
Se os dados estiverem sendo consumidos normalmente, o offset do consumidor no console do Data Transmission Service avançará normalmente.
O que significa usePublicIp=true no SDK de rastreamento de alterações?
Na configuração do SDK de rastreamento de alterações, usePublicIp=true significa que o SDK acessa o canal de rastreamento do DTS através da rede pública.
O negócio será afetado quando o banco de dados RDS primário de uma tarefa de rastreamento de alterações for alternado ou reiniciado?
Quando ocorre um failover primário/secundário ou reinicialização para uma instância do ApsaraDB RDS for MySQL, ApsaraDB RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL ou PolarDB-X 1.0 (tipo de armazenamento é RDS for MySQL), o DTS fará a alternância adaptativamente e o negócio não será afetado.
O RDS fornece uma ferramenta para download automático de logs binários para um servidor local?
O recurso de rastreamento de alterações do DTS suporta o rastreamento em tempo real de logs binários do RDS. Ative o serviço de rastreamento de alterações do DTS e use o SDK do DTS para rastrear dados de log binário do RDS e sincronizá-los com um servidor local em tempo real.
Os dados incrementais em tempo real do rastreamento de alterações referem-se apenas a novos dados ou incluem dados modificados?
Os dados incrementais que podem ser rastreados pelo rastreamento de alterações do DTS incluem todas as adições, exclusões, modificações e alterações de schema (DDL).
Por que o SDK recebe dados duplicados após reiniciar se um registro não tiver sido confirmado (ACK) pelo extremo consumidor de uma tarefa de rastreamento de alterações?
Quando uma mensagem não recebe ACK do SDK, o lado do servidor termina de enviar todas as mensagens no buffer. Após a conclusão do envio, o SDK não consegue mais receber mensagens. Nesse momento, o offset do consumidor salvo pelo lado do servidor é o offset da última mensagem anterior àquela sem ACK. Quando o SDK reinicia, para garantir que nenhuma mensagem seja perdida, o lado do servidor reenvia os dados a partir do offset correspondente à mensagem anterior àquela sem ACK. Portanto, o SDK receberá algumas mensagens duplicadas.
Com que frequência o offset do consumidor de rastreamento de alterações é atualizado e por que o SDK às vezes recebe dados duplicados ao ser reiniciado?
Depois que o SDK de rastreamento de alterações consome cada mensagem, ele deve chamar ackAsConsumed para responder com um ACK ao lado do servidor. Após receber o ACK, o lado do servidor atualiza o offset do consumidor na memória e, em seguida, persiste o offset do consumidor a cada 10 segundos. Se o SDK for reiniciado antes que o ACK mais recente seja persistido, o lado do servidor começará a enviar mensagens a partir do último offset de consumidor persistido para garantir que nenhuma mensagem seja perdida. Nesse caso, o SDK receberá mensagens duplicadas.
Uma instância de rastreamento de alterações pode rastrear várias instâncias RDS?
Não, não pode. Atualmente, uma instância de rastreamento de alterações pode rastrear apenas uma instância RDS.
Ocorrerá inconsistência de dados em uma instância de rastreamento de alterações?
Não, não ocorrerá. Uma tarefa de rastreamento de alterações obtém apenas as alterações do banco de dados de origem e não envolve inconsistência de dados. Se os dados consumidos pelo cliente forem inconsistentes com o esperado, você mesmo deverá solucionar o problema.
O que fazer quando UserRecordGenerator aparece ao consumir dados de assinatura?
Ao consumir dados rastreados, se você vir uma mensagem como UserRecordGenerator: haven't receive records from generator for 5s, verifique se o offset do consumidor está dentro do intervalo de offset do módulo de ingestão de dados incrementais e garanta que o extremo consumidor esteja funcionando normalmente.
Várias partições podem ser criadas para um tópico?
Não, não podem. Para garantir a ordem global das mensagens, cada tópico de rastreamento no DTS possui apenas uma partição, que é fixamente atribuída à partição 0.
O SDK de rastreamento de alterações suporta Go?
Suportado. Para códigos de exemplo, consulte o repositório dts-subscribe-demo.
O SDK de rastreamento de alterações suporta Python?
Sim, suporta. Para códigos de exemplo, consulte dts-subscribe-demo.
O flink-dts-connector suporta consumo simultâneo multithread de dados rastreados?
Não, não suporta.
Posso configurar uma tarefa de rastreamento de alterações e uma tarefa de sincronização de dados para a mesma instância RDS?
Sim. As duas tarefas não interferem uma na outra. Uma tarefa de rastreamento de alterações e uma tarefa de sincronização de dados são dois tipos de tarefas independentes que podem coexistir na mesma instância RDS sem interferência mútua.
Problemas de validação de dados
Quais são os motivos para inconsistência de dados em uma tarefa de validação de dados?
As causas comuns são as seguintes:
A tarefa de migração ou sincronização apresenta atraso.
Uma coluna com valor padrão foi adicionada ao banco de dados de origem e a tarefa apresenta atraso.
Dados foram gravados no banco de dados de destino a partir de fontes diferentes do DTS.
Uma operação DDL foi executada no banco de dados de origem de uma tarefa com o recurso de mesclagem de várias tabelas ativado.
A tarefa de migração ou sincronização utilizou o recurso de mapeamento de nomes de banco de dados, tabelas e colunas.
Por que uma tarefa de validação de schema relata uma diferença em isRelHasoids?
Em versões do PostgreSQL anteriores à 12, é possível adicionar um campo de identificador de objeto globalmente único (OID) especificando WITH OIDS ao criar uma tabela. Se a origem de uma tarefa de validação de estrutura tiver tabelas criadas com WITH OIDS, e o destino for uma versão posterior do PostgreSQL que não suporta WITH OIDS, uma diferença isRelHasoids será detectada.
Preciso me preocupar com uma diferença isRelHasoids relatada por uma tarefa de validação de schema?
Não, não precisa.
O DTS sincronizará ou migrará o campo identificador de objeto (OID)?
O campo identificador de objeto (OID) é gerado automaticamente ao especificar WITH OIDS. Independentemente de o destino suportar esse campo, o DTS não sincronizará nem migrará esses dados.
Como verifico se uma tabela tem um campo identificador de objeto (OID)?
No comando, substitua <table_name> pelo nome da tabela a ser consultada.
Comando SQL:
SELECT relname AS table_name, relhasoids AS has_oids FROM pg_class WHERE relname = '<table_name>' AND relkind = 'r';Comando do cliente:
\d+ <table_name>
Como soluciono inconsistências de dados no relatório de verificação completa de dados?
Resolva o problema executando as etapas a seguir:
Verifique os valores de origem e de destino para as colunas correspondentes no relatório de verificação para identificar os campos e valores inconsistentes específicos.
Com base no relatório de verificação, faça login manualmente nos bancos de dados de origem e de destino e compare os valores diferentes para determinar se são esperados.
Confirme que nenhum dado está sendo gravado nos bancos de dados de origem ou de destino durante a verificação. Se isso não puder ser garantido, recomendamos pausar as gravações no banco de dados de origem durante horários de baixa demanda e reiniciar a verificação.
Se a inconsistência persistir, ative temporariamente o SQL Insight (pagamento conforme o uso) nos bancos de dados de origem e de destino para verificar se os campos correspondentes foram modificados revisando os logs de auditoria.
Diferenças em certos atributos, como
SECURITY_TYPE, são comportamentos esperados e não exigem nenhuma ação.Uma verificação completa de dados bem-sucedida comprova a consistência dos dados após modificações de backend não padronizadas.
Inconsistências na verificação completa de dados geralmente não estão relacionadas a diferenças estruturais. Recomendamos executar manualmente
count(*)para comparar as contagens de registros nos bancos de dados de origem e de destino para uma verificação adicional.
Por que o progresso da tarefa DTS ainda aparece incompleto (como 41%) após a conclusão da transferência de dados?
A porcentagem de progresso da tarefa DTS inclui duas fases: transferência de dados (migração completa de dados) e verificação de dados. Após a conclusão da migração completa de dados, a porcentagem restante do progresso representa o processo contínuo de verificação de dados. A verificação de dados é uma fase independente de verificação de consistência que é executada após a transferência completa de dados. A tarefa geral só é concluída quando o progresso da verificação atinge 100%.
Se precisar verificar os dados imediatamente após a conclusão da transferência, conecte-se manualmente ao banco de dados de destino para validar os dados sem esperar que o progresso da verificação atinja 100%.
Causas e soluções para consultas SQL lentas durante a verificação completa de dados
Causa: O DTS lê dados de tabelas grandes em fragmentos por ID de chave primária durante a verificação completa de dados. Quando o volume de dados é grande, as consultas fragmentadas podem levar muito tempo, o que pode causar consultas SQL lentas no banco de dados de origem.
Solução:
Primeiro, verifique se a tarefa de verificação completa de dados parou. Se a tarefa de verificação tiver parado, tais consultas não devem mais ser geradas.
Se a tarefa de verificação ainda estiver em execução e estiver afetando seu negócio, recomendamos executar a verificação completa de dados durante horários de baixa demanda, ou pausar a tarefa de verificação e reiniciá-la nesses horários.
Outros problemas
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 dados de destino pode causar falha na tarefa do DTS. Durante a migração ou sincronização de dados, se você executar operações nos objetos a serem migrados ou sincronizados no banco de dados de destino, isso poderá causar conflitos de chave primária, ausência de registros de atualização ou outras situações, resultando eventualmente na falha da tarefa do DTS. No entanto, você pode executar operações que não interromperão a tarefa do DTS, como criar uma tabela na instância de destino e gravar nela. Como essa tabela não faz parte dos objetos de migração ou sincronização, ela não causará falha na tarefa do DTS.
Como o DTS lê as informações do banco de dados da instância de origem e migra ou sincroniza seus dados completos, dados de schema e dados incrementais para a instância de destino, os dados modificados no banco de dados de destino durante a tarefa podem ser sobrescritos pelos dados migrados ou sincronizados do banco de dados de origem.
Dados podem ser gravados nos bancos de dados de origem e de destino simultaneamente enquanto uma tarefa de sincronização ou migração de dados está em execução?
Sim, mas se dados forem gravados no banco de dados de destino a partir de outras fontes além do DTS enquanto a instância do DTS estiver em execução, isso poderá causar anomalias nos dados do banco de dados de destino ou na própria instância do DTS.
O que acontece se eu alterar a senha do banco de dados de origem ou de destino enquanto uma instância do DTS está em execução?
A instância do DTS relatará um erro e será interrompida. Clique no ID da instância para visualizar os detalhes da instância e modifique a senha da conta de origem ou de destino na aba Basic Information. Em seguida, acesse a aba Task Management e reinicie o módulo que relatou o erro na seção Basic Information.
Por que alguns bancos de dados de origem ou de destino não têm um tipo de conexão por IP público?
Isso está relacionado ao tipo de conexão do banco de dados de origem ou de destino, ao tipo de tarefa e ao tipo de banco de dados. Por exemplo, para uma origem do tipo banco de dados MySQL, as tarefas de migração e rastreamento podem optar por se conectar usando um endereço IP público, enquanto as tarefas de sincronização não suportam conexões por IP público.
Há suporte para migração de dados ou sincronização de dados entre contas diferentes?
Os bancos de dados de origem e de destino podem ser a mesma instância de banco de dados?
Sim. Se a origem e o destino forem a mesma instância, use o recurso de mapeamento para isolar os dados. Caso contrário, a instância do DTS poderá falhar ou poderá haver perda de dados. Mapeamento de banco de dados, tabela e coluna.
Por que uma tarefa com Redis como destino relata o erro "OOM command not allowed when used memory > 'maxmemory'"?
Isso pode ocorrer porque o espaço de armazenamento da instância Redis de destino é insuficiente. Se o tipo de arquitetura da instância Redis de destino for cluster, também pode ser que um shard tenha atingido seu limite de memória. Atualize as especificações da instância de destino.
O que é a política de acesso AliyunDTSRolePolicy e para que serve?
A política AliyunDTSRolePolicy permite que o DTS acesse recursos cloud, como RDS e ECS, na conta atual ou em contas cruzadas. Ela chama informações relevantes de recursos cloud quando você configura uma tarefa de migração, sincronização ou rastreamento. Conceder permissões ao DTS para acessar recursos cloud.
Como realizo a autorização de função RAM?
Ao fazer login no console pela primeira vez, o DTS solicitará que você autorize a função AliyunDTSDefaultRole. Siga as instruções para ir à página de autorização do RAM. Conceder permissões ao DTS para acessar recursos cloud.
Faça login no console com uma conta Alibaba Cloud para executar a operação.
A senha da conta inserida para uma tarefa do DTS pode ser modificada?
Modifique a senha da conta do banco de dados para uma tarefa do DTS. Clique no ID da instância para abrir a página de detalhes da instância. Na aba Basic Information, clique em Change Password para alterar a senha do banco de dados de origem ou de destino.
A senha da conta do sistema de uma tarefa do DTS não pode ser modificada.
Por que uma tabela do MaxCompute tem o sufixo "_base"?
-
Sincronização inicial de schema.
O DTS sincroniza as definições de schema das tabelas a serem sincronizadas do banco de dados de origem para o MaxCompute. Durante a inicialização, o DTS adiciona o sufixo
_baseaos nomes das tabelas. Por exemplo, se a tabela de origem forcustomer, a tabela no MaxCompute se tornarácustomer_base. -
Sincronização inicial completa de dados.
O DTS sincroniza todos os dados históricos das tabelas no banco de dados de origem para as tabelas
_baseno MaxCompute. Por exemplo, os dados são sincronizados da tabelacustomerno banco de dados de origem para a tabelacustomer_baseno MaxCompute. Esses dados servem como linha de base para a subsequente sincronização incremental de dados.NotaEsta tabela também é conhecida como tabela de linha de base completa.
-
Sincronização incremental de dados.
O DTS cria uma tabela de log incremental no MaxCompute. O nome da tabela é o nome da tabela de destino com o sufixo
_log, comocustomer_log. O DTS então sincroniza dados incrementais do banco de dados de origem para esta tabela em tempo real.NotaPara mais informações sobre a estrutura da tabela de log incremental, consulte Schema da tabela de log incremental.
O que devo fazer se não conseguir obter o tópico do Kafka?
O broker do Kafka configurado atualmente pode não ter informações de tópico. Execute o seguinte comando para verificar a distribuição de brokers do tópico:
./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name
Posso criar uma instância MySQL localmente como banco de dados secundário para uma instância RDS?
Sim, é possível. Use o recurso de migração de dados do Data Transmission Service (DTS) para configurar a sincronização de dados em tempo real do RDS para uma instância MySQL autogerenciada local, alcançando uma arquitetura primário-secundário.
Como copio dados de uma instância RDS para uma instância RDS recém-criada?
Selecione migração de schema, migração completa e migração incremental como tipos de migração. Migração de dados entre instâncias do ApsaraDB RDS.
O DTS suporta a cópia de um banco de dados dentro de uma instância RDS para criar um novo banco de dados idêntico, exceto pelo nome?
Sim. O recurso de mapeamento de nomes de objetos do DTS permite copiar um banco de dados dentro de uma instância RDS e criar um novo banco de dados idêntico ao original, diferindo apenas no nome.
O que fazer se uma instância do DTS apresentar atraso constante?
As possíveis causas são:
Várias tarefas do DTS foram criadas para a instância de banco de dados de origem usando contas diferentes, o que resultou em alta carga na instância. Utilize a mesma conta para criar as tarefas.
-
A instância de banco de dados de destino tem memória insuficiente. Reorganize suas cargas de trabalho e reinicie a instância de banco de dados de destino. Se o problema persistir, atualize as especificações da instância de destino ou realize um failover primário/secundário.
NotaUm failover primário/secundário pode causar uma desconexão transitória. Certifique-se de que sua aplicação possua um mecanismo de reconexão automática.
O que fazer se os campos ficarem todos em minúsculas após a sincronização ou migração para o banco de dados de destino no console legado?
Utilize o novo console e o recurso de política de maiúsculas e minúsculas para nomes de objetos do banco de dados de destino. Política de maiúsculas e minúsculas para nomes de objetos do banco de dados de destino.
É possível retomar uma tarefa do DTS pausada?
Em geral, uma tarefa do DTS pausada há no máximo 24 horas pode ser retomada normalmente. Se o volume de dados for pequeno, tarefas pausadas por até 7 dias também podem ser retomadas sem problemas. Recomendamos não pausar uma tarefa por mais de 6 horas.
Por que o progresso recomeça do zero após pausar e reiniciar uma tarefa?
Após o reinício da tarefa, o DTS consulta novamente os dados já concluídos e depois continua processando os dados restantes. Durante esse processo, o progresso exibido pode divergir do progresso real devido à latência.
Qual é o princípio da alteração DDL sem bloqueio?
Para conhecer os principais fundamentos da alteração DDL sem bloqueio, consulte Principais fundamentos.
O DTS permite pausar a sincronização ou migração de uma tabela específica?
Não.
Preciso comprar uma nova tarefa se ela falhar?
Não. Basta reconfigurar a tarefa original.
O que acontece se várias tarefas gravarem dados no mesmo destino?
Isso pode causar inconsistência de dados.
Por que a instância continua bloqueada após a renovação?
Após renovar uma instância do DTS bloqueada, leva algum tempo para que o desbloqueio seja concluído. Aguarde alguns instantes.
Posso alterar o grupo de recursos de uma instância do DTS?
Sim. Na página Basic Information da instância, clique em Modification ao lado de Resource Group Name na área Basic Information.
O DTS possui uma ferramenta de análise de binary log?
Não, o DTS não dispõe de ferramenta para análise de binary log.
É normal uma tarefa incremental exibir sempre 95% de progresso?
Sim. Uma tarefa incremental é contínua e nunca é concluída definitivamente, portanto o progresso não atingirá 100%.
Por que uma tarefa do DTS não foi liberada após mais de 7 dias?
Ocasionalmente, uma tarefa congelada pode ser mantida por mais de 7 dias.
Posso modificar a porta de uma tarefa já criada?
Essa operação não é suportada.
A instância RDS for MySQL associada ao PolarDB-X 1.0 em uma tarefa do DTS pode ter suas especificações reduzidas?
A redução de especificações não é recomendada. Essa operação aciona um failover primário/secundário, o que pode resultar em perda de dados.
As instâncias de origem ou destino podem ter suas especificações alteradas durante a execução de uma tarefa do DTS?
Alterar as especificações das instâncias de origem ou destino enquanto uma tarefa do DTS está em execução pode causar latência na tarefa ou perda de dados. Não recomendamos modificar as especificações dessas instâncias durante a execução.
Qual é o impacto de uma tarefa do DTS nas instâncias de origem e destino?
A sincronização inicial completa dos dados consome parte dos recursos de leitura e gravação dos bancos de dados de origem e destino, o que pode aumentar a carga nessas instâncias. Recomendamos executar tarefas completas fora dos horários de pico.
Qual é a latência aproximada de uma tarefa do DTS?
Não é possível estimar a latência de uma tarefa do DTS, pois ela depende de diversos fatores, como a carga de execução da instância de origem, a largura de banda da rede de transmissão, a latência da rede e o desempenho de gravação da instância de destino.
Se o console do Data Transmission Service redirecionar automaticamente para o console do Data Management DMS, como retornar ao console legado do Data Transmission Service?
No console do DMS, clique no ícone
no canto inferior direito e, em seguida, clique em
para voltar à versão anterior do console do Data Transmission Service.
O DTS suporta criptografia de dados?
O DTS oferece acesso seguro ao banco de dados de origem ou destino por meio de criptografia Secure Sockets Layer (SSL) para ler dados da origem ou gravar dados no destino. No entanto, ele não suporta a criptografia de dados em trânsito durante a transmissão.
O DTS suporta ClickHouse como origem ou destino?
Não.
O DTS suporta o AnalyticDB for MySQL 2.0 como origem ou destino?
O AnalyticDB for MySQL 2.0 é suportado apenas como destino, e a solução com AnalyticDB for MySQL 2.0 como destino ainda não está disponível no novo console. A configuração só pode ser feita no console legado.
Por que não consigo ver uma tarefa recém-criada no console?
Você pode ter selecionado a lista de tarefas incorreta ou aplicado filtros indevidos. Selecione as opções de filtro corretas na lista de tarefas correspondente, como a região e o grupo de recursos adequados.
Verifique se a lista suspensa de escopo de recursos All Resources e a lista suspensa de seleção de Region (como China (Hangzhou))) na barra de navegação superior do console estão configuradas corretamente. Configurações incompatíveis de escopo de recursos ou região podem tornar as tarefas recém-criadas invisíveis.
Os itens de configuração desabilitados de uma tarefa criada podem ser modificados?
Essa operação não é suportada.
Como configurar alertas e limiares de latência?
O DTS oferece monitoramento e alertas. Defina regras de alerta para métricas importantes e acompanhe o status de execução. Configurar monitoramento e alertas.
Consigo visualizar a causa da falha de uma tarefa que está com erro há muito tempo?
Não. Se uma tarefa estiver com falha por um longo período (por exemplo, mais de 7 dias), os logs relevantes serão apagados e a causa da falha não poderá ser consultada.
Uma tarefa que está com falha há muito tempo pode ser restaurada?
Não. Se uma tarefa permanecer com falha por um longo período (por exemplo, mais de 7 dias), os logs relevantes serão apagados e não poderão ser restaurados. Será necessário reconfigurar a tarefa.
O que é a conta rdsdt_dtsacct?
Se você não criou a conta rdsdt_dtsacct, ela pode ter sido criada pelo próprio DTS. Em algumas instâncias de banco de dados, o DTS cria automaticamente a conta interna rdsdt_dtsacct para estabelecer conexão com as instâncias de origem e destino.
Como consultar informações sobre heap tables, tabelas sem chave primária, tabelas compactadas, tabelas com colunas computadas e tabelas com colunas esparsas no SQL Server?
Execute as instruções SQL abaixo para verificar se o banco de dados de origem contém tabelas nesses cenários:
-
Verificar heap tables no banco de dados de origem:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0); -
Verificar tabelas sem chave primária:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK'); -
Verificar colunas de chave primária que não estão incluídas no índice clusterizado:
SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter); -
Verificar tabelas compactadas no banco de dados de origem:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0; -
Verificar tabelas que contêm colunas computadas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1); -
Verificar tabelas que contêm colunas esparsas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);
O que fazer se os schemas de origem e destino estiverem inconsistentes?
Tente utilizar o recurso de mapeamento para mapear colunas entre a origem e o destino. Mapeamento de banco de dados, tabela e coluna.
A modificação do tipo de coluna não é suportada.
O mapeamento de banco de dados, tabela e coluna permite modificar o tipo da coluna?
Não.
O DTS permite limitar a velocidade de leitura do banco de dados de origem?
Não. Avalie o desempenho do banco de dados de origem (como IOPS e largura de banda de rede) antes de iniciar a tarefa. Recomendamos também executar a tarefa fora dos horários de pico.
Como limpar documentos órfãos em uma instância de cluster fragmentado do MongoDB?
Verificar documentos órfãos
-
Conecte-se à instância de cluster fragmentado do MongoDB usando o mongo shell.
Para se conectar ao ApsaraDB for MongoDB, consulte Conectar-se a uma instância de cluster fragmentado usando o mongo shell.
-
Execute o comando abaixo para alternar para o banco de dados de destino.
use <db_name> -
Execute o comando abaixo para visualizar informações sobre documentos órfãos.
db.<coll_name>.find().explain("executionStats")NotaAnalise o
executionStatsde cada shard. Se o campochunkSkipsno estágioSHARDING_FILTERfor diferente de 0, existem documentos órfãos no shard correspondente.A saída de exemplo abaixo indica que 102 documentos ("nReturned" : 102) foram retornados no estágio
FETCHantes do estágioSHARDING_FILTER. Em seguida, dois documentos órfãos ("chunkSkips" : 2) foram filtrados no estágioSHARDING_FILTER. Por fim, 100 documentos ("nReturned" : 100) foram retornados."stage" : "SHARDING_FILTER", "nReturned" : 100, ...... "chunkSkips" : 2, "inputStage" : { "stage" : "FETCH", "nReturned" : 102,Saiba mais sobre o estágio
SHARDING_FILTERno Manual do MongoDB.
Limpar documentos órfãos
Se você tiver vários bancos de dados, será necessário limpar os documentos órfãos de cada banco individualmente.
ApsaraDB for MongoDB
A execução do script de limpeza em uma instância com versão principal anterior ao MongoDB 4.2 ou versão secundária anterior a 4.0.6 causará um erro. Para verificar a versão atual da sua instância, consulte Versões secundárias do MongoDB. Para atualizar a versão principal ou secundária, consulte Atualizar a versão principal de um banco de dados e Atualizar a versão secundária de um banco de dados.
Utilize o comando cleanupOrphaned para limpar documentos órfãos. O procedimento difere ligeiramente entre o MongoDB 4.4 e versões posteriores e o MongoDB 4.2 e versões anteriores.
MongoDB 4.4 e versões posteriores
-
Em um servidor com conectividade à sua instância de cluster fragmentado, crie um script JavaScript (JS) chamado
cleanupOrphaned.js.NotaEste script limpa documentos órfãos de todas as coleções em vários bancos de dados distribuídos por múltiplos shards. Caso precise limpar documentos órfãos de uma coleção específica, modifique o script JS conforme necessário.
// List of shard names var shardNames = ["shardName1", "shardName2"]; // List of databases var databasesToProcess = ["database1", "database2", "database3"]; shardNames.forEach(function(shardName) { // Iterate over the specified list of databases databasesToProcess.forEach(function(dbName) { var dbInstance = db.getSiblingDB(dbName); // Get the names of all collections in the database instance var collectionNames = dbInstance.getCollectionNames(); // Iterate over each collection collectionNames.forEach(function(collectionName) { // The full collection name var fullCollectionName = dbName + "." + collectionName; // Build the cleanupOrphaned command var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName } }; // Execute the command var result = db.adminCommand(command); if (result.ok) { print("Cleaned up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); printjson(result); } else { print("Failed to clean up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); } }); }); });No script, modifique os valores dos parâmetros
shardNamesedatabasesToProcess:shardNames: Array de IDs dos shards nos quais os documentos órfãos devem ser limpos. Obtenha os IDs dos shards na Lista de Shards, na página Basic Information da instância. Exemplo:d-bp15a3796d3a****.databasesToProcess: Array com os nomes dos bancos de dados onde a limpeza de documentos órfãos será realizada.
-
No diretório onde o script
cleanupOrphaned.jsestá localizado, execute o comando abaixo para limpar os documentos órfãos.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txtParâmetro
Descrição
<Mongoshost>Endereço de conexão do nó mongos da instância de cluster fragmentado. Exemplo:
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Número da porta do nó mongos da instância de cluster fragmentado. O valor padrão é 3717.
<database>Nome do banco de dados de autenticação. Trata-se do banco ao qual a conta de banco de dados pertence.
<username>Conta do banco de dados.
<password>Senha da conta do banco de dados.
output.txtArquivo de saída para os resultados da execução.
MongoDB 4.2 e versões anteriores
-
Em um servidor com conectividade à sua instância de cluster fragmentado, crie um script JS chamado
cleanupOrphaned.js.NotaEste script limpa documentos órfãos de uma coleção específica em um banco de dados específico distribuídos por múltiplos shards. Para limpar documentos órfãos de várias coleções, modifique o parâmetro
fullCollectionNamee execute o script várias vezes, ou adapte o script para iterar pelas coleções.function cleanupOrphanedOnShard(shardName, fullCollectionName) { var nextKey = { }; var result; while ( nextKey != null ) { var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey } }; result = db.adminCommand(command); printjson(result); if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) { print("Unable to complete at this time: failure or timeout.") break } nextKey = result.results[shardName].stoppedAtKey; } print("cleanupOrphaned done for coll: " + fullCollectionName + " on shard: " + shardName) } var shardNames = ["shardName1", "shardName2", "shardName3"] var fullCollectionName = "database.collection" shardNames.forEach(function(shardName) { cleanupOrphanedOnShard(shardName, fullCollectionName); });No script, modifique os valores dos parâmetros
shardNamesefullCollectionName:shardNames: Array de IDs dos shards nos quais os documentos órfãos devem ser limpos. Obtenha os IDs dos shards na Lista de Shards, na página Basic Information da instância. Exemplo:d-bp15a3796d3a****.fullCollectionName: Nome da coleção onde os documentos órfãos serão limpos, no formatodatabase.collection.
-
No diretório onde o script
cleanupOrphaned.jsestá localizado, execute o comando abaixo para limpar os documentos órfãos.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txtParâmetro
Descrição
<Mongoshost>Endereço de conexão do nó mongos da instância de cluster fragmentado. Exemplo:
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Número da porta do nó mongos da instância de cluster fragmentado. O valor padrão é 3717.
<database>Nome do banco de dados de autenticação. Trata-se do banco ao qual a conta de banco de dados pertence.
<username>Conta do banco de dados.
<password>Senha da conta do banco de dados.
output.txtArquivo de saída para os resultados da execução.
MongoDB autogerenciado
-
Em um servidor com conectividade ao seu banco de dados MongoDB autogerenciado, baixe o arquivo de script cleanupOrphaned.js.
wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js" -
Modifique o arquivo de script cleanupOrphaned.js. Substitua
testpelo nome do banco de dados no qual deseja limpar os documentos órfãos.ImportanteSe houver vários bancos de dados, repita a Etapa 2 e a Etapa 3 para cada banco.
function cleanupOrphaned(coll) { var nextKey = { }; var result; while ( nextKey != null ) { result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } ); if (result.ok != 1) print("Unable to complete at this time: failure or timeout.") printjson(result); nextKey = result.stoppedAtKey; } } var dbName = "test" db = db.getSiblingDB(dbName) db.getCollectionNames().forEach(function(collName) { cleanupOrphaned(dbName + "." + collName); }); -
Execute o comando abaixo para limpar documentos órfãos de todas as coleções no banco de dados especificado dentro de um shard.
NotaRepita esta etapa para cada shard.
mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.jsNota<Shardhost>: Endereço IP do shard.
<Primaryport>: Porta de serviço do nó primário no shard.
<database>: Nome do banco de dados de autenticação. Trata-se do banco ao qual a conta de banco de dados pertence.
<username>: Conta do banco de dados.
<password>: Senha da conta.
Exemplo:
Neste exemplo, o banco de dados MongoDB autogerenciado possui três shards. Execute o comando para cada shard a fim de limpar os documentos órfãos.
mongo --host 172.16.1.10 --port 27018 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
Tratamento de exceções
Se existirem cursores ociosos no namespace de um documento órfão, o processo de limpeza pode não ser concluído, e o log do mongod conterá a seguinte mensagem:
Deletion of DATABASE.COLLECTION range [{ KEY: VALUE1 }, { KEY: VALUE2 }) will be scheduled after all possibly dependent queries finish
Conecte-se a uma instância mongod via mongo shell e execute o comando abaixo para verificar a existência de cursores ociosos no shard atual. Se houver cursores ociosos, limpe-os usando o comando restart mongod ou killCursors. Depois, tente limpar os documentos órfãos novamente. Consulte o ticket no JIRA.
db.getSiblingDB("admin").aggregate( [{ $currentOp : { allUsers: true, idleCursors: true } },{ $match : { type: "idleCursor" } }] )
Como lidar com distribuição desigual de dados em um cluster fragmentado do MongoDB?
Ative o recurso Balancer e utilize o pré-particionamento para resolver a assimetria de dados. Esse problema ocorre quando a maior parte dos dados é gravada em um único shard.
Ativar o Balancer
Se o Balancer estiver desativado ou se a janela ativa do Balancer ainda não tiver iniciado, ative o Balancer ou cancele temporariamente a janela do Balancer para iniciar o balanceamento de dados imediatamente.
Conecte-se à instância de cluster fragmentado do MongoDB.
-
Na janela de comandos do nó mongos, alterne para o banco de dados config.
use config -
Execute os comandos abaixo conforme necessário.
-
Ativar o recurso Balancer
sh.setBalancerState(true) -
Cancelar temporariamente a janela do Balancer
db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )
-
Pré-particionamento
O MongoDB suporta dois métodos de fragmentação: fragmentação por intervalo e fragmentação por hash. O pré-particionamento distribui os chunks uniformemente entre vários nós de shard, garantindo um balanceamento de carga ideal durante a sincronização ou migração de dados pelo DTS.
Fragmentação por hash
Utilize o parâmetro numInitialChunks para implementar o pré-particionamento. O valor padrão desse parâmetro é number of shards × 2 e o valor máximo permitido é number of shards × 8192. sh.shardCollection().
sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})
Fragmentação por intervalo
Se o MongoDB de origem for um cluster fragmentado, utilize os dados em
config.chunkspara obter o intervalo de chunks da tabela fragmentada. Em seguida, use esse intervalo como referência para o<split_value>nos comandos de pré-fragmentação.-
Caso o MongoDB de origem seja um conjunto de réplicas, utilize apenas o comando
findpara determinar o intervalo da chave de fragmentação e definir um ponto de divisão adequado.# Get the minimum value of the shard key db.<coll>.find().sort({<shardKey>:1}).limit(1) # Get the maximum value of the shard key db.<coll>.find().sort({<shardKey>:-1).limit(1)
Formato do comando
O exemplo a seguir utiliza o comando splitAt. Consulte também sh.splitAt(), sh.splitFind() e Split Chunks in a Sharded Cluster.
sh.splitAt("<db>.<coll>", {"<shardKey>":<split_value>})
Exemplo de instrução
sh.splitAt("test.test", {"id":0})
sh.splitAt("test.test", {"id":50000})
sh.splitAt("test.test", {"id":75000})
Após concluir a operação de pré-fragmentação, execute o comando sh.status() no nó mongos para verificar os resultados.
Como definir o número de instâncias exibidas por página na lista de tarefas no console?
Os passos a seguir utilizam uma instância de sincronização como exemplo.
-
Acesse a página da lista de tarefas de sincronização da região de destino. Escolha um dos dois métodos abaixo:
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.
Role até a parte inferior da página.
-
No canto inferior direito da página, selecione Items per page.
NotaÉ possível definir Items per page como 10, 20 ou 50.
O que fazer se uma instância do DTS reportar tempo limite de conexão com o ZooKeeper?
Tente reiniciar a instância para restaurar a conexão. Para obter instruções sobre como reiniciar uma instância, consulte Start a DTS instance.
Por que um bloco CIDR do DTS é readicionado automaticamente após ser excluído no CEN?
Isso pode ocorrer se você utilizar um roteador de trânsito da edição básica do Cloud Enterprise Network (CEN) para conectar seu banco de dados ao DTS. Ao criar uma instância do DTS usando esse banco de dados, o serviço adiciona automaticamente o intervalo de endereços IP do servidor ao roteador correspondente, mesmo que o bloco CIDR do DTS tenha sido excluído no CEN.
É possível exportar tarefas do DTS?
Não há suporte para essa funcionalidade.
Como usar Java para chamar uma OpenAPI?
A chamada de uma OpenAPI em Java é semelhante à do Python. Consulte o exemplo de chamada do SDK para Python. Acesse a página do SDK do Data Transmission Service DTS, escolha a linguagem de programação desejada em All Languages e visualize o código de exemplo.
Como configurar o recurso ETL para uma tarefa de sincronização ou migração via API?
Configure esse recurso utilizando parâmetros comuns como etlOperatorCtl e etlOperatorSetting no parâmetro Reserve. Consulte ConfigureDtsJob e Reserve parameter description.
O DTS oferece suporte ao Azure SQL Database?
Sim. Para utilizar o Azure SQL Database como banco de dados de origem, defina SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization.
Os dados do banco de origem são mantidos após a conclusão da sincronização ou migração do DTS?
Sim. O DTS não exclui dados no banco de origem. Caso não precise mais desses dados, você poderá excluí-los manualmente.
É possível ajustar a taxa após a execução de uma instância de sincronização ou migração?
Sim. Consulte Adjust the migration rate.
O DTS permite amostragem de dados para sincronização ou migração por período de tempo?
Não.
Preciso criar tabelas de dados manualmente no banco de destino durante a sincronização ou migração?
Para instâncias do DTS que suportam tarefas de esquema de banco de dados e tabelas (sincronização de esquema ou migração de esquema), se Schema Synchronization estiver selecionado em Synchronization Types ou Schema Migration estiver selecionado em Migration Types, não será necessário criar tabelas de dados manualmente no banco de destino.
As redes dos bancos de dados de origem e destino precisam estar conectadas durante a sincronização ou migração?
Não, isso não é necessário.
Preciso configurar autorização RAM ao configurar uma tarefa DTS entre contas usando a rede pública?
Não. Ao configurar uma tarefa do DTS, defina o Access Method da instância do banco de dados como Public IP Address e conclua a configuração.
Tarefas de sincronização de dados não oferecem suporte à conexão com uma instância de banco de dados pelo método Public IP Address.
O uso do DTS para sincronização ou migração de dados sobrescreve os dados existentes no destino?
Para sincronização de dados, o comportamento padrão do DTS e os parâmetros relevantes são os seguintes:
Comportamento padrão do DTS
Se ocorrer um conflito de chave primária ou única durante a execução de uma tarefa de sincronização:
-
Quando os esquemas das tabelas forem idênticos e um registro no banco de destino possuir o mesmo valor de chave primária ou única que um registro no banco de origem:
Durante a sincronização completa, o DTS mantém o registro no cluster de destino. O registro correspondente do banco de origem não é sincronizado.
Na sincronização incremental, o registro do banco de origem sobrescreve o registro no banco de destino.
Se os esquemas das tabelas forem diferentes, a sincronização inicial de dados poderá falhar. Isso pode resultar na sincronização de apenas dados parciais de colunas ou em uma falha completa. Proceda com cautela.
Parâmetros relacionados
Durante o processo de configuração da tarefa, utilize o parâmetro Processing Mode of Conflicting Tables para controlar como o DTS lida com tabelas existentes.
-
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. Caso exista, a pré-verificação falha e a tarefa de sincronização de dados não inicia.
NotaSe não for possível excluir ou renomear a tabela com o mesmo nome no banco de 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.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seus negócios em risco. Por exemplo:
-
Quando os esquemas das tabelas forem idênticos e um registro no banco de destino possuir o mesmo valor de chave primária ou única que um registro no banco de origem:
Durante a sincronização completa, o DTS mantém o registro no cluster de destino. O registro correspondente do banco de origem não é sincronizado.
Na sincronização incremental, o registro do banco de origem sobrescreve o registro no banco de destino.
Se os esquemas das tabelas forem diferentes, a sincronização inicial de dados poderá falhar. Isso pode resultar na sincronização de apenas dados parciais 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 do DTS, desde que suas operações comerciais permitam.
Se os dados existentes nos bancos de origem e destino não apresentarem nenhum conflito (por exemplo, ao migrar dados de vários bancos para um único banco), configure a tarefa de migração sem selecionar Schema Migration. No entanto, certifique-se de que as chaves primárias e únicas nos bancos de origem e destino não entrem em conflito e que não existam tabelas sem chaves primárias. Nesse cenário, o recurso de verificação de dados não funcionará corretamente, pois os dados nos bancos de origem e destino já estarão inconsistentes.