As tarefas de migração completa de dados ou de sincronização podem travar ou apresentar lentidão por vários motivos. Este guia ajuda você a identificar a causa e retomar a execução da tarefa.
A causa mais comum é a insuficiência de recursos no banco de dados de origem ou de destino. Comece a investigação por esse ponto.
Possíveis causas
O banco de dados de origem (source) tem um grande volume de dados, ou as tabelas migradas não possuem chave primária.
Várias tarefas do DTS estão em execução simultânea no mesmo banco de dados de origem.
O DTS não consegue se conectar ao banco de dados de origem ou de destino devido a restrições de lista de permissões, falta de permissões ou credenciais inválidas.
O banco de dados de origem ou de destino apresenta um gargalo de desempenho, ou a largura de banda da rede é insuficiente.
Não é possível gravar dados no banco de dados de destino: ele está em modo somente leitura, o disco está cheio ou um deadlock bloqueia as gravações.
Solução de problemas
Verifique o banco de dados de origem
Estime o tempo de migração
Antes de presumir que há um erro, estime o tempo necessário para a migração:
Verifique o volume de dados dos objetos a serem migrados.
Para testar, crie e execute primeiro um lote pequeno (por exemplo, migre um subconjunto de 10 GB) e use o resultado para projetar o tempo total de migração.
Verifique tarefas simultâneas
Várias tarefas do DTS em execução simultânea competem pelos mesmos recursos do banco de dados de origem, o que pode causar escassez temporária de recursos. Para evitar contenção, execute as tarefas em janelas de tempo distintas.
Verifique as credenciais
Confirme se o DTS consegue se conectar ao banco de dados de origem com o nome de usuário e a senha configurados. Teste a conectividade a partir de um host remoto:
mysql -h<IP address or domain name of source database> -P<Port number of source database> -u<Username> -p<Password>
Verifique as configurações da lista de permissões
Se a origem for um banco de dados autogerenciado, confirme se os blocos CIDR do servidor DTS estão incluídos nas configurações de segurança do banco de dados. Para obter instruções, consulte Whitelist DTS IP ranges for your user-created database.
Verifique as chaves primárias
Tabelas sem chaves primárias ou índices exclusivos podem desacelerar significativamente a migração completa de dados. Além disso, o DTS pode gravar registros duplicados no banco de dados de destino. Verifique se as tabelas grandes possuem chave primária:
show create table <Database name>.<Table name>;
Verifique o banco de dados de destino
Verifique as credenciais
Confirme se o DTS consegue se conectar ao banco de dados de destino com o nome de usuário e a senha configurados. Teste a conectividade a partir de um host remoto:
mysql -h<IP address or domain name of destination database> -P<Port number of destination database> -u<Username> -p<Password>
Verifique as configurações da lista de permissões
Se o destino for um banco de dados autogerenciado, confirme se os blocos CIDR do servidor DTS estão incluídos nas configurações de segurança do banco de dados. Para obter instruções, consulte Whitelist DTS IP ranges for your user-created database.
Verifique o status de somente leitura
Se o banco de dados de destino estiver em modo somente leitura, o DTS não conseguirá gravar dados nele. Para consultar o status de somente leitura de um banco de dados MySQL:
show global variables like '%read_only%';
Se read_only for retornado e super_read_only estiver ON, o banco de dados está no modo somente leitura. Para alterá-lo para leitura e gravação, defina a variável:
unlock tables;
set global read_only=0;
read_only=1ouTRUEindica somente leitura;read_only=0ouFALSEindica leitura e gravação. Para obter mais detalhes, consulte a documentação do MySQL .
Verifique o espaço em disco disponível
Um disco cheio no banco de dados de destino interrompe todas as gravações. Para uma instância do ApsaraDB RDS for MySQL, verifique o uso de armazenamento no console do ApsaraDB RDS. Para obter mais detalhes, consulte Troubleshoot insufficient storage issues on an ApsaraDB RDS for MySQL instance.
Verifique gargalos de desempenho
Para uma instância do ApsaraDB RDS for MySQL, visualize a utilização da CPU, o uso de memória e a carga de E/S na página Monitoring and Alerts do console do ApsaraDB RDS. Verifique também se a instância atingiu os limites de sua especificação. Para obter mais detalhes, consulte View monitoring information e Instance types for standard primary ApsaraDB RDS for MySQL instances (original x86 architecture).
Verifique deadlocks
Se houver um deadlock, o DTS não conseguirá gravar dados no banco de dados de destino. Para diagnosticar e resolver deadlocks em um banco de dados de destino MySQL:
-
Verifique se há tabelas bloqueadas:
show OPEN TABLES where In_use > 0; -
Identifique tabelas bloqueadas ou consultas lentas:
SHOW PROCESSLIST; -
Encerre o processo de bloqueio:
KILL [CONNECTION | QUERY] thread_id
Verifique a conectividade de rede
Use comandos do sistema operacional, como ping e telnet, ou uma ferramenta de terceiros para testar a conectividade e a latência da rede entre o DTS e o banco de dados de origem ou de destino. Se a largura de banda for o fator limitante, aumente a largura de banda da rede.
Próximos passos
Se a tarefa apresentar latência durante a migração ou sincronização incremental de dados após a conclusão da fase de migração completa, consulte What do I do if latency occurs during incremental data migration or synchronization?