O Data Transmission Service (DTS) migra dados do ApsaraDB RDS for MySQL para o ApsaraDB for ClickHouse, permitindo análises centralizadas em seus dados operacionais. Este tópico aborda a configuração completa desse fluxo de migração, incluindo as migrações completa e incremental (CDC).
Antes de começar
Antes de iniciar a tarefa de migração, verifique se os seguintes requisitos foram atendidos.
Cluster de destino
O cluster de destino ApsaraDB for ClickHouse deve executar a versão 20.8 ou posterior. Consulte Criar um cluster.
O espaço de armazenamento no cluster de destino deve exceder o armazenamento utilizado pela instância RDS MySQL de origem.
Permissões da conta do banco de dados de origem
A conta do banco de dados de origem precisa ter permissões de leitura nos objetos a serem migrados. Caso a conta não tenha sido criada pelo console RDS, conceda as seguintes permissões manualmente:
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, SELECT ON *.* TO '<account>'@'%';
Consulte Criar uma conta e Modificar permissões da conta.
Permissões da conta do cluster de destino
| Versão do ClickHouse | Permissões necessárias | Como conceder |
|---|---|---|
| 22.8 ou posterior | Permissões de leitura e gravação (uma conta privilegiada atende a esse requisito) | Gerenciar contas para um cluster Community-compatible Edition |
| 21.8 | Read, Write and Set Permissions e Allow DDL | Gerenciar contas para um cluster Community-compatible Edition |
Requisitos de log binário (apenas para migração incremental)
Se você planeja incluir a migração incremental de dados, configure os seguintes parâmetros na instância MySQL de origem.
Ativar retenção de log binário
O período mínimo de retenção depende do tipo de origem:
ApsaraDB RDS for MySQL: Os logs binários devem ser retidos por pelo menos 3 dias (recomenda-se 7 dias).
MySQL autogerenciado: Os logs binários devem ser retidos por pelo menos 7 dias.
Logs retidos por um período inferior ao mínimo necessário podem causar falha na tarefa de migração ou resultar em perda de dados. Para definir o período de retenção de uma instância RDS MySQL, consulte Configurar parâmetros para exclusão automática de arquivos de log binário de uma instância RDS.
Configurar formato do log binário
Defina os seguintes parâmetros na instância MySQL de origem:
|
Parâmetro |
Valor obrigatório |
|
|
|
|
|
|
Essas configurações são essenciais para que o DTS leia dados de alterações no nível de linha. Se não forem definidas corretamente, a pré-verificação falhará e a tarefa de migração não poderá ser iniciada.
Se a origem for um banco de dados MySQL autogerenciado implantado em um cluster com dois primários, defina tambémlog_slave_updates=ONpara que o DTS possa obter todos os logs binários.
Faturamento
|
Tipo de migração |
Custo |
|
Migração de esquema + migração completa de dados |
Gratuito |
|
Migração incremental de dados |
Pago. Consulte Visão geral do faturamento. |
Execute a migração de dados fora dos horários de pico. A migração completa consome recursos de leitura e gravação tanto na origem quanto no destino, aumentando a carga do banco de dados.
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Operações SQL suportadas |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, TRUNCATE TABLE, ADD COLUMN, MODIFY COLUMN, DROP COLUMN |
Limitações
Restrições do banco de dados de origem
Limite de migração no nível de tabela: Uma única tarefa de migração suporta no máximo 1.000 tabelas quando o mapeamento de nomes de objetos é utilizado. Se ultrapassar esse limite, divida as tabelas em várias tarefas ou migre o banco de dados inteiro.
Colunas invisíveis (MySQL 8.0.23 e posterior): O DTS não consegue ler colunas invisíveis, o que causa perda de dados. Para tornar uma coluna visível, execute
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;. Tabelas sem chaves primárias explícitas geram automaticamente chaves primárias invisíveis — torne-as visíveis também. Consulte Colunas Invisíveis e Chaves Primárias Invisíveis Geradas.RDS MySQL V5.6 somente leitura: Este tipo de instância não registra logs de transação e não pode ser usado como origem para migração incremental.
Instâncias com EncDB ativado: Não há suporte para migração completa de dados. Instâncias com Transparent Data Encryption (TDE) ativado suportam migração de esquema, migração completa de dados e migração incremental de dados.
Restrições de DDL durante a migração: Não execute instruções DDL enquanto a migração de esquema ou a migração completa de dados estiver em andamento. Para migrações apenas completas, não grave no banco de dados de origem durante o processo.
Restaurações de backup físico e operações em cascata: Dados de alteração gerados por restaurações de backup físico ou operações em cascata na origem não são registrados nem migrados para o destino enquanto a instância de migração estiver em execução. Se isso ocorrer, execute a migração completa de dados novamente, desde que sua operação não seja afetada.
Outras restrições
Não há suporte para migração de INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e chaves estrangeiras.
A operação RENAME TABLE não pode ser migrada.
Caso o banco de dados de origem tenha operações de alteração DDL online no modo de tabela temporária, como em cenários de mesclagem de múltiplas tabelas, pode ocorrer perda de dados no banco de destino ou falha na instância de migração.
Se a origem contiver alterações DDL online realizadas com pt-online-schema-change, pode haver perda de dados ou falha na migração. Ao migrar uma ou mais tabelas em vez de um banco de dados inteiro, não use pt-online-schema-change para executar operações DDL online nos objetos de migração na origem — caso contrário, a migração falhará. Alterações DDL online realizadas com DMS ou gh-ost são suportadas — o DTS migra a instrução DDL original sem copiar dados de tabelas temporárias, mas isso pode causar bloqueio de tabelas no destino. É possível usar o Data Management (DMS) para realizar operações DDL online.
Instruções DDL na origem que não seguirem a sintaxe padrão do MySQL podem causar falha na tarefa de migração ou perda de dados.
A quantidade de bancos de dados a serem migrados não deve exceder 256 (limite do ClickHouse).
Os nomes de bancos de dados, tabelas e colunas devem obedecer às Convenções de nomenclatura do ApsaraDB for ClickHouse.
Durante a migração de esquema, o DTS adiciona os campos _sign, _is_deleted e _version às tabelas de destino. Se pular a migração de esquema, crie as tabelas de destino manualmente e inclua esses campos. Consulte Apêndice: informações de tabela e campo.
Não grave dados de fontes externas ao DTS no banco de dados de destino enquanto a migração estiver em execução.
Se uma tarefa do DTS falhar, 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. Nota: apenas os parâmetros da tarefa DTS podem ser alterados — os parâmetros dos bancos de dados permanecem inalterados. Os parâmetros passíveis de modificação incluem, entre outros, aqueles descritos na seção Modificar parâmetros da instância.
Restrições específicas do ClickHouse
Intervalo de dados de tipo temporal: Os tipos de tempo do ClickHouse possuem limites de intervalo. Dados de origem fora desses intervalos serão gravados incorretamente. Consulte Apêndice: informações de tempo.
Chave de partição: Não pode ser um campo anulável. Tipos suportados: BIGINT, INT, TIMESTAMP, DATETIME, DATE.
Máximo de bancos de dados: 256.
Casos especiais
Origens MySQL autogerenciadas
A tarefa falhará se você realizar um failover primário/secundário no banco de dados de origem durante a execução da migração.
O DTS calcula a latência da migração com base no timestamp dos últimos dados migrados no destino e no timestamp atual na origem. Se nenhuma operação DML for executada na origem por um longo período, a latência pode ficar imprecisa. Para atualizar a latência, execute uma operação DML na origem. Se selecionar um banco de dados inteiro como objeto de migração, crie uma tabela de heartbeat atualizada a cada segundo.
Periodicamente, o DTS executa
CREATE DATABASE IF NOT EXISTS \test\`` no banco de dados de origem para avançar a posição do arquivo de log binário.
Origens ApsaraDB RDS for MySQL
Na migração incremental de dados, uma instância ApsaraDB RDS for MySQL V5.6 somente leitura não pode ser usada como banco de dados de origem.
Periodicamente, o DTS executa
CREATE DATABASE IF NOT EXISTS \test\`` no banco de dados de origem para avançar a posição do arquivo de log binário.
Mapeamentos de tipos de dados
Os tipos de dados do MySQL e do ClickHouse não possuem correspondência direta. Durante a migração de esquema, o DTS mapeia os tipos de origem para tipos compatíveis do ClickHouse. Consulte Mapeamentos de tipos de dados entre bancos de dados heterogêneos.
Migrar dados do RDS MySQL para o ClickHouse
Etapa 1: Abrir a página de Migração de Dados
Utilize um dos métodos abaixo para acessar a página de Migração de Dados.
Console DTS
Faça login no console DTS.console 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 de dados está localizada.
Console DMS
Nota
A navegação real pode variar conforme o modo e o layout do console DMS. Consulte Modo simples e Personalizar o layout e o estilo do console DMS.
Faça login no console DMS.console DMS
Na barra de navegação superior, acesse Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa ao lado de Data Migration Tasks, selecione a região onde a instância reside.
Etapa 2: Configurar a tarefa
Clique em Create Task para abrir a página de configuração da tarefa. Configure os parâmetros descritos na tabela a seguir.
| Categoria | Parâmetro | Descrição |
|---|---|---|
| — | Task Name | Um nome descritivo para esta tarefa DTS. O nome não precisa ser único. |
| Source Database | Select Existing Connection | Se a instância estiver registrada no DTS, selecione-a na lista — o DTS preencherá os detalhes de conexão automaticamente. Caso contrário, configure os parâmetros seguintes manualmente. No console DMS, selecione a instância na lista Select a DMS database instance. |
| Database Type | Selecione MySQL. | |
| Access Method | Selecione Alibaba Cloud Instance. | |
| Instance Region | A região onde a instância RDS MySQL de origem está localizada. | |
| Replicate Data Across Alibaba Cloud Accounts | Selecione No (migração na mesma conta). | |
| RDS Instance ID | O ID da instância RDS MySQL de origem. | |
| Database Account | A conta do banco de dados para a instância de origem. Consulte Antes de começar. | |
| Database Password | A senha da conta do banco de dados. | |
| Encryption | Selecione Non-encrypted ou SSL-encrypted. Para usar criptografia SSL, ative-a primeiro na instância RDS. Consulte Usar um certificado de nuvem para ativar criptografia SSL. | |
| Destination Database | Select Existing Connection | Se o cluster estiver registrado no DTS, selecione-o na lista. Caso contrário, configure os parâmetros seguintes manualmente. |
| Database Type | Selecione ClickHouse. | |
| Access Method | Selecione Alibaba Cloud Instance. | |
| Instance Region | A região onde o cluster ClickHouse de destino está localizado. | |
| Replicate Data Across Alibaba Cloud Accounts | Selecione No (migração na mesma conta). | |
| Cluster Type | Selecione o tipo de cluster. | |
| Cluster ID | O ID do cluster ClickHouse de destino. | |
| Database Account | A conta do banco de dados para o cluster de destino. Consulte Antes de começar. | |
| Database Password | A senha da conta do banco de dados. |
Etapa 3: Testar conectividade
Clique em Test Connectivity and Proceed na parte inferior da página.
Adicione os blocos CIDR dos servidores DTS às configurações de segurança dos bancos de dados de origem e de destino. Consulte Adicionar os blocos CIDR dos servidores DTS . Se a origem ou o destino for um banco de dados autogerenciado que não utiliza o método de acesso Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 4: Selecionar objetos para migração
Na página Configure Objects, defina as seguintes configurações.
| Configuração | Descrição |
|---|---|
| Migration Types | Selecione os tipos de migração conforme seu cenário: <br>- Schema Migration + Full Data Migration: Migra o snapshot atual. Sem replicação contínua. <br>- Schema Migration + Full Data Migration + Incremental Data Migration: Migra o snapshot e aplica alterações contínuas. Use esta opção para manter o destino sincronizado durante a janela de transição. <br><br> Nota
Se você pular a Schema Migration, crie as tabelas de destino manualmente antes de iniciar a tarefa. Se pular a Incremental Data Migration, não grave no banco de dados de origem durante a migração. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (padrão): O DTS verifica se existem tabelas com nomes idênticos na origem e no destino. A tarefa não inicia se houver conflitos. Utilize o mapeamento de nomes de objetos para resolver conflitos sem excluir tabelas de destino. <br><br>Ignore Errors and Proceed: Ignora a verificação. Durante a migração completa, registros conflitantes no destino são mantidos (não sobrescritos). Na migração incremental, registros conflitantes são sobrescritos. Use esta opção com cautela. |
| Capitalization of Object Names in Destination Instance | Define como os nomes de bancos de dados, tabelas e colunas serão capitalizados no destino. O padrão é DTS default policy. Consulte Especificar a capitalização de nomes de objetos. |
| Source Objects | Selecione os objetos (bancos de dados ou tabelas) a serem migrados e clique no ícone de seta para movê-los para Selected Objects. |
| Selected Objects | Clique com o botão direito em uma tabela para renomeá-la (objeto único) ou definir condições de filtro de linhas. Clique em Batch Edit para renomear vários objetos simultaneamente (renomeação em lote). Nota
Renomear um objeto pode fazer com que objetos dependentes falhem na migração. Nota
|
Etapa 5: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda tarefas no cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado DTS. |
|
Time zone of destination database |
O fuso horário para dados DateTime gravados no ClickHouse. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após uma falha de conexão. Intervalo: 10–1.440 minutos. Padrão: 720. Defina este valor para pelo menos 30 minutos. Se o DTS reconectar dentro dessa janela, a tarefa será retomada automaticamente. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta novamente após falhas de DDL ou DML. Intervalo: 1–1.440 minutos. Padrão: 10. Defina este valor para pelo menos 10 minutos. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita a carga de leitura/gravação na origem e no destino durante a migraçã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 apenas quando Full Data Migration estiver selecionado. |
|
Enable Throttling for Incremental Data Migration |
Limita a carga durante a migração incremental. 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 |
Yes:configurações de notificação de alerta O DTS não grava SQL de heartbeat na origem. Um valor de latência da tarefa pode ser exibido. No: O DTS grava SQL de heartbeat, o que pode afetar recursos como backup físico e clonagem da origem. |
|
Environment Tag |
Opcional. Selecione uma tag para identificar o ambiente da instância. |
|
Configure ETL |
Yes: Ativa o recurso de extração, transformação e carga (ETL). Insira instruções de processamento de dados no editor. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. No: Desativa o ETL. |
|
Monitoring and Alerting |
Yes: Configura alertas para falhas na tarefa ou violações de limiar de latência. Defina o limiar de alerta e os contatos de notificação. Consulte Configurar monitoramento e alertas. No: Sem alertas. |
Etapa 6: Configurar campos da tabela ClickHouse
Clique em Next: Configure Database and Table Fields para definir o Type, Primary Key Column, Sort Key, Distribution Key e Partition Key para cada tabela de destino no ClickHouse.
O DTS fornece uma configuração padrão. Para revisar ou modificar todas as tabelas, defina Definition Status como All.
Primary Key Column e Sort Key suportam chaves compostas — selecione vários campos na lista suspensa.
Partition Key deve ser uma ou mais colunas de Primary Key Column. Apenas os tipos BIGINT, INT, TIMESTAMP, DATETIME e DATE são suportados. Campos anuláveis não podem ser usados como chave de partição. É permitido deixar a chave de partição em branco.
Distribution Key aceita apenas um único campo.
Para detalhes sobre chaves primárias, chaves de ordenação e chaves de partição no ClickHouse, consulte CREATE TABLE.
Etapa 7: Executar pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros de API correspondentes a esta configuração de tarefa, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
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.
Corrija o problema com base nos resultados da verificação.
Clique em Precheck Again.
Se um item de alerta puder ser ignorado: clique em Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar alertas pode causar inconsistência de dados.
Etapa 8: Adquirir a instância e iniciar a migração
Aguarde até que a Success Rate atinja 100%, então clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure o seguinte:
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 é 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 > OK.
Verificar a migração
Monitore a tarefa na página Data Migration.
Migração apenas completa (sem incremental): A tarefa para automaticamente ao ser concluída. O Status mostra Completed.
Migração com dados incrementais: A tarefa executa continuamente. O Status mostra Running. Pare a tarefa manualmente após realizar a transição (cutover) das suas aplicações.
Consultar dados migrados corretamente
O DTS utiliza o mecanismo ReplicatedReplacingMergeTree e adiciona os campos _sign, _is_deleted e _version às tabelas de destino. Sem a palavra-chave FINAL, as consultas podem retornar linhas duplicadas ou excluídas. Sempre use FINAL e filtre por _sign:
SELECT * FROM <table_name> FINAL WHERE _sign > 0;
A condição WHERE _sign > 0 filtra linhas marcadas como excluídas.
Apêndice: informações de tempo
Os tipos de tempo do ClickHouse possuem limites de intervalo. Valores de origem fora desses intervalos são gravados incorretamente no destino.
|
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 |
Apêndice: informações de tabela e campo
Requisitos de tabela para criação manual
Se você pular a migração de esquema, crie as tabelas de destino antes de iniciar a tarefa. As tabelas devem atender a estes requisitos.
Se a tabela de destino incluir uma cláusula ENGINE, ela deve ser ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted). Caso contrário, pode ocorrer inconsistência de dados.
Community Edition: Crie uma tabela local e uma tabela distribuída. O nome da tabela distribuída deve corresponder ao nome da tabela de origem. O nome da tabela local deve ser
<distributed_table_name>_local.Enterprise Edition: Crie uma tabela com o mesmo nome da tabela de origem.
Campos gerenciados pelo DTS
O DTS adiciona automaticamente os seguintes campos às tabelas de destino durante a migração de esquema.
| Versão | Campo | Tipo | Padrão | Descrição |
|---|---|---|---|---|
| Community Edition anterior à 23.8 | _sign | Int8 | 1 | Tipo de operação DML: INSERT ou UPDATE = 1, DELETE = -1 |
| _version | UInt64 | 1 | Timestamp quando a linha foi gravada no ClickHouse | |
| Enterprise Edition e Community Edition 23.8 e posterior | _sign | Int8 | 1 | Tipo de operação DML: INSERT ou UPDATE = 1, DELETE = -1 |
| _is_deleted | UInt8 | 0 | Sinalizador de exclusão: INSERT ou UPDATE = 0, DELETE = 1 | |
| _version | UInt64 | 1 | Timestamp quando a linha foi gravada no ClickHouse |
Lógica de cálculo da chave de partição
|
Tipo de campo de origem |
Expressão da chave de partição |
|
BIGINT |
|
|
INT |
|
|
TIMESTAMP |
|
|
DATETIME |
|
|
DATE |
|