Use o Data Transmission Service (DTS) para migrar dados de um banco de dados TiDB autogerenciado para um cluster PolarDB for MySQL. O DTS suporta migração de esquema, migração completa de dados e migração incremental de dados. Assim, você minimiza o tempo de inatividade mantendo o destino sincronizado com a origem até o corte final.
O processo geral consiste em quatro etapas:
Crie o cluster PolarDB for MySQL de destino e verifique as permissões da conta.
(Apenas para migração incremental) Configure um cluster Kafka e defina o TiDB Binlog ou TiCDC para transmitir alterações ao Kafka.
Crie e configure a tarefa de migração do DTS.
Execute a pré-verificação, adquira a instância e monitore o progresso da tarefa.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um cluster PolarDB for MySQL com espaço de armazenamento superior ao utilizado pelo banco de dados TiDB de origem. Consulte Adquirir um cluster PolarDB for MySQL com pagamento conforme o uso e Adquirir um cluster PolarDB for MySQL por assinatura
As contas de banco de dados necessárias com as permissões listadas em Permissões necessárias
(Apenas para migração incremental) Um cluster Kafka e um pipeline de coleta de dados incrementais configurado. Consulte (Opcional) Configurar a coleta de dados incrementais
Permissões necessárias
| Banco de dados | Permissões necessárias | Referência |
|---|---|---|
| Banco de dados TiDB | SHOW VIEW e SELECT nos objetos a serem migrados | Gerenciamento de privilégios |
| Cluster PolarDB for MySQL | Leitura e escrita no banco de dados de destino | Criar e gerenciar contas de banco de dados |
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 quando o Access Method está definido como Public IP Address. Consulte Visão geral do faturamento. |
|
Migração incremental de dados |
Cobrada. Consulte Visão geral do faturamento. |
Consulte Visão geral do faturamento. |
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Observações de uso
Limites do banco de dados de origem
Largura de banda de saída: O servidor do banco de dados de origem deve ter largura de banda de saída suficiente. Largura de banda insuficiente reduz a velocidade da migração.
Chave primária ou restrição UNIQUE: As tabelas devem ter uma chave primária (PRIMARY KEY) ou restrição UNIQUE com todos os campos únicos. Sem essas restrições, o banco de dados de destino poderá conter registros duplicados.
Limite de tabelas por tarefa: Ao migrar tabelas individuais com edições no nível de coluna (como renomear colunas), uma única tarefa suporta até 1.000 tabelas. Para mais de 1.000 tabelas, divida o trabalho em várias tarefas ou migre o banco de dados inteiro.
Restrições de DDL durante a migração: Durante a migração de esquema e a migração completa de dados, não execute operações DDL que alterem o esquema do banco de dados ou das tabelas. A tarefa de migração falhará se operações DDL forem detectadas.
Índices de prefixo: Os metadados do TiDB não armazenam comprimentos de índices de prefixo. Após a migração, os comprimentos dos índices de prefixo são perdidos, o que pode impedir a execução da instância. Corrija manualmente os comprimentos dos índices de prefixo para quaisquer tabelas afetadas após a migração.
Requisitos de dados incrementais: A migração incremental de dados requer um cluster Kafka e componentes TiDB Binlog ou TiCDC. Consulte (Opcional) Configurar a coleta de dados incrementais.
Outros limites
Incremental data partition: O DTS lê dados incrementais apenas da partição com ID 0 no tópico do Kafka.
Inicialização de posição: Após criar uma tarefa com migração incremental, realize alterações ou insira dados de teste no banco de dados de origem prontamente para atualizar as informações de posição. A falta dessa ação pode causar falha na tarefa devido à latência excessiva.
Caracteres de 4 bytes: Se os dados incluírem caracteres raros ou emojis (caracteres de 4 bytes), o banco de dados e as tabelas de destino devem usar o conjunto de caracteres UTF8mb4. Caso utilize a migração de esquema do DTS, defina também o parâmetro da instância
character_set_servercomo UTF8mb4 no banco de dados de destino.Uso de recursos na migração completa: A migração completa de dados consome recursos de leitura e escrita tanto no banco de dados de origem quanto no de destino, aumentando a carga sobre eles. Avalie o desempenho do banco de dados antes de migrar e execute a migração completa em horários de baixa demanda (por exemplo, quando a carga da CPU estiver abaixo de 30%).
Tamanho do tablespace após migração completa: Operações INSERT simultâneas durante a migração completa de dados causam fragmentação de tabela. O tablespace no banco de dados de destino será maior do que no banco de dados de origem após a conclusão da migração.
Escritas no destino durante a migração: Escrever no banco de dados de destino durante a migração pode causar inconsistência de dados entre a origem e o destino.
Precisão de FLOAT e DOUBLE: O DTS usa
ROUND(COLUMN,PRECISION)para ler valores FLOAT e DOUBLE. A precisão padrão é de 38 dígitos para FLOAT e 308 dígitos para DOUBLE. Verifique se essas configurações de precisão atendem aos seus requisitos.Retomada automática: O DTS tenta retomar automaticamente tarefas que falharam nos últimos sete dias. Antes de alternar cargas de trabalho para a instância de destino, pare ou libere a tarefa do DTS, ou execute
REVOKEpara remover as permissões de escrita da conta do DTS na instância de destino.Falhas de DDL: Se uma instrução DDL falhar no banco de dados de 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.
Intervenção do suporte técnico: Se uma tarefa do DTS falhar, o suporte técnico 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 os parâmetros que podem ser modificados, consulte a seção Modificar parâmetros da instância.
(Opcional) Configurar a coleta de dados incrementais
Ignore esta seção se você precisar apenas de migração de esquema e migração completa de dados.
Para capturar alterações incrementais do TiDB, é necessário um cluster Kafka e o componente TiDB Binlog ou TiCDC. Ambos os métodos usam o Kafka como camada de transporte. Complete primeiro as etapas compartilhadas de configuração do Kafka e, em seguida, siga as etapas do método escolhido.
Etapa 1: Configurar um cluster Kafka
Use uma das seguintes opções:
-
Cluster Kafka autogerenciado: Implante o Apache Kafka seguindo a documentação do Apache Kafka.
AvisoPara lidar com o volume de dados de log binário do TiDB, aumente os seguintes parâmetros na configuração do seu Kafka. Consulte Configuração do Kafka.
Componente
Parâmetro
Motivo
Broker
message.max.bytesDefine o tamanho máximo de mensagem que o broker aceita. Eventos de log binário do TiDB podem ser grandes, portanto o limite padrão causa falhas de escrita.
Broker
replica.fetch.max.bytesDefine o máximo de bytes que um follower pode buscar por solicitação. Deve ser pelo menos igual a
message.max.bytespara replicar mensagens superdimensionadas.Consumer
fetch.message.max.bytesDefine o máximo de bytes que um consumer busca por partição. Deve ser pelo menos igual a
message.max.bytespara que o DTS possa ler eventos completos. -
Message Queue for Apache Kafka: Utilize o serviço gerenciado de Kafka da Alibaba Cloud. Consulte Primeiros passos.
Implante a instância do Message Queue for Apache Kafka na mesma virtual private cloud (VPC) do servidor do banco de dados de origem para reduzir a latência de rede e garantir conectividade estável.
Etapa 2: Criar um tópico Kafka
Crie um tópico no cluster Kafka ou na instância do Message Queue for Apache Kafka.
O tópico deve ter exatamente uma partição. O DTS lê dados incrementais apenas da partição com ID 0.
Etapa 3: Configurar TiDB Binlog ou TiCDC
Escolha um método com base no seu ambiente:
<details> <summary>Opção A: TiDB Binlog</summary>
Para minimizar o impacto da latência de rede, implante o componente Pump, o componente Drainer e o cluster Kafka em servidores que compartilhem a mesma rede interna do servidor do banco de dados TiDB de origem.
Implante os componentes Pump e Drainer. Consulte Implantação de cluster TiDB Binlog.
Edite o arquivo de configuração do Drainer para definir o Kafka como saída. Consulte Desenvolvimento personalizado para Kafka.Desenvolvimento Personalizado para Kafka
Verifique se o servidor do banco de dados TiDB consegue se conectar ao 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.
</details>
<details> <summary>Opção B: TiCDC</summary>
Instale o componente TiCDC. Use o TiUP para adicionar ou escalar horizontalmente o TiCDC no seu cluster TiDB existente. Consulte Implantar TiCDC.
Replicar dados incrementais para o Kafka usando
tiup cdc cli changefeed create \como o primeiro comando. Consulte Replicar dados para o Kafka.Verifique se o servidor do banco de dados TiDB consegue se conectar ao cluster Kafka.
</details>
Criar uma tarefa de migração
Etapa 1: Acessar a página Data Migration
Use um dos seguintes métodos:
Console do DTS
Faça login no console do DTS.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 reside.
Console do DMS
As etapas reais podem variar com base no modo e layout do console do DMS. Consulte Modo simples e Personalizar o layout e estilo do console do DMS.
Faça login no console do DMS.console do DMS
Na barra de navegação superior, mova 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 reside.
Etapa 2: Configurar bancos de dados de origem e destino
Clique em Create Task.
Na página de configuração da tarefa, configure os bancos de dados de origem e destino.
Parâmetros do banco de dados de origem
|
Parâmetro |
Descrição |
|
Task Name |
Nome para a tarefa do DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser único. |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada na lista suspensa ou configure a conexão manualmente. No console do DMS, selecione em Select a DMS database instance. |
|
Database Type |
Selecione TiDB. |
|
Access Method |
Selecione o tipo de conexão com base no local onde o banco de dados TiDB está implantado. Este exemplo usa Self-managed Database on ECS. Para outros tipos de conexão, conclua os preparativos correspondentes. |
|
Instance Region |
Região onde o banco de dados TiDB está localizado. |
|
ECS Instance ID |
ID da instância do Elastic Compute Service (ECS) que executa o banco de dados TiDB. |
|
Port Number |
Porta de serviço do banco de dados TiDB. Padrão: 4000. |
|
Database Account |
Conta do banco de dados TiDB. |
|
Database Password |
Senha da conta do banco de dados TiDB. |
|
Migrate Incremental Data |
Para migrar dados incrementais, selecione Yesconfigurações de notificação de alerta e preencha as informações do cluster Kafka. Consulte Parâmetros do cluster Kafka. |
Parâmetros do banco de dados de destino
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada na lista suspensa ou configure a conexão manualmente. No console do DMS, selecione em Select a DMS database instance. |
|
Database Type |
Selecione PolarDB for MySQL. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Região onde o cluster PolarDB for MySQL de destino está localizado. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No ao usar uma instância de banco de dados sob a conta atual da Alibaba Cloud. |
|
PolarDB Cluster ID |
Selecione o ID do cluster PolarDB for MySQL de destino. |
|
Database Account |
Conta do cluster PolarDB for MySQL de destino. |
|
Database Password |
Senha da conta do cluster PolarDB for MySQL de destino. |
|
Encryption |
Indica se a conexão deve ser criptografada. Para detalhes sobre criptografia SSL, consulte Configurar criptografia SSL. |
Etapa 3: Testar conectividade
Na parte inferior da página, clique em Test Connectivity and Proceed. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Certifique-se de que os blocos CIDR dos servidores DTS foram adicionados às configurações de segurança dos bancos de dados de origem e destino. Consulte Adicionar os blocos CIDR dos servidores DTS .
Etapa 4: Configurar objetos de migração
Na página Configure Objects, defina os seguintes parâmetros.
Tipos de migração e tratamento de conflitos
| Parâmetro | Descrição |
|---|---|
| Migration Types | Selecione os tipos de migração conforme suas necessidades: <br>- Schema Migration + Full Data Migration: migra apenas o esquema e os dados existentes. <br>- Schema Migration + Full Data Migration + Incremental Data Migration: minimiza o tempo de inatividade capturando também as alterações durante a migração. <br> Nota
Se você pular a Schema Migration, crie o banco de dados e as tabelas de destino manualmente e ative o mapeamento de nomes de objetos em Selected Objects. Se pular a Incremental Data Migration, evite escrever no banco de dados de origem durante a migração para manter a consistência dos dados. |
| Processing Mode of Conflicting Tables | - Precheck and Report Errors (padrão): falha na pré-verificação se o destino contiver tabelas com os mesmos nomes da origem. Use o mapeamento de nomes de objetos para renomear tabelas conflitantes. <br>- Ignore Errors and Proceed: ignora a pré-verificação de conflitos de nomes. Aviso
Esta opção apresenta risco de inconsistência de dados — durante a migração completa, o DTS pula registros conflitantes; durante a migração incremental, o DTS os sobrescreve. Se os esquemas diferirem, apenas colunas específicas serão migradas ou a tarefa poderá falhar. |
| Capitalization of Object Names in Destination Instance | Controla a capitalização de nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especificar a capitalização de nomes de objetos na instância de destino. |
Seleção de objetos
| Parâmetro | Descrição |
|---|---|
| Source Objects | Selecione as tabelas ou bancos de dados a serem migrados. Clique em |
| Selected Objects | Clique com o botão direito em um objeto para renomeá-lo. Consulte Mapear o nome de um único objeto. Clique em Batch Edit para renomear vários objetos de uma vez. Consulte Mapear vários nomes de objetos simultaneamente. Clique com o botão direito em uma tabela para configurar uma condição de filtro WHERE. Nota
Renomear um objeto pode impedir que objetos dependentes sejam migrados. Nota
|
Clique em Next: Advanced Settings.
Advanced settings
| Parâmetro | Descrição |
|---|---|
| Select the engine type of the destination database | Engine de armazenamento para o banco de dados de destino: InnoDB (padrão) ou X-Engine (para cargas de trabalho de processamento de transações online - OLTP). |
| Retry Time for Failed Connections | Tempo durante o qual o DTS tenta reconectar após falhas de conexão depois do início da tarefa. Intervalo: 10–1.440 minutos. Padrão: 720. Recomendamos definir este parâmetro com um valor superior a 30 minutos. Se a conexão for restaurada dentro desse período, a tarefa será retomada; caso contrário, ela falhará. Nota
Quando várias tarefas compartilham o mesmo banco de dados de origem ou destino, o valor definido mais recentemente entra em vigor. O DTS cobra pela instância durante o tempo de nova tentativa. |
| Retry Time for Other Issues | Tempo durante o qual o DTS tenta repetir operações DDL ou DML com falha. Intervalo: 1–1.440 minutos. Padrão: 10. Recomendamos definir este parâmetro com um valor superior a 10 minutos. Importante
Este valor deve ser menor que Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limita o uso de recursos durante a migração completa de dados. Configure Queries per second (QPS) 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 de dados. Configure 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 de migração. |
| Configure ETL | Indica se deve ativar extração, transformação e carga (ETL). Selecione Yes para inserir instruções de processamento de dados. Consulte O que é ETL? e Configurar ETL em uma tarefa de migração ou sincronização de dados. |
| Monitoring and Alerting | Indica se devem ser configurados alertas para a tarefa. Selecione Yes para definir um limiar de alerta e contatos de notificação. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS. |
Clique em Next Step: Data Verification para configurar a verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 5: Executar a pré-verificação
Para visualizar os parâmetros da API desta tarefa, mova o ponteiro sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters.
Clique em Next: Save Task Settings and Precheck.
O DTS executa uma pré-verificação antes de iniciar a migração. A tarefa só começa após a aprovação na pré-verificação.
Para itens de pré-verificação com falha, clique em View Details para diagnosticar o problema, resolvê-lo e, em seguida, execute a pré-verificação novamente.
Para itens de alerta: se o alerta não puder ser ignorado, corrija o problema e execute a pré-verificação novamente. Se o alerta puder ser ignorado, clique em Confirm Alert Details , depois clique em Ignore > OK > Precheck Again .
Etapa 6: Adquirir e iniciar a instância
Aguarde até que a Success Rate atinja 100%, então clique em Next: Purchase Instance.
Na página Purchase Instance, configure a classe da instância.
|
Parâmetro |
Descrição |
|
Resource Group |
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 marcando a caixa de seleção.
Clique em Buy and Start, depois clique em OK.
A tarefa aparecerá na página Data Migration. Monitore o progresso dela nessa página.
Parâmetros do cluster Kafka
Configure os seguintes parâmetros quando Migrate Incremental Data estiver definido como Yes.
|
Parâmetro |
Descrição |
|
Kafka Cluster Type |
Tipo de conexão baseado no local onde o cluster Kafka está implantado. Este exemplo usa Self-managed Database on ECS. Se selecionar Express Connect, VPN Gateway, or Smart Access Gateway, selecione também Connected VPC e insira o Domain Name or IP. |
|
Kafka Data Source Component |
Selecione com base no método de coleta incremental configurado: Use the default binlog format of the TiDB database. (TiDB Binlog) ou Use the TiCDC Canal-JSON format. (TiCDC). |
|
ECS Instance ID |
ID da instância ECS que executa o cluster Kafka. |
|
Port Number |
Porta de serviço do cluster Kafka. |
|
Kafka Cluster Account |
Nome de usuário do cluster Kafka. Deixe em branco se a autenticação não estiver ativada. |
|
Kafka Cluster Password |
Senha do cluster Kafka. Deixe em branco se a autenticação não estiver ativada. |
|
Kafka Version |
Versão do cluster Kafka. Se a versão for 1,0 ou posterior, selecione 1.0. |
|
Encryption |
Selecione Non-encrypted ou SCRAM-SHA-256 com base nos seus requisitos de segurança. |
|
Topic |
Tópico que contém os dados incrementais. |