Use o Data Transmission Service (DTS) para sincronizar dados de um banco de dados TiDB autogerenciado para um cluster AnalyticDB for MySQL V3.0 e permitir análises em tempo real.
Como funciona
O DTS lê alterações incrementais do TiDB por meio de um cluster Kafka, que atua como buffer de captura de dados de alteração (CDC), e grava os dados no AnalyticDB for MySQL V3.0. O pipeline completo é:
TiDB → Cluster Kafka → DTS → AnalyticDB for MySQL V3.0
O TiDB não expõe logs binários diretamente ao DTS. Configure um dos seguintes componentes de CDC para publicar alterações incrementais em um tópico Kafka:
TiDB Binlog — usa os componentes Pump e Drainer
TiCDC — usa o formato Canal-JSON
O DTS lê a partição 0 do tópico Kafka e aplica as alterações no cluster de destino.
Limitações
Analise estas limitações antes de configurar a tarefa.
Limites do banco de dados de origem
|
Limite |
Detalhes |
|
Chave primária ou restrição UNIQUE obrigatória |
As tabelas a serem sincronizadas devem ter uma chave primária (PRIMARY KEY) ou restrição UNIQUE com todos os campos únicos. Tabelas sem essa restrição podem gerar registros duplicados no destino. |
|
Restrições de DDL durante a sincronização |
Não execute instruções DDL que alterem esquemas de banco de dados ou tabelas durante a sincronização de esquema ou a sincronização completa de dados. A tarefa falhará. |
|
Perda do tamanho do índice de prefixo |
O TiDB não armazena o tamanho do índice de prefixo nos metadados. Esse tamanho se perde na sincronização para o AnalyticDB for MySQL V3.0, o que pode causar falha na instância de destino. Corrija manualmente os tamanhos de índices de prefixo em todas as tabelas que os utilizam. |
|
Limite de tabelas por tarefa |
Ao selecionar tabelas individuais (em vez de bancos de dados inteiros) e renomeá-las, uma única tarefa suporta até 1.000 tabelas. Se ultrapassar esse limite, configure múltiplas tarefas ou sincronize bancos de dados inteiros. |
|
Configuração do Kafka obrigatória |
Implante um cluster Kafka e instale o TiDB Binlog ou TiCDC antes de criar a tarefa do DTS. |
|
Largura de banda de saída |
O servidor que hospeda o TiDB deve ter largura de banda de saída suficiente. Largura de banda insuficiente reduz a velocidade de sincronização. |
Limites de destino e da tarefa
|
Limite |
Detalhes |
|
Partição do Kafka |
O DTS lê apenas a partição 0 do tópico Kafka. Crie o tópico com exatamente uma partição. |
|
Chave primária personalizada obrigatória |
Especifique uma chave primária personalizada no AnalyticDB for MySQL V3.0 ou configure a Primary Key Column na etapa Configurations for Databases, Tables, and Columns. Caso contrário, a tarefa poderá falhar. |
|
Limiar de uso de disco |
Se o uso de disco em qualquer nó do cluster AnalyticDB for MySQL V3.0 exceder 80%, a tarefa do DTS sofrerá atrasos e retornará erros. Estime o espaço em disco necessário antes de iniciar. |
|
Conflitos de backup |
Se houver backup do cluster de destino durante a execução do DTS, a tarefa falhará. |
|
Tipos de dados heterogêneos |
Os tipos de dados do TiDB e do AnalyticDB for MySQL V3.0 não possuem mapeamento um para um. Consulte Mapeamentos de tipos de dados para sincronização inicial de esquema para obter detalhes. |
|
Precisão de FLOAT/DOUBLE |
O DTS usa |
|
Visualizações materializadas não suportadas |
Durante a sincronização de esquema, o DTS não oferece suporte à sincronizaçã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 sincronização. |
|
Inicialização do offset da tarefa |
Após criar a tarefa, realize operações no banco de dados de origem ou insira dados de teste prontamente para atualizar o offset da tarefa. Pular esta etapa pode causar falha devido à latência excessiva. |
|
Dados de outras origens |
Não grave dados no cluster de destino a partir de outras fontes durante a sincronização. Isso causa inconsistência de dados. |
|
Retomada de tarefa com falha |
O DTS tenta automaticamente retentar tarefas com falha por até 7 dias. Antes de alternar cargas de trabalho para o cluster de destino, pare ou libere quaisquer tarefas com falha. Alternativamente, execute |
|
Desempenho da sincronização completa de dados |
A sincronização completa de dados aumenta a carga tanto no banco de dados de origem quanto no de destino. Execute-a fora do horário de pico, quando o uso da CPU estiver abaixo de 30%. |
|
Tamanho do tablespace após sincronização completa |
Operações INSERT simultâneas durante a sincronização completa de dados causam fragmentação da tabela. O tablespace de destino será maior que o de origem. |
|
Falhas de DDL |
Se uma instrução DDL falhar no banco de dados de destino, a tarefa continuará. Verifique os logs da tarefa para visualizar as instruções DDL com falha. |
|
SLA do suporte técnico do DTS |
Se uma tarefa do DTS falhar na execução, o suporte técnico tentará restaurá-la em até 8 horas. Durante a restauração, a tarefa pode ser reiniciada e seus parâmetros modificados. Apenas os parâmetros da tarefa podem ser modificados — os parâmetros do banco de dados permanecem inalterados. |
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 para sincronização incremental
|
Tipo de operação |
Instruções suportadas |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Ao gravar instruções UPDATE no AnalyticDB for MySQL V3.0, o DTS as converte automaticamente para REPLACE INTO . Se a instrução UPDATE afetar a chave primária, o DTS a converterá em DELETE seguido de INSERT.
Faturamento
|
Tipo de sincronização |
Custo |
|
Sincronização de esquema e sincronização completa de dados |
Gratuito |
|
Sincronização incremental de dados |
Pago. Consulte Visão geral do faturamento. |
Pré-requisitos
Antes de começar, certifique-se de ter:
Um cluster AnalyticDB for MySQL V3.0 com armazenamento disponível maior que o tamanho total dos dados do seu banco de dados TiDB. Consulte Criar um cluster
Um cluster Kafka ou uma instância ApsaraMQ for Kafka implantada e acessível a partir do servidor TiDB
As permissões necessárias na conta do banco de dados (consulte Permissões necessárias)
Permissões necessárias
|
Banco de dados |
Permissões necessárias |
Referência |
|
TiDB |
SELECT nos objetos a serem sincronizados, SHOW VIEW |
|
|
AnalyticDB for MySQL V3.0 |
Permissões de leitura e gravação no banco de dados de destino |
Configurar a captura incremental de dados
O DTS exige a publicação de eventos de alteração incremental do TiDB em um tópico Kafka. Escolha um dos métodos a seguir.
Escolher um método
|
TiDB Binlog |
TiCDC |
|
|
Componentes |
Pump + Drainer |
TiCDC (gerenciado via TiUP) |
|
Formato de saída |
Formato binlog padrão do TiDB |
Formato Canal-JSON |
|
Mais indicado para |
Implantações existentes do TiDB Binlog |
Novas configurações e TiDB v4.0+ |
|
Configuração do DTS |
Usar o formato binlog padrão do banco de dados TiDB |
Usar o formato TiCDC Canal-JSON |
Preparar o cluster Kafka
Ambos os métodos requerem um cluster Kafka. Use uma das opções abaixo:
Cluster Kafka autogerenciado: implante o Apache Kafka. Consulte a documentação do Apache Kafka
Instância ApsaraMQ for Kafka: crie uma instância. Consulte a Visão geral de introdução
Independentemente da opção escolhida:
Implante o cluster Kafka na mesma rede ou Virtual Private Cloud (VPC) do servidor TiDB para minimizar a latência de rede.
Defina valores altos para os parâmetros do broker Kafka
message.max.bytesereplica.fetch.max.bytese defina um valor alto correspondente para o parâmetro do consumidorfetch.message.max.bytes. Isso garante que o cluster consiga lidar com o volume de dados de log binário do TiDB. Consulte a referência de configuração do Kafka.
Após configurar o cluster, crie um tópico com exactly one partition. O DTS lê apenas a partição 0; portanto, múltiplas partições causarão perda de dados.
Opção 1: TiDB Binlog
Implante o Pump e o Drainer em servidores na mesma rede interna do TiDB. Consulte a Implantação de cluster do TiDB Binlog.
Edite o arquivo de configuração do Drainer para apontar para o seu cluster Kafka como sink downstream. Consulte o Guia do usuário do Binlog Consumer Client. Verifique se o servidor TiDB consegue se conectar ao cluster Kafka antes de prosseguir.
Adicione os blocos CIDR dos servidores DTS à lista de permissões do banco de dados TiDB. Consulte Adicionar os blocos CIDR dos servidores DTS.
Opção 2: TiCDC
Instale o TiCDC usando o TiUP. Adicione um novo nó TiCDC ou escale horizontalmente um nó existente no cluster TiDB. Consulte Implantar e manter o TiCDC.
Crie um changefeed para replicar dados incrementais do TiDB para o seu cluster Kafka. Use
tiup cdc cli changefeed createe especifique a URI do sink Canal-JSON. Consulte Replicar dados para o Kafka. Verifique se o servidor TiDB consegue se conectar ao cluster Kafka antes de prosseguir.
Criar uma tarefa de sincronização de dados
Etapa 1: Acessar a página de Sincronização de Dados
Use o console do DTS ou o console do DMS.
Console do DTS
Faça login no console do DTS.console do DTS
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde a instância de sincronização residirá.
Console do DMS
As etapas podem variar dependendo 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.console do DMS
Na barra de navegação superior, passe o ponteiro sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa à direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização residirá.
Etapa 2: Configurar os bancos de dados de origem e de destino
Clique em Create Task e configure os seguintes parâmetros.
Banco de dados de origem
|
Parâmetro |
Descrição |
|
Task Name |
Nome da 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 a DMS database instance |
Selecione um banco de dados registrado existente ou deixe este campo em branco e preencha os parâmetros abaixo. Para registrar um banco de dados: no console do DMS, clique em Add DMS Database Instance; no console do DTS, use a página Database Connections. Consulte Registrar uma instância de banco de dados Alibaba Cloud e Registrar um banco de dados hospedado em um serviço de nuvem de terceiros ou um banco de dados autogerenciado. |
|
Database Type |
Selecione TiDB. |
|
Access Method |
Selecione o método de acesso correspondente ao 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 a Visão geral da preparação. |
|
Instance Region |
Região onde o TiDB reside. |
|
ECS Instance ID |
ID da instância ECS que hospeda o TiDB. |
|
Port Number |
Porta do serviço TiDB. Padrão: 4000. |
|
Database Account |
Conta do TiDB com as permissões necessárias. |
|
Database Password |
Senha da conta do TiDB. |
|
Migrate Incremental Data |
Sempre definido como Yes configurações de notificação de alerta. Isso não pode ser alterado. Para sincronizar sem dados incrementais, crie uma tarefa de migração de dados. Consulte Migrar dados de um banco de dados TiDB autogerenciado para um cluster AnalyticDB for MySQL V3.0. |
|
Kafka Cluster Type |
Selecione o método de acesso correspondente ao local onde seu cluster Kafka está implantado. 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 o Domain Name or IP. |
|
Kafka Data Source Component |
Selecione Use the default binlog format of the TiDB database (para TiDB Binlog) ou Use the TiCDC Canal-JSON format (para TiCDC), com base no que você configurou em Configurar a captura incremental de dados. |
|
ECS Instance ID |
ID da instância ECS onde o cluster Kafka está implantado. |
|
Port Number |
Porta do serviço Kafka. |
|
Kafka Cluster Account / Kafka Cluster Password |
Nome de usuário e senha do Kafka. Deixe em branco se a autenticação não estiver habilitada. |
|
Kafka Version |
Versão do 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 Kafka que recebe dados incrementais do TiDB. |
Banco de dados de destino
|
Parâmetro |
Descrição |
|
Select a DMS database instance |
Selecione um banco de dados registrado existente ou deixe este campo em branco e preencha os parâmetros abaixo. |
|
Database Type |
Selecione AnalyticDB for MySQL 3.0. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Região onde o cluster AnalyticDB for MySQL V3.0 reside. |
|
Instance ID |
ID do cluster AnalyticDB for MySQL V3.0 de destino. |
|
Database Account |
Conta do banco de dados com permissões de leitura e gravação. |
|
Database Password |
Senha da conta do banco de dados. |
Etapa 3: Testar a conectividade
Clique em Test Connectivity and Proceed. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Se os blocos CIDR do DTS ainda não tiverem sido adicionados às configurações de segurança do seu banco de dados, adicione-os antes de prosseguir. Consulte Adicionar os blocos CIDR dos servidores DTS.
Etapa 4: Configurar objetos para sincronização
Na etapa Configure Objects, defina os seguintes parâmetros.
| Parâmetro | Descrição |
|---|---|
| Synchronization Types | Selecione Schema Synchronization, Full Data Synchronization e Incremental Data Synchronization. Todos os três são obrigatórios. Incremental Data Synchronization vem selecionado por padrão; selecione também os outros dois. A sincronização completa de dados fornece a linha de base de dados históricos para a sincronização incremental. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (padrão): falha na pré-verificação se existirem tabelas com nomes idênticos no destino. Use o mapeamento de nomes de objetos para resolver conflitos sem excluir tabelas de destino. Consulte Mapear nomes de objetos. Ignore Errors and Proceed: ignora a pré-verificação para nomes de tabelas idênticos. Durante a sincronização completa, os registros existentes no destino são mantidos. Durante a sincronização incremental, os registros de destino são sobrescritos. Use com cautela — isso pode causar inconsistência de dados. |
| Capitalization of Object Names in Destination Instance | Controla a capitalização dos nomes de bancos de dados, tabelas e colunas no destino. Padrão: DTS default policy. Consulte Especificar a capitalização dos nomes de objetos na instância de destino. |
| Source Objects | Selecione os bancos de dados ou tabelas a serem sincronizados e clique no ícone de seta para movê-los para Selected Objects. |
| Selected Objects | Para renomear um objeto no destino, clique com o botão direito nele e use o mapeamento de nomes de objetos. Para renomear vários objetos de uma vez, clique em Batch Edit. Para filtrar linhas com condições SQL WHERE, clique com o botão direito em uma tabela e especifique as condições. Consulte Especificar condições de filtro. Renomear um objeto pode quebrar objetos dependentes. |
Etapa 5: Configurar definições avançadas
Clique em Next: Advanced Settings e configure o seguinte.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda tarefas em um cluster compartilhado, e não é necessário selecionar um cluster. Para um desempenho mais estável, adquira um cluster dedicado para executar tarefas de sincronização do DTS. Para mais informações, consulte O que é um cluster dedicado do DTS?. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após falhas de conexão depois que a tarefa inicia. Intervalo: 10–1440 minutos. Padrão: 720 minutos. Defina como mais de 30 minutos. Se várias tarefas compartilharem o mesmo banco de dados de origem ou de destino, o menor tempo de nova tentativa terá precedência. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente operações DDL ou DML com falha. Intervalo: 1–1440 minutos. Padrão: 10 minutos. Defina como mais de 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limita a carga de leitura e gravação durante a sincronização completa de dados. Configure 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 Synchronization estiver selecionado. |
|
Enable Throttling for Incremental Data Synchronization |
Limita a carga de gravação durante a sincronização incremental de dados. Configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Uma tag opcional para identificar a instância do DTS por ambiente (por exemplo, produção ou teste). |
|
Configure ETL |
Selecione Yes para habilitar extração, transformação e carga (ETL) e inserir instruções de processamento de dados. Selecione No para pular. Consulte O que é ETL? |
|
Monitoring and Alerting |
Selecione Yes para configurar alertas para falhas de tarefa ou violações de limiar de latência. Configure o limiar de alerta e as configurações de notificação. Consulte Configurar monitoramento e alertas. |
Etapa 6: Configurar verificação de dados (opcional)
Clique em Next Step: Data Verification para configurar a verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 7: Configurar campos de banco de dados e tabelas (opcional)
Clique em Next: Configure Database and Table Fields para definir configurações específicas do AnalyticDB for MySQL V3.0 para cada tabela.
Esta etapa está disponível apenas quando Schema Synchronization estiver selecionado. Defina Definition Status como All para visualizar e modificar todas as tabelas.
|
Parâmetro |
Descrição |
|
Type |
Tipo da tabela no AnalyticDB for MySQL V3.0. |
|
Primary Key Column |
Colunas de chave primária da tabela. Suporta chaves primárias compostas. |
|
Distribution Key |
Chave de distribuição da tabela. Deve ser uma ou mais das colunas de chave primária. |
|
Partition Key / Partitioning Rules / Partition Lifecycle |
Configurações de particionamento da tabela. Consulte CREATE TABLE. |
Etapa 8: Salvar a tarefa e executar a pré-verificação
Para visualizar os parâmetros da API desta configuração de tarefa, passe o ponteiro sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters.
Clique em Next: Save Task Settings and Precheck para salvar e iniciar a pré-verificação.
Se a pré-verificação falhar:
Clique em View Details ao lado de cada item com falha, corrija o problema e execute a pré-verificação novamente.
Se um item mostrar um alerta que pode ser ignorado, clique em Confirm Alert Details, depois em Ignore, em seguida em OK e, por fim, em Precheck Again. Ignorar alertas pode causar inconsistência de dados.
Etapa 9: Adquirir uma instância
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
Na página de compra, configure o seguinte.
|
Parâmetro |
Descrição |
|
Billing Method |
Subscription: pagamento antecipado por um período fixo. Mais econômico para uso de longo prazo. Pay-as-you-go: faturamento por hora. Adequado para uso de curto prazo. Libere a instância quando não for mais necessária para evitar cobranças desnecessárias. |
|
Resource Group Settings |
Grupo de recursos para a instância de sincronização. Padrão: default resource group. Consulte O que é Resource Management? |
|
Instance Class |
Nível de velocidade de sincronização. Consulte Classes de instâncias de sincronização de dados. |
|
Subscription Duration |
Disponível para o método de faturamento por assinatura. Opções: 1–9 meses, 1 ano, 2 anos, 3 anos ou 5 anos. |
Leia e selecione 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.
A tarefa aparecerá na lista de tarefas. Monitore o progresso dela nessa lista.