O Data Transmission Service (DTS) mantém um cluster PolarDB for MySQL sincronizado com um cluster ApsaraDB for ClickHouse em tempo real, viabilizando análises centralizadas sem interromper o banco de dados source.
Tipos de sincronização e faturamento
|
Tipo de sincronização |
Faturamento |
|
Sincronização de schema |
Gratuito |
|
Sincronização completa de dados |
Gratuito |
|
Sincronização incremental de dados |
Cobrado. Para mais detalhes, consulte Visão geral do faturamento. |
Pré-requisitos
Antes de começar, verifique se:
Um cluster ApsaraDB for ClickHouse executando o ClickHouse V20.8 ou posterior está pronto como destino. Consulte Criar um cluster ApsaraDB for ClickHouse.
O cluster de destino possui espaço de armazenamento disponível maior do que o tamanho total dos dados no cluster PolarDB for MySQL source.
O binary logging está ativado no cluster source e
loose_polar_log_binestá definido comoon. Consulte Ativar binary logging e Modificar parâmetros.As contas do banco de dados source possuem as permissões necessárias (consulte Permissões exigidas para contas de banco de dados).
Os binary logs no cluster source devem ser retidos por pelo menos sete dias. Um período de retenção menor pode fazer o DTS perder sua posição no binlog, resultando em falha na tarefa ou perda de dados. A ativação do binary logging gera cobranças de armazenamento no PolarDB for MySQL.
Permissões exigidas para contas de banco de dados
Banco de dados | Permissões necessárias | Referências |
Cluster PolarDB for MySQL source | Permissões de leitura em todos os objetos a serem sincronizados | Create and manage a database account e Manage the password of a database account |
ApsaraDB for ClickHouse V22.8 ou posterior como destino | Permissões de leitura e gravação no banco de dados de destino (uma conta privilegiada é suficiente) | Manage database accounts in a Community-compatible Edition cluster |
ApsaraDB for ClickHouse V21.8 como destino | Read, Write and Set Permissions e Enable DDL | Igual ao item anterior |
Limitações
Limites da instância source
O servidor source deve ter largura de banda de saída suficiente. Largura de banda insuficiente reduz a velocidade de sincronização.
Ao sincronizar tabelas com renomeação ou modificação de colunas no destino, uma única tarefa suporta até 1.000 tabelas. Para mais de 1.000 tabelas, divida em múltiplas tarefas ou sincronize o banco de dados inteiro.
Não execute operações DDL no source durante a sincronização completa de dados, pois isso causará falha na tarefa.
A sincronização de dados do tipo VECTOR não é suportada.
Outras limitações
O DTS não sincroniza nós somente leitura nem tabelas externas do Object Storage Service (OSS) do cluster source.
Instruções DDL que não seguem a sintaxe padrão do MySQL podem causar falha na tarefa ou perda de dados.
RENAME TABLE não é suportado.
Os valores DATETIME no source devem estar dentro dos intervalos de tempo suportados pelo ClickHouse (consulte Intervalo de tempo).
Todas as colunas selecionadas como Partition Key devem ser campos não nulos.
Até 256 bancos de dados podem ser sincronizados para um único cluster ApsaraDB for ClickHouse.
Os nomes de bancos de dados, tabelas e colunas devem estar em conformidade com as convenções de nomenclatura do ApsaraDB for ClickHouse. Consulte Limites nas convenções de nomenclatura de objetos.
Durante a sincronização de schema, o DTS adiciona os campos
_sign,_is_deletede_versionàs tabelas de destino. Se você desativar a opção Schema Synchronization, crie a tabela de destino manualmente e inclua esses campos.Não grave dados de outras fontes no banco de dados de destino durante a sincronização. Gravações simultâneas causam inconsistência nos dados.
Não utilize pt-online-schema-change para executar DDL em tabelas sincronizadas no nível de tabela. Use DDL sem bloqueio do Data Management (DMS) em vez disso.
Execute a sincronização fora dos horários de pico sempre que possível. A sincronização completa de dados consome recursos de leitura e gravação em ambos os clusters.
Em caso de falha na tarefa, o suporte do DTS tentará restaurá-la em até 8 horas e poderá reiniciar a tarefa ou modificar seus parâmetros (não os parâmetros do banco de dados).
Operações SQL com suporte à sincronização de dados
DML
INSERT, UPDATE e DELETE
DDL
|
Operação DDL |
Suportado |
|
CREATE TABLE |
Sim |
|
TRUNCATE TABLE |
Sim |
|
ALTER TABLE |
Sim |
|
ADD COLUMN |
Sim |
|
MODIFY COLUMN |
Sim |
|
DROP TABLE |
Sim |
|
DROP COLUMN |
Sim |
|
RENAME TABLE |
Não |
Mapeamentos de tipos de dados
O PolarDB for MySQL e o ApsaraDB for ClickHouse suportam tipos de dados diferentes. Durante a sincronização inicial de schema, o DTS mapeia os tipos source para tipos compatíveis no destino. Consulte Mapeamentos de tipos de dados para sincronização inicial de schema.
Criar uma tarefa de sincronização
Etapa 1: Acessar a página de sincronização de dados
DTS console
Acesse o DTS console
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á.
DMS console
Note
O caminho de navegação exato varia conforme o modo do DMS console. Consulte Simple mode e Personalizar o layout e o estilo do DMS console.
Acesse o DMS console
Na barra de navegação superior, posicione o ponteiro sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa ao lado de Data Synchronization Tasks, selecione a região onde a instância de sincronização residirá.
Etapa 2: Configurar os bancos de dados source e de destino
Clique em Create Task e preencha os parâmetros a seguir.
Seção | Parâmetro | Descrição |
N/A | Task Name | Um nome para a tarefa do DTS. O DTS gera um nome automaticamente. Use um nome descritivo para identificar a tarefa com facilidade. Não é necessário que o nome seja único. |
Source Database | Select Existing Connection | Selecione uma instância de banco de dados registrada na lista suspensa ou configure a conexão manualmente caso a instância não esteja registrada. |
Database Type | Selecione PolarDB for MySQL. | |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | A região onde o cluster PolarDB for MySQL source reside. | |
Replicate Data Across Alibaba Cloud Accounts | Selecione No para sincronização na mesma conta. | |
PolarDB Cluster ID | O ID do cluster PolarDB for MySQL source. | |
Database Account | A conta do banco de dados do cluster source. | |
Database Password | A senha da conta. | |
Encryption | Define se a conexão com o banco de dados source será criptografada. Consulte Configure SSL encryption. | |
Destination Database | Select Existing Connection | Selecione uma instância registrada ou configure a conexão manualmente. |
Database Type | Selecione ClickHouse. | |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | A região onde o cluster ApsaraDB for ClickHouse de destino reside. | |
Replicate Data Across Alibaba Cloud Accounts | Selecione No para sincronização na mesma conta. | |
Cluster Type | O tipo do cluster ApsaraDB for ClickHouse de destino. | |
Cluster ID | O ID do cluster ApsaraDB for ClickHouse de destino. | |
Database Account | A conta do banco de dados do cluster de destino. | |
Database Password | A senha da conta. |
Clique em Test Connectivity and Proceed.
Certifique-se de que os blocos CIDR dos servidores DTS estejam adicionados às regras do grupo de segurança dos bancos de dados source e de destino. Consulte Adicionar os blocos CIDR dos servidores DTS .
Etapa 3: Configurar os objetos a sincronizar
Na etapa Configure Objects, defina os parâmetros a seguir.
Parâmetro | Descrição |
Synchronization Types | Selecione Schema Synchronization, Full Data Synchronization e Incremental Data Synchronization. A sincronização completa de dados carrega os dados históricos antes de iniciar a sincronização incremental. |
Processing Mode of Conflicting Tables | Precheck and Report Errors (padrão): reprova o precheck se o destino contiver tabelas com os mesmos nomes das tabelas source. Use o mapeamento de nomes de objetos para evitar conflitos. Ignore Errors and Proceed: ignora a verificação de conflitos. Durante a sincronização completa, os registros existentes no destino são mantidos; durante a sincronização incremental, são sobrescritos. Se os schemas forem diferentes, a tarefa poderá falhar. Use com cautela. |
Capitalization of Object Names in Destination Instance | Controla o tratamento de maiúsculas e minúsculas para nomes de bancos de dados, tabelas e colunas. Padrão: DTS default policy. Consulte Especificar as maiúsculas e minúsculas dos nomes de objetos na instância de destino. |
Source Objects | Selecione os bancos de dados, tabelas ou colunas a sincronizar e clique no ícone de seta para adicioná-los a Selected Objects. |
Selected Objects | Clique com o botão direito em um objeto para renomeá-lo, ou clique em Batch Edit para renomear vários objetos de uma vez. Clique com o botão direito em uma tabela para adicionar condições de filtro SQL. Consulte Mapear nomes de objetos e Set filter conditions . |
Se você usar o mapeamento de nomes de objetos, os objetos que dependem dos objetos renomeados poderão falhar na sincronização.
Clique em Next: Advanced Settings e configure os parâmetros a seguir.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS utiliza o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado do DTS. |
|
Time zone of destination database |
O fuso horário aplicado aos dados DateTime gravados no cluster ClickHouse de destino. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após falhas de conexão quando a tarefa está em execução. Valores válidos: 10 a 1440 minutos. Padrão: 720 minutos. Defina pelo menos 30 minutos. Se múltiplas tarefas compartilham o mesmo source ou destino, o menor tempo de retry é aplicado. As cobranças do DTS continuam durante as tentativas. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente operações DDL ou DML com falha. Valores válidos: 1 a 1440 minutos. Padrão: 10 minutos. Defina pelo menos 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. 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 somente quando Full Data Synchronization estiver selecionado. |
|
Enable Throttling for Incremental Data Synchronization |
Limita a carga durante a sincronização incremental. Configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesalert notification settings: o DTS não grava SQL de heartbeat no source, o que pode indicar latência na tarefa. No: o DTS grava SQL de heartbeat, o que pode afetar o backup físico e a clonagem do source. |
|
Environment Tag |
Tags opcionais para categorizar a instância de sincronização. |
|
Configure ETL |
Define se o recurso de extração, transformação e carregamento (ETL) será ativado. Yes: insira instruções de processamento de dados no editor de código. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. No: ignora o ETL. |
|
Monitoring and Alerting |
Yes: configure limiares de alerta e contatos de notificação para que o DTS envie alertas quando a tarefa falhar ou a latência de sincronização exceder o limiar definido. Consulte Configurar monitoramento e alertas. No: sem alertas. |
Clique em Next: Configure Database and Table Fields para definir o Type, a Primary Key Column, a Sort Key, a Distribution Key e a Partition Key para cada tabela ClickHouse de destino.
Por padrão, o DTS configura esses campos automaticamente. Para alterá-los, defina Definition Status como All .
Primary Key Column e Sort Key aceitam múltiplas colunas. Distribution Key aceita apenas uma coluna.
Partition Key é opcional. Se configurado, todas as colunas selecionadas devem ser campos não nulos.
Para detalhes sobre os parâmetros de tabela do ClickHouse, consulte CREATE TABLE .
Etapa 4: Executar o precheck
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros de API desta tarefa, posicione o ponteiro sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
O DTS executa um precheck antes de iniciar a tarefa. Se o precheck falhar:
Clique em View Details ao lado do item com falha, corrija o problema e clique em Precheck Again.
Para itens de alerta que podem ser ignorados, clique em Confirm Alert Details > Ignore > OK, depois clique em Precheck Again. Ignorar alertas pode causar inconsistência nos dados.
Etapa 5: Adquirir uma instância
Aguarde até que Success Rate atinja Success Rate 100%, depois clique em Next: Purchase Instance.
Na página buy, configure os parâmetros a seguir.
|
Parâmetro |
Descrição |
|
Billing Method |
Subscription: pagamento antecipado, mais econômico para uso de longo prazo. Pay-as-you-go: faturado por hora, adequado para uso de curto prazo. Libere a instância quando não for mais necessária para interromper as cobranças. |
|
Resource Group Settings |
O grupo de recursos para a instância de sincronização. Padrão: default resource group. Consulte O que é o Resource Management? |
|
Instance Class |
A classe da instância determina a velocidade de sincronização. Consulte Classes de instância para instâncias de sincronização de dados. |
|
Subscription Duration |
Disponível somente para o método de faturamento Subscription. Opções: 1 a 9 meses, ou 1, 2, 3 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 aparece na lista de tarefas. Acompanhe seu progresso por lá.
Consultar dados sincronizados
Após a conclusão da sincronização, use a instrução a seguir para consultar dados no cluster ClickHouse de destino:
SELECT * FROM table_name FINAL WHERE _sign > 0;
A palavra-chave FINAL mescla linhas com a mesma sort key e retorna a versão mais recente. O filtro WHERE _sign > 0 exclui linhas marcadas para exclusão.
Apêndice
Intervalo de tempo
|
Tipo de dado |
Valor mínimo |
Valor máximo |
|
Date |
1970-01-01 00:00:00 |
2149-06-06 00:00:00 |
|
Date32 |
1925-01-01 00:00:00 |
2283-11-11 00:00:00 |
|
DateTime |
1970-01-01 08:00:00 |
2106-02-07 14:28:15 |
|
DateTime64 |
1925-01-01 08:00:00 |
2283-11-12 07:59:59 |
Tabelas
Ao criar tabelas de destino manualmente (sem sincronização de schema), as tabelas devem atender aos seguintes requisitos.
Se a tabela de destino incluir o parâmetro ENGINE, defina-o como ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted). Qualquer outro valor causará inconsistência nos dados.
Community-compatible Edition: crie uma tabela local e uma tabela distribuída. O nome da tabela distribuída deve corresponder ao nome da tabela source. O nome da tabela local segue o formato
<distributed_table_name>_local.Enterprise Edition: crie uma tabela com o mesmo nome da tabela source.
Campos
O DTS adiciona os seguintes campos de metadados às tabelas de destino.
ApsaraDB for ClickHouse Community-compatible Edition executando V23.8 ou anterior
|
Campo |
Tipo de dado |
Valor padrão |
Descrição |
|
|
Int8 |
1 |
Tipo de operação DML: INSERT ou UPDATE = |
|
|
UInt64 |
1 |
O momento em que a linha foi gravada no cluster ClickHouse. |
ApsaraDB for ClickHouse Enterprise Edition ou Community-compatible Edition executando V23.8 ou posterior
|
Campo |
Tipo de dado |
Valor padrão |
Descrição |
|
|
Int8 |
1 |
Tipo de operação DML: INSERT ou UPDATE = |
|
|
UInt8 |
0 |
Indica se a linha foi excluída: INSERT ou UPDATE = |
|
|
UInt64 |
1 |
O timestamp do momento em que a linha foi gravada no cluster ClickHouse. |