O Data Transmission Service (DTS) permite migrar dados de um cluster PolarDB for MySQL para um cluster ApsaraDB for ClickHouse, viabilizando a análise centralizada dos seus dados operacionais.
Etapas mínimas para concluir esta migração:
Atenda aos pré-requisitos (versão do cluster ClickHouse, log binário, se necessário).
Conceda as permissões necessárias nos bancos de dados source e de destino.
Crie e configure uma tarefa de migração do DTS.
Execute a pré-verificação, adquira uma instância e inicie a migração.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um cluster ApsaraDB for ClickHouse executando a versão 20.8 ou posterior. Consulte Crie um cluster.
Um cluster ClickHouse com espaço de armazenamento maior que o espaço de armazenamento utilizado pelo cluster PolarDB for MySQL source.
Para migração incremental de dados: log binário ativado no cluster source, com o parâmetro
loose_polar_log_bindefinido comoon. Consulte Enable binary logging e Modifique parâmetros.
Ativar o log binário em um cluster PolarDB for MySQL gera cobranças de armazenamento para os arquivos de log binário. Defina o período de retenção do log binário para pelo menos 3 dias (7 dias recomendados) para evitar que o DTS perca o acesso aos logs. Consulte Modifique o período de retenção .
Faturamento
|
Tipo de migração |
Taxa de configuração do link |
Custo de transferência de dados |
|
Migração de schema + migração completa de dados |
Sem custo |
Sem custo |
|
Migração incremental de dados |
Cobrança aplicável |
Consulte Billing overview |
Permissões necessárias
Conceda as seguintes permissões antes de configurar a tarefa de migração.
Banco de dados | Permissões necessárias | Como conceder |
Cluster PolarDB for MySQL source | Permissões de leitura nos objetos de migração | Crie e gerencie uma conta de banco de dados e Manage the password of a database account |
Cluster ApsaraDB for ClickHouse de destino (v22.8 ou posterior) | Permissões de leitura e gravação — uma conta privilegiada atende a esse requisito | Account management for Community-compatible Edition clusters |
Cluster ApsaraDB for ClickHouse de destino (v21.8) | Permissões de leitura, gravação e configuração, e ativação de DDL | Igual ao anterior |
Limitações
Limites do banco de dados source
A largura de banda de saída do servidor do banco de dados source deve ser suficiente; a largura de banda baixa reduz a velocidade da migração.
Uma única tarefa de migração suporta no máximo 1.000 tabelas ao migrar no nível de tabela com mapeamento de nomes de objetos. Caso ultrapasse esse limite, divida as tabelas em várias tarefas ou migre no nível do banco de dados.
Durante a migração de schema e a migração completa de dados, não execute operações DDL no banco de dados source para evitar falhas na tarefa de migração.
Durante a migração completa de dados, o DTS consulta o banco de dados source e pode criar um bloqueio de metadados que impede temporariamente as operações DDL.
Caso execute apenas a migração completa de dados (sem migração incremental), não grave novos dados no banco de dados source durante a migração para evitar inconsistência de dados.
Outros limites
Os nós somente leitura do cluster PolarDB for MySQL source não podem ser migrados.
Tabelas externas do Object Storage Service (OSS) não são migradas.
Não há suporte para os seguintes tipos de objetos: INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e FOREIGN KEY (FK).
Não há suporte para failover primário/standby durante a migração completa de dados. Caso ocorra um failover, reconfigure a tarefa de migração.
A operação RENAME TABLE não pode ser migrada.
O limite máximo de bancos de dados para migração é 256 (limite do ApsaraDB for ClickHouse).
Os nomes de bancos de dados, tabelas e colunas devem estar em conformidade com ApsaraDB for ClickHouse naming conventions.
A Chave de Partição não pode ser um campo anulável e aceita apenas os tipos de dados BIGINT, INT, TIMESTAMP, DATETIME e DATE.
Os dados de data e hora no ApsaraDB for ClickHouse possuem limites de intervalo específicos. Consulte Intervalos de tipos de dados de data e hora para obter detalhes.
Quando a migração de schema está ativada, o DTS adiciona automaticamente os campos
_sign,_is_deletede_versionàs tabelas de destino. Caso pule a migração de schema, crie as tabelas de destino manualmente com esses campos. Consulte Requisitos da tabela de destino.Durante a migração do DTS, não grave dados de outras origens no banco de dados de destino para evitar inconsistência de dados.
Caso uma instância do DTS falhe, a equipe do DTS tentará recuperá-la em até 8 horas. As operações de recuperação podem incluir a reinicialização da instância e o ajuste de parâmetros da instância do DTS (os parâmetros do banco de dados nunca são modificados).
Antes da migração, avalie o desempenho de ambos os bancos de dados e execute a migração em horários de baixa demanda para reduzir a carga.
Caso esteja migrando tabelas específicas (e não um banco de dados inteiro), não use o pt-online-schema-change para alterações DDL online nessas tabelas para evitar falhas na migração. Use o Data Management (DMS). Consulte Alterar schemas sem bloquear tabelas.
Não há suporte para a migração de dados do tipo VECTOR.
Limites de DDL online
|
Ferramenta ou modo |
Comportamento |
|
DMS ou gh-ost (alterações DDL online no source) |
O DTS migra a instrução DDL original para o destino sem migrar os dados da tabela temporária, o que pode causar bloqueios de tabela no destino. |
|
pt-online-schema-change |
Não há suporte. Podem ocorrer perdas de dados no destino ou falhas na instância de migração. |
|
DDL online no modo de tabela temporária (incluindo mesclagem de várias tabelas) |
Podem ocorrer perdas de dados no destino ou falhas na instância de migração. |
|
Sintaxe DDL do MySQL não padrão no source |
A migração pode falhar ou pode haver perda de dados. |
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Instruções SQL suportadas |
Instruções SQL não suportadas |
|
DML |
INSERT, UPDATE, DELETE |
— |
|
DDL |
CREATE TABLE, TRUNCATE TABLE, DROP TABLE, ADD COLUMN, MODIFY COLUMN, DROP COLUMN |
RENAME TABLE; todas as operações DDL relacionadas a INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e FOREIGN KEY |
Mapeamentos de tipos de dados
Como o PolarDB for MySQL e o ApsaraDB for ClickHouse suportam tipos de dados diferentes, nem sempre é possível fazer um mapeamento um para um. Durante a migração de schema, o DTS mapeia os tipos de dados do source para os tipos mais próximos suportados pelo ClickHouse. Consulte Data type mappings between heterogeneous databases para ver a tabela de mapeamento completa.
Crie uma tarefa de migração
Etapa 1: Acessar a página Data Migration
Use um dos seguintes consoles.
Console do DTS
Acesse o console do DTS.
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região da instância de migração.
Console do DMS
As etapas exatas podem variar conforme o modo e o layout do seu console do DMS. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS .
Acesse o console do DMS.
Na barra de navegação superior, passe o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa ao lado de Data Migration Tasks, selecione a região da instância de migração.
Etapa 2: Configurar os bancos de dados source e de destino
Clique em Create Task e configure os seguintes parâmetros.
Categoria | 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. |
Source Database | Select Existing Connection | Selecione uma instância de banco de dados registrada na lista suspensa. O DTS preencherá os parâmetros restantes automaticamente. Caso a instância não esteja registrada, preencha os parâmetros manualmente. No console do DMS, use a lista suspensa Select a DMS database instance. |
Database Type | Selecione PolarDB for MySQL. | |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | Selecione a região do cluster PolarDB for MySQL source. | |
Replicate Data Across Alibaba Cloud Accounts | Selecione No para migração na mesma conta. | |
PolarDB Cluster ID | Selecione o ID do cluster PolarDB for MySQL source. | |
Database Account | Insira a conta do banco de dados. Consulte Permissões necessárias. | |
Database Password | Insira a senha da conta do banco de dados. | |
Encryption | Selecione o método de criptografia desejado. Para criptografia Secure Sockets Layer (SSL), consulte Defina a criptografia SSL. | |
Destination Database | Select Existing Connection | Igual ao source: selecione uma instância registrada ou preencha os parâmetros manualmente. |
Database Type | Selecione ClickHouse. | |
Access Method | Selecione Alibaba Cloud Instance. | |
Instance Region | Selecione a região do cluster ApsaraDB for ClickHouse de destino. | |
Replicate Data Across Alibaba Cloud Accounts | Selecione No para migração na mesma conta. | |
Cluster Type | Selecione o tipo de cluster ApsaraDB for ClickHouse. | |
Cluster ID | Selecione o ID do cluster ApsaraDB for ClickHouse de destino. | |
Database Account | Insira a conta do banco de dados. Consulte Permissões necessárias. | |
Database Password | Insira a senha da conta do banco de dados. |
Clique em Test Connectivity and Proceed.
Certifique-se de adicionar os blocos CIDR dos servidores do DTS às configurações de segurança (lista de permissões) de ambos os bancos de dados. Consulte Adicionar endereços IP do servidor DTS a uma lista de permissões .
Etapa 3: Configurar os objetos de migração
Na página Configure Objects, defina os seguintes parâmetros.
Parâmetro | Descrição |
Migration Types | Selecione os tipos de migração de acordo com o seu objetivo: <br>• Schema Migration + Full Data Migration: cópia única de dados, sem replicação contínua. <br>• Schema Migration + Full Data Migration + Incremental Data Migration: replicação contínua que mantém o destino sincronizado enquanto o source permanece ativo. <br><br> Nota Caso pule a Schema Migration, crie as tabelas de destino manualmente antes de iniciar. Caso pule a Incremental Data Migration, evite gravar dados no banco de dados source durante a migração. |
Processing Mode of Conflicting Tables | Precheck and Report Errors (padrão): a pré-verificação falhará se as tabelas de destino compartilharem nomes com as tabelas source. Use o mapeamento de nomes de objetos para renomear as tabelas, se necessário. <br><br>Ignore Errors and Proceed: ignora a verificação. Durante a migração completa de dados, os registros conflitantes no destino são mantidos; durante a migração incremental, eles são sobrescritos. Se os schemas forem diferentes, apenas as colunas correspondentes serão migradas. Use com cautela. |
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. O padrão é DTS default policy. Consulte Especifique a capitalização dos nomes de objetos na instância de destino. |
Source Objects | Selecione bancos de dados ou tabelas na seção Source Objects e clique no ícone de seta para adicioná-los aos Selected Objects. |
Selected Objects | Clique com o botão direito do mouse em um objeto para renomeá-lo. Clique em Batch Edit para renomear vários objetos simultaneamente. Clique com o botão direito do mouse em uma tabela e defina condições de filtro de dados. Consulte Mapear nomes de objetos e Defina as condições de filtro Para selecionar as operações SQL de uma tabela, clique com o botão direito do mouse no objeto correspondente na caixa Selected Objects e selecione as operações desejadas na caixa de diálogo exibida. Para obter a lista de operações suportadas, consulte SQL operations that can be incrementally migrated. . |
Etapa 4: Definir as configurações avançadas
Clique em Next: Advanced Settings e defina os seguintes parâmetros.
Parâmetro | Descrição |
Dedicated Cluster for Task Scheduling | Por padrão, o DTS agenda a tarefa no cluster compartilhado. Adquira um cluster dedicado para melhorar a estabilidade. Consulte O que é um cluster dedicado do DTS. |
Time zone of destination database | O fuso horário para dados de data e hora (como DateTime) gravados no cluster ClickHouse de destino. |
Retry Time for Failed Connections | Tempo durante o qual o DTS tentará reconectar após uma falha de conexão antes de interromper a tarefa. Intervalo: 10 a 1.440 minutos. Padrão: 720 minutos. Defina um valor maior que 30 minutos. <br><br> Nota Caso várias tarefas compartilhem o mesmo banco de dados source ou de destino, o valor definido mais recentemente entrará em vigor. O DTS cobra pela instância durante as novas tentativas. |
Retry Time for Other Issues | Tempo durante o qual o DTS tentará executar novamente operações DDL ou DML com falha antes de interromper a tarefa. Intervalo: 1 a 1.440 minutos. Padrão: 10 minutos. Defina um valor maior que 10 minutos. Deve ser menor que Retry Time for Failed Connections. |
Enable Throttling for Full Data Migration | Limita a carga de leitura e gravação no source e no destino durante a migração completa de dados. Configure Queries per second (QPS) to the source database, rows per second (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 a carga 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. |
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Controla se o DTS grava operações SQL da tabela de heartbeat no source enquanto a instância está em execução. Yes: as gravações de heartbeat são suprimidas, mas um indicador de latência pode ser exibido. No: as gravações de heartbeat são ativadas, o que pode afetar o backup físico e a clonagem do banco de dados source. |
Environment Tag | Uma tag opcional para identificar o ambiente (por exemplo, produção ou teste). |
Configure ETL | Ativa o recurso de extração, transformação e carregamento (ETL). Yes: insira instruções de processamento de dados no editor de código. Consulte Configurar ETL em uma tarefa de migração de dados ou sincronização de dados. No: pule a configuração de ETL. |
Monitoring and Alerting | Configura alertas para falhas de tarefa ou latência acima do limiar. Yes: defina o limiar de alerta e os contatos de notificação. Consulte Configurar monitoramento e alertas. No: não configura alertas. |
Etapa 5: Configurar os campos da tabela para o ClickHouse
Clique em Next: Configure Database and Table Fields e defina os parâmetros Type, Primary Key Column, Sort Key, Distribution Key e Partition Key para cada tabela migrada.
O DTS fornece configurações padrão. Revise-as ou modifique-as, defina Definition Status como All.
Regras principais:
Primary Key Column e Sort Key aceitam chaves compostas: selecione vários campos nas listas suspensas.
Selecione uma ou mais colunas da Primary Key Column para atuar como Partition Key.
A Distribution Key aceita apenas um único campo.
Deixe a Partition Key em branco se não for necessária, mas não selecione um campo anulável para evitar falhas na tarefa de migração.
As chaves de partição aceitam apenas BIGINT, INT, TIMESTAMP, DATETIME e DATE. Consulte Partition key calculation logic.
Para obter mais informações sobre chaves primárias, chaves de classificação e chaves de partição, consulte CREATE TABLE.
Etapa 6: Execute a pré-verificação e inicie a migração
Clique em Next: Save Task Settings and Precheck. Visualize os parâmetros da API para esta tarefa, passe o ponteiro do mouse sobre Próximo: Salve as configurações da tarefa e faça a pré-verificação e clique em Preview OpenAPI parameters antes de continuar.
-
O DTS executa uma pré-verificação antes de iniciar a migração. Caso a pré-verificação falhe:
Clique em View Details ao lado de cada item com falha, corrija o problema e clique em Precheck Again.
Caso um item exiba um aviso (e não uma falha) e você possa aceitar o risco, clique em Confirm Alert Details > Ignore > OK e, em seguida, clique em Precheck Again.
ImportanteIgnorar um alerta de pré-verificação pode causar inconsistência de dados.
Etapa 7: Adquirir a instância e iniciar a migração
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure os seguintes parâmetros.
Seção
Parâmetro
Descrição
New Instance Class
Resource Group
O grupo de recursos para a instância de migração. Padrão: default resource group. Consulte O que é o 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 e clique em Buy and Start > OK.
Visualize o progresso da migração na página Data Migration.
Caso a tarefa não inclua migração incremental de dados, ela será interrompida automaticamente após a conclusão. A coluna Status exibirá Completed .
Caso a tarefa inclua migração incremental de dados, ela será executada continuamente e não será interrompida automaticamente. A coluna Status exibirá Running .
Consultar os dados migrados
Após a migração, execute a seguinte consulta para recuperar dados do cluster ClickHouse de destino e atualize suas aplicações conforme necessário:
SELECT * FROM <table_name> FINAL WHERE _sign > 0;
O modificador
FINALdesduplica linhas com as mesmas chaves de classificação e garante a exibição da versão mais recente de cada linha.A cláusula
WHERE _sign > 0filtra as linhas excluídas.
Sem o FINAL, as consultas podem retornar registros duplicados ou excluídos.
Apêndice
Requisitos da tabela de destino
Caso pule a migração de schema e crie as tabelas de destino manualmente, as tabelas deverão atender aos seguintes requisitos.
Caso uma tabela de destino inclua o parâmetro ENGINE, defina-o como ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted). Qualquer outra configuração de mecanismo pode causar inconsistência de dados.
|
Edição do cluster |
Requisito de criação de tabela |
|
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 deve seguir o formato |
|
Enterprise Edition |
Crie uma tabela com o mesmo nome da tabela source. |
Campos extras adicionados pelo DTS
O DTS adiciona automaticamente os seguintes campos a cada tabela de destino durante a migração de schema.
Para consultar dados sincronizados, use:
SELECT * FROM <table_name> FINAL WHERE _sign > 0;
Versão do cluster | Campo | Tipo de dados | Valor padrão | Descrição |
Community-compatible Edition executando ClickHouse V23.8 ou anterior |
| Int8 | 1 | Tipo de operação DML: INSERT ou UPDATE = |
| UInt64 | 1 | Timestamp de gravação do registro no cluster ClickHouse. | |
Enterprise Edition ou Community-compatible Edition executando ClickHouse V23.8 ou posterior |
| Int8 | 1 | Tipo de operação DML: INSERT ou UPDATE = |
| UInt8 | 0 | Indica se o registro foi excluído: INSERT ou UPDATE = | |
| UInt64 | 1 | Timestamp de gravação do registro no cluster ClickHouse. |
Intervalos de tipos de dados de data e hora
Caso os dados de data e hora no cluster PolarDB for MySQL source estejam fora dos seguintes intervalos, os valores gravados no ApsaraDB for ClickHouse estarão incorretos.
|
Tipo de dados |
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 |
Lógica de cálculo da chave de partição
O DTS aplica a seguinte lógica ao derivar valores de chave de partição a partir dos campos source.
|
Tipo de campo source |
Lógica de cálculo |
|
BIGINT |
|
|
INT |
|
|
TIMESTAMP |
|
|
DATETIME |
|
|
DATE |
|