O Data Transmission service (DTS) migra dados de um banco de dados TiDB autogerenciado para um cluster AnalyticDB for MySQL V3.0. O DTS oferece suporte à migração de esquema, migração completa de dados e migração incremental de dados.
Como funciona a migração
A migração ocorre em até três fases sequenciais:
Migração de esquema — O DTS replica as definições das tabelas para o cluster de destino.
Migração completa de dados — O DTS lê todos os dados existentes no TiDB e os carrega no AnalyticDB for MySQL V3.0.
Migração incremental de dados (opcional) — O DTS lê eventos de alteração de um cluster Kafka e os aplica ao destino, mantendo a source e o destino sincronizados durante o cutover.
Escolha seu caminho:
Apenas migração completa (esquema + dados completos): Conclua os Pré-requisitos e acesse a seção Criar uma tarefa de migração.
Migração completa + incremental: Conclua os Pré-requisitos, configure a Coleta de dados incrementais e, em seguida, Crie uma tarefa de migração.
Pré-requisitos
Antes de começar:
Crie um cluster AnalyticDB for MySQL V3.0 com armazenamento disponível superior ao tamanho total dos dados no banco de dados TiDB de source. Consulte Create a cluster.
Conceda as permissões necessárias à conta do banco de dados listadas em Permissões necessárias.
(Apenas para migração incremental) Configure um cluster Kafka. Consulte Configurar a coleta de dados incrementais.
Permissões necessárias
|
Banco de dados |
Permissões necessárias |
|
Banco de dados TiDB |
SELECT nos objetos a serem migrados, SHOW VIEW |
|
Cluster AnalyticDB for MySQL V3.0 |
Permissões de leitura e gravação no banco de dados de destino. Consulte Create a database account. |
Faturamento
|
Tipo de migração |
Taxa de configuração da instância |
Taxa de tráfego de internet |
|
Migração de esquema e migração completa de dados |
Gratuita |
Cobrada apenas quando o Access Method do destino for Public IP Address. Consulte Visão geral do faturamento. |
|
Migração incremental de dados |
Cobrada. Consulte Visão geral do faturamento. |
Configurar a coleta de dados incrementais
Ignore esta seção se precisar apenas de migração de esquema e migração completa de dados.
A migração incremental de dados exige que o TiDB transmita eventos de alteração para um cluster Kafka. Escolha um dos métodos abaixo com base na sua versão do TiDB.
Escolher um método
|
Método |
Quando usar |
|
TiDB Binlog |
Clusters TiDB que já utilizam Pump e Drainer para replicação de binlog |
|
TiCDC |
TiDB v4.0 e posteriores; preferido para novas implantações |
Configurar parâmetros do Kafka
Antes de conectar ao DTS, aumente os seguintes parâmetros do Kafka. Sem essas alterações, o cluster Kafka pode rejeitar grandes cargas úteis de log binário do TiDB.
|
Componente |
Parâmetro |
Ação |
|
Broker Kafka |
|
Aumente para acomodar mensagens de log binário do TiDB |
|
Broker Kafka |
|
Aumente para corresponder a |
|
Consumidor Kafka |
|
Aumente para corresponder a |
Preparar um cluster Kafka
Utilize uma das opções a seguir:
Cluster Kafka autogerenciado — Implante seu próprio cluster. Consulte o site oficial do Apache Kafka.
Instância do ApsaraMQ for Kafka — Crie uma instância gerenciada. Consulte a Visão geral de introdução. Implante a instância na mesma virtual private cloud (VPC) do servidor de banco de dados TiDB.
Implante o servidor de banco de dados TiDB, o Pump (se estiver usando TiDB Binlog), o Drainer e o cluster Kafka na mesma rede interna para minimizar a latência de rede.
Após preparar o cluster Kafka, crie um tópico com exactly one partition. O DTS lê apenas da partição com ID 0. Partições adicionais causam perda de dados.
Usar o TiDB Binlog
Implante o Pump e o Drainer em servidores na mesma rede interna do banco de dados TiDB. Consulte a Implantação de cluster TiDB Binlog.
Edite o arquivo de configuração do Drainer para apontar para o cluster Kafka. Consulte o Guia do usuário do cliente consumidor de Binlog.
Verifique se o servidor TiDB consegue acessar o cluster Kafka.
Adicione os blocos CIDR dos servidores DTS à lista de permissões do banco de dados TiDB. Consulte Adicionar os blocos CIDR dos servidores DTS.
Usar o TiCDC
Instale o TiCDC usando o TiUP para adicionar um novo nó TiCDC ou expandir um nó existente no cluster TiDB. Consulte Implantar e manter o TiCDC.
Crie um changefeed para replicar dados incrementais para o Kafka. Use
tiup cdc cli changefeed createcomo comando inicial. Consulte Replicar dados para o Kafka.Verifique se o servidor TiDB consegue acessar o cluster Kafka.
Limitações
Revise estas limitações antes de iniciar a tarefa.
Banco de dados de source
O servidor TiDB deve ter largura de banda de saída suficiente. Largura de banda baixa reduz a velocidade da migração.
As tabelas a serem migradas devem ter restrições PRIMARY KEY ou UNIQUE com todos os campos únicos. Tabelas sem essas restrições podem gerar registros duplicados no destino.
Se você renomear tabelas ou colunas durante a migração, uma única tarefa suporta até 1.000 tabelas. Para mais de 1.000 tabelas, divida a migração em várias tarefas ou migre o banco de dados inteiro em uma única tarefa.
Para migrar dados incrementais do banco de dados TiDB de source, implante um cluster Kafka e instale os componentes relacionados para que o TiDB colete os dados incrementais.
Índices de prefixo não podem ser migrados. Se o banco de dados de source contiver índices de prefixo, a tarefa de migração poderá falhar.
Migração incremental
O DTS lê dados apenas da partição com ID 0 do tópico Kafka. Configure o tópico com exatamente uma partição.
Após criar uma tarefa de migração incremental, execute operações no banco de dados de source ou insira dados de teste prontamente para atualizar as informações de offset da tarefa. Longos atrasos antes do primeiro evento de dados podem causar falha na tarefa.
Comportamento do destino e da tarefa
Especifique uma chave primária personalizada no banco de dados de destino ou configure a Primary Key Column na etapa Configurations for Databases, Tables, and Columns. A ausência da configuração de chave primária causa falha na migração de dados.
Se o cluster AnalyticDB for MySQL V3.0 estiver em backup enquanto a tarefa do DTS estiver em execução, a tarefa falhará.
Caso o uso de disco nos nós do AnalyticDB for MySQL V3.0 exceda 80%, a tarefa de migração será atrasada e erros serão retornados. Estime o espaço em disco necessário antes de começar.
A migração completa de dados aumenta a carga nos bancos de dados de source e de destino. Execute migrações fora do horário de pico, quando a carga da CPU estiver abaixo de 30%.
A migração completa de dados usa operações INSERT simultâneas, o que causa fragmentação nas tabelas de destino. Após a conclusão da migração completa, o tamanho do tablespace de destino será maior que o da source.
Se outras origens gravarem no destino durante a migração, poderá ocorrer inconsistência de dados.
O DTS usa a função
ROUND(COLUMN,PRECISION)para recuperar valores FLOAT e DOUBLE. A precisão padrão é de 38 dígitos para FLOAT e 308 dígitos para DOUBLE. Verifique se esses padrões atendem aos seus requisitos antes de iniciar.Durante a migração de esquema, o DTS não oferece suporte à migração de visualizações materializadas para a instância AnalyticDB for MySQL de destino. Para usar visualizações materializadas, crie-as manualmente na instância de destino após a conclusão da migração.
O DTS tenta retomar automaticamente tarefas com falha por até sete dias. Antes de alternar cargas de trabalho para o destino, pare ou libere quaisquer tarefas com falha, ou execute a instrução
REVOKEpara remover permissões de gravação das contas do DTS. Caso contrário, uma tarefa retomada poderá sobrescrever dados no destino.Se instruções DDL falharem no destino, a tarefa do DTS continuará em execução. Visualize as instruções DDL com falha nos logs da tarefa. Consulte Visualizar logs da tarefa.
Se uma tarefa do DTS falhar, o suporte técnico do DTS tentará restaurá-la dentro de 8 horas. Durante a restauração, a tarefa pode ser reiniciada e parâmetros da tarefa (não parâmetros do banco de dados) podem ser modificados. Para obter uma lista de parâmetros que podem ser alterados, consulte Modificar parâmetros da instância.
Se o destino for um cluster AnalyticDB for MySQL, o DTS suporta apenas a gravação de tipos de dados nativamente suportados pelo AnalyticDB for MySQL. Isso inclui tipos de dados básicos e tipos de dados complexos, como ARRAY, MAP e JSON. Tipos de dados como MULTIVALUE não são suportados.
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Instruções suportadas |
|
DML |
INSERT, UPDATE, DELETE. Instruções UPDATE são convertidas automaticamente para REPLACE INTO. Se o UPDATE tiver como alvo a chave primária, ele será convertido em DELETE seguido de INSERT. |
|
DDL |
CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Mapeamentos de tipos de dados
Para obter o mapeamento completo entre os tipos de dados do TiDB e do AnalyticDB for MySQL V3.0, consulte Mapeamentos de tipos de dados entre bancos de dados heterogêneos.
Criar uma tarefa de migração
Etapa 1: Acessar a página Data Migration
Use o console do DTS ou o console do DMS.
Console do DTS
Faça login no console do DTS.
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região onde a instância de migração residirá.
Console do DMS
As etapas podem variar dependendo do modo e do layout do console do DMS. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS .
Faça login no console do DMS.
Na barra de navegação superior, passe o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa à direita de Data Migration Tasks, selecione a região onde a instância de migração residirá.
Etapa 2: Configurar bancos de dados de source e de destino
Clique em Create Task.
Insira um Task Name. O DTS gera um nome automaticamente; especifique um nome descritivo para facilitar a identificação da tarefa posteriormente.
-
Configure o banco de dados de source:
Parâmetro
Descrição
Select Existing Connection
Selecione uma instância de banco de dados registrada para preencher automaticamente os parâmetros abaixo ou deixe em branco e insira os detalhes de conexão manualmente.
Database Type
Selecione TiDB.
Access Method
Selecione o método de acesso com base no local onde o TiDB está implantado. Este exemplo usa Self-managed Database on ECS. Para outros métodos de acesso, prepare o ambiente necessário primeiro. Consulte Preparation overview.
Instance Region
A região onde o banco de dados TiDB reside.
ECS Instance ID
O ID da instância ECS que hospeda o TiDB.
Port Number
A porta do service TiDB. Padrão: 4000.
Database Account
A conta do banco de dados TiDB.
Database Password
A senha da conta do banco de dados.
Migrate Incremental Data
Selecione Yes se desejar a migração incremental de dados e insira os detalhes do cluster Kafka na seção Kafka cluster configuration.
-
Configure o banco de dados de destino:
Parâmetro
Descrição
Select Existing Connection
Selecione uma instância registrada para preencher automaticamente os parâmetros abaixo ou deixe em branco e insira os detalhes de conexão manualmente.
Database Type
Selecione AnalyticDB for MySQL 3.0.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
A região onde o cluster de destino reside.
Instance ID
O ID do cluster AnalyticDB for MySQL V3.0 de destino.
Database Account
A conta do banco de dados para o cluster de destino. Consulte Permissões necessárias.
Database Password
A senha da conta do banco de dados.
-
Clique em Test Connectivity and Proceed. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Os blocos CIDR do DTS devem ser adicionados às configurações de segurança dos bancos de dados de source e de destino. Consulte Adicionar os blocos CIDR dos servidores DTS .
Etapa 3: Configurar objetos a serem migrados
Na página Configure Objects, defina os seguintes parâmetros:
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione as fases de migração a serem executadas: Schema Migration, Full Data Migration e, opcionalmente, Incremental Data Migration. Se Schema Migration não for selecionado, crie o banco de dados e a tabela de destino antes de iniciar a tarefa. Se Incremental Data Migration não for selecionado, evite gravar no banco de dados de source durante a migração para manter a consistência dos dados. |
|
Merge Tables |
Yes adiciona uma coluna |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: falha na pré-verificação se a source e o destino tiverem tabelas com o mesmo nome. Use o mapeamento de nomes de objetos para renomear tabelas conflitantes antes de iniciar. Ignore Errors and Proceed: ignora a pré-verificação. Durante a migração completa, o DTS mantém os registros de destino existentes para chaves primárias conflitantes. Durante a migração incremental, o DTS os sobrescreve. Se os esquemas diferirem entre source e destino, apenas as colunas correspondentes serão migradas ou a tarefa poderá falhar. |
|
Capitalization of Object Names in Destination Instance |
Controla o uso de maiúsculas e minúsculas nos nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especificar o uso de maiúsculas e minúsculas nos nomes de objetos na instância de destino. |
|
Source Objects |
Selecione tabelas ou bancos de dados para migrar e clique no ícone de seta para movê-los para Selected Objects. |
|
Selected Objects |
Clique com o botão direito em um objeto para renomeá-lo ou adicionar condições de filtro WHERE. Clique em Batch Edit para renomear vários objetos de uma vez. Renomear um objeto pode fazer com que objetos dependentes falhem na migração. |
Clique em Next: Advanced Settings.
Etapa 4: Definir configurações avançadas
|
Parâmetro |
Descrição |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta novamente após uma falha de conexão. Intervalo válido: 10–1.440 minutos. Padrão: 720 minutos. Defina como pelo menos 30 minutos. Se várias tarefas compartilharem o mesmo banco de dados de source ou de destino, o valor definido mais recentemente será aplicado. O DTS cobra pela instância durante os períodos de nova tentativa. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente após falhas de DDL ou DML. Intervalo válido: 1–1.440 minutos. Padrão: 10 minutos. Defina como pelo menos 10 minutos. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita o uso de recursos de leitura/gravação durante a migração completa. Configure o QPS (queries per second) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Migration estiver selecionado. |
|
Enable Throttling for Incremental Data Migration |
Limita o uso de recursos durante a migração incremental. Configure o RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. |
|
Environment Tag |
Uma tag opcional para identificar a instância do DTS. |
|
Configure ETL |
Selecione Yes para ativar extração, transformação e carregamento (ETL) e inserir instruções de processamento de dados. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. Selecione No para pular. |
|
Monitoring and Alerting |
Selecione Yes para receber notificações quando a tarefa falhar ou a latência da migração exceder um limiar. Configure limiares de alerta e contatos. Consulte Configurar monitoramento e alertas. |
Etapa 5: Configurar verificação de dados (opcional)
Clique em Next Step: Data Verification para configurar uma tarefa de verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 6: Configurar campos de banco de dados e tabelas (opcional)
Clique em Next: Configure Database and Table Fields para definir o Type, Primary Key Column, Distribution Key, Partition Key, Partitioning Rules e Partition Lifecycle para as tabelas de destino.
Esta etapa está disponível apenas se Schema Migration estiver selecionado. Defina o Definition Status como All para visualizar e editar todas as tabelas. Para formar uma chave primária composta, especifique várias colunas em Primary Key Column e designe uma ou mais como Distribution Key e Partition Key . Consulte CREATE TABLE .
Etapa 7: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API para esta configuração de tarefa, passe o mouse sobre o botão e clique em Preview OpenAPI parameters antes de prosseguir.
O DTS executa uma pré-verificação antes de iniciar a migração. Se a pré-verificação falhar:
Clique em View Details ao lado do item com falha, resolva o problema e clique em Precheck Again.
Para itens de alerta que podem ser ignorados com segurança, clique em Confirm Alert Details > Ignore > OK e, em seguida, clique em Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Etapa 8: Adquirir uma instância e iniciar a tarefa
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure o seguinte:
Parâmetro
Descrição
Resource Group
O grupo de recursos para a instância de migração. Padrão: default resource group. Consulte O que é Resource Management?.
Instance Class
A classe da instância determina a velocidade da migração. Consulte Classes de instâncias de migração de dados.
Leia e aceite os Data Transmission service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
Monitore o progresso da tarefa na página Data Migration.
Tarefas sem migração incremental param automaticamente quando concluídas. O status mostra Completed.
Tarefas com migração incremental são executadas continuamente. O status mostra Running. Pare a tarefa manualmente após o cutover.
Configuração do cluster Kafka
Quando Migrate Incremental Data estiver definido como Yes, configure o cluster Kafka com os seguintes parâmetros:
|
Parâmetro |
Descrição |
|
Kafka Cluster Type |
O local de implantação do cluster Kafka. Este exemplo usa Self-managed Database on ECS. Se você selecionar Express Connect, VPN Gateway, or Smart Access Gateway, selecione também uma VPC em Connected VPC e especifique Domain Name or IP. |
|
Kafka Data Source Component |
Selecione Use the default binlog format of the TiDB database ou Use the TiCDC Canal-JSON format com base na sua configuração. |
|
ECS Instance ID |
O ID da instância ECS que hospeda o cluster Kafka. |
|
Port Number |
A porta do service Kafka. |
|
Kafka Cluster Account |
O nome de usuário do Kafka. Deixe em branco se a autenticação estiver desativada. |
|
Kafka Cluster Password |
A senha do Kafka. Deixe em branco se a autenticação estiver desativada. |
|
Kafka Version |
A versão do cluster Kafka. Selecione 1.0 se a versão for 1,0 ou posterior. |
|
Encryption |
Selecione Non-encrypted ou SCRAM-SHA-256 com base nos seus requisitos de segurança. |
|
Topic |
O tópico Kafka que recebe dados incrementais. |