O Data Transmission Service (DTS) permite migrar dados do ApsaraDB RDS for MySQL para um banco de dados Apache Doris destinado a análises em grande escala. Este guia utiliza uma instância do RDS for MySQL como source e um banco de dados Doris implantado em uma instância ECS como destino.
Para verificar as versões compatíveis dos bancos de dados source e de destino, consulte Migration solutions overview.
Recursos suportados pelo DTS
|
Recurso |
Detalhes |
|
Migração de schema |
O DTS cria o schema de destino automaticamente. Caso pule esta etapa, crie tabelas com modelo Unique Key ou Duplicate Key no Doris antes da migração. |
|
Migração completa de dados |
Transfere todos os dados existentes. |
|
Migração incremental de dados |
Sincroniza continuamente as alterações do binary log do MySQL após a conclusão da migração completa. Selecione esta opção para obter tempo de inatividade próximo de zero. |
|
Operações DML |
INSERT, UPDATE, DELETE |
|
Operações DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
|
ETL |
Transformações opcionais de extração, transformação e carga (ETL) durante a migração. |
|
Limitação de taxa |
Limites configuráveis de consultas por segundo (QPS) e linhas por segundo (RPS) para migração completa e incremental. |
Operações RENAME TABLE podem causar inconsistência de dados. Se você renomear uma tabela durante a migração, adicione tanto o banco de dados anterior quanto o posterior à renomeação aos objetos de migração.
Faturamento
|
Tipo de migração |
Taxa de configuração de link |
Taxa de transferência de dados |
|
Migração de schema + migração completa de dados |
Gratuita |
Gratuita (exceto se o método de acesso ao destino for Public IP Address) |
|
Migração incremental de dados |
Cobrada |
— |
Para detalhes sobre preços, consulte Billing overview.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um banco de dados Apache Doris de destino com espaço de armazenamento superior ao da instância source do RDS for MySQL
Uma conta de banco de dados para a instância source do RDS for MySQL com as permissões listadas abaixo
Uma conta de banco de dados para o banco de dados Doris de destino com as permissões listadas abaixo
Permissões necessárias
| Banco de dados | Migração de schema | Migração completa | Migração incremental |
|---|---|---|---|
| Source RDS for MySQL | SELECT | SELECT | Leitura e gravação (REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, SELECT se a conta não foi criada no console RDS) |
| Doris de destino | Usage_priv, Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv | ||
Para criar contas e conceder permissões:
RDS for MySQL: consulte Create an account e Modify the permissions of an account.
Doris: consulte Authentication and authorization.
Requisitos de binary log (apenas para migração incremental)
Para migração incremental, a instância source do RDS for MySQL deve ter o binary log configurado corretamente:
binlog_format=ROWbinlog_row_image=FULLRetenção local de binary log: mínimo de 3 dias (recomendado: 7 dias)
Se o source for um banco de dados MySQL auto-gerenciado, os binary logs locais devem ser retidos por pelo menos 7 dias.
Caso alguma configuração esteja incorreta, a pré-verificação falhará e a migração não poderá ser iniciada.
Para instruções sobre como definir o período de retenção do binary log no RDS for MySQL, consulte Delete local logs automatically .
Limitações
Analise estas restrições antes de configurar a tarefa de migração.
Limitações do banco de dados source
O servidor que hospeda o banco de dados source precisa ter largura de banda de saída suficiente. Largura de banda baixa reduz a velocidade da migração.
Ao realizar migração incremental em um cluster MySQL auto-gerenciado com dois primários (onde cada nó é primário do outro), ative o parâmetro
log_slave_updatesno source.Para migrar tabelas com edições no nível de coluna (como mapeamento de nomes de colunas), uma única tarefa suporta no máximo 1.000 tabelas. Em migrações maiores, divida as tabelas em várias tarefas ou migre o banco de dados inteiro.
Não execute operações DDL que alterem o schema do banco de dados ou da tabela durante a migração de schema ou a migração completa de dados. Essa ação causa falha na tarefa.
Se executar apenas a migração completa de dados (sem incremental), não grave novos dados no source durante a migração.
Dados gerados por operações não registradas nos binary logs — como restauração de backup físico ou operações em cascata — não são migrados.
Se o source for MySQL 8.0.23 ou posterior e os dados contiverem colunas invisíveis, essas colunas não serão migradas, o que pode causar perda de dados. Execute
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;para tornar as colunas invisíveis visíveis antes da migração. Tabelas sem chave primária geram automaticamente uma chave primária invisível — você também deve tornar essa chave primária invisível visível. Para mais informações, consulte Generated Invisible Primary Keys.Instâncias do RDS for MySQL com o recurso always-confidential ativado não suportam migração completa de dados. Instâncias com Transparent Data Encryption (TDE) ativado suportam todos os tipos de migração.
Limitações do destino (Doris)
O DTS só consegue gravar em tabelas que utilizam o modelo Unique Key ou modelo Duplicate Key no Doris.
Quando uma tabela de destino usa o modelo Duplicate Key, o DTS converte instruções UPDATE e DELETE em instruções INSERT. Linhas duplicadas podem surgir se a tarefa de migração for repetida, reiniciada ou se múltiplas operações DML tiverem como alvo o mesmo registro entre sincronizações. Utilize as colunas adicionais
_is_deleted,_versione_record_idpara deduplicação. Consulte Additional column information para detalhes.O único parâmetro de tabela configurável no DTS é
bucket_count(número de buckets). O valor deve ser um número inteiro positivo; o padrão éauto.Não crie um novo cluster no banco de dados Doris de destino durante a migração. Se a tarefa falhar por esse motivo, reinicie a instância de migração.
Não adicione nós Backend (BE) ao cluster Doris durante a migração. Se a tarefa falhar por esse motivo, reinicie a instância de migração.
O Doris aceita apenas nomes de bancos de dados e tabelas que começam com uma letra. Use o mapeamento de nomes de objetos para renomear quaisquer objetos que não comecem com uma letra.
Se algum nome de banco de dados, tabela ou coluna contiver caracteres chineses, use o mapeamento de nomes de objetos para renomeá-lo (por exemplo, para um nome em inglês). Caso contrário, a tarefa poderá falhar.
Evite operações DDL que modifiquem várias colunas simultaneamente ou que modifiquem a mesma tabela em rápida sucessão.
Em cenários de mesclagem de várias tabelas (várias tabelas source mescladas em uma tabela de destino), as tabelas source devem ter schemas idênticos.
O tipo
VARCHAR(M)do MySQL usa comprimento de caracteres (M); já oVARCHAR(N)do Doris usa comprimento de bytes (N). Se você pular a migração de schema e criar as tabelas do Doris manualmente, defina o comprimento VARCHAR do Doris como quatro vezes o comprimento VARCHAR do MySQL.Ao usar o Data Management (DMS) ou gh-ost para DDL online no source, o DTS migra apenas as instruções DDL originais, e não os dados da tabela temporária. Isso pode causar bloqueio de tabelas no destino. O pt-online-schema-change não é suportado para DDL online no source — seu uso pode resultar em perda de dados ou falha na tarefa.
Não utilize ferramentas como pt-online-schema-change nos objetos de migração do banco de dados source durante a migração.
A migração completa de dados usa operações INSERT concorrentes, o que causa fragmentação de tabelas. Após a migração completa, as tabelas de destino podem ocupar mais armazenamento do que no source.
Se outra origem gravar no banco de dados de destino durante a migração, poderá ocorrer inconsistência de dados.
Comportamento da migração incremental
Por padrão, o DTS processa em lote as gravações incrementais no destino no máximo uma vez a cada 5 segundos por objeto de sincronização. Isso resulta em uma latência de sincronização normal de até 10 segundos.
Para reduzir a latência, ajuste o parâmetro selectdb.reservoir.timeout.milliseconds da instância DTS no console. Faixa válida: 1.000–10.000 milissegundos.
Intervalos de lote menores aumentam a frequência de gravação no destino, o que eleva a carga e o tempo de resposta (RT) no Doris, podendo aumentar a latência geral de sincronização. Faça ajustes conforme a capacidade de carga do destino.
Recomendações de desempenho
Antes de iniciar a migração, verifique se a carga de CPU dos bancos de dados source e de destino está abaixo de 30%. Execute a migração fora dos horários de pico para minimizar o impacto nas cargas de trabalho de produção.
Casos especiais
Se o source for um banco de dados MySQL auto-gerenciado:
Um failover primário/secundário no source causa falha na tarefa de migração.
O DTS calcula a latência comparando o timestamp UNIX do último registro migrado com a hora atual. Se nenhuma operação DML for executada no source por um longo período, a latência exibida pode ser imprecisa. Execute uma operação DML no source para atualizá-la ou crie uma tabela de heartbeat com gravações a cada segundo.
Periodicamente, o DTS executa
CREATE DATABASE IF NOT EXISTSno source para avançar o offset do binary log.Para Amazon Aurora MySQL ou outras instâncias MySQL em cluster, confirme se o nome de domínio ou endereço IP configurado na tarefa sempre resolve para o nó de leitura/gravação (RW).
Se o source for uma instância do RDS for MySQL:
Instâncias somente leitura do RDS for MySQL (como instâncias somente leitura do RDS for MySQL 5.6) não registram logs de transação e não podem ser usadas como source para migração incremental.
Periodicamente, o DTS executa
CREATE DATABASE IF NOT EXISTSno source para avançar o offset do binary log.
Criar uma tarefa de migração
Etapa 1: Abrir a página Data Migration
Utilize um dos métodos a seguir para abrir a página Data Migration.
Console do DTS
Faça login no 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 Data Management (DMS)
O caminho exato de navegação pode variar conforme o modo e o layout do console DMS. Para detalhes, consulte Simple mode e Customize the layout and style of the DMS console .
Faça login no 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.
Etapa 2: Configurar os bancos de dados source e de destino
Clique em Create Task para abrir a página de configuração da tarefa e configure os parâmetros abaixo.
|
Parâmetro |
Configuração |
|
Task Name |
Insira um nome descritivo. Os nomes não precisam ser únicos. |
|
Select Existing Connection (source) |
Selecione uma instância de banco de dados DTS registrada ou configure o source manualmente. |
|
Database Type (source) |
MySQL |
|
Access Method (source) |
Alibaba Cloud Instance |
|
Instance Region (source) |
Região onde a instância source do RDS for MySQL reside |
|
Replicate Data Across Alibaba Cloud Accounts |
No (este exemplo usa uma única conta) |
|
RDS Instance ID |
ID da instância source do RDS for MySQL |
|
Database Account (source) |
Conta com as permissões necessárias (consulte Pré-requisitos) |
|
Database Password (source) |
Senha da conta do banco de dados |
|
Encryption |
Non-encrypted ou SSL-encrypted. Para usar SSL, ative primeiro a criptografia SSL na instância do RDS for MySQL. Consulte Use a cloud certificate to enable SSL encryption. |
|
Select Existing Connection (destino) |
Selecione uma instância de banco de dados DTS registrada ou configure o destino manualmente. |
|
Database Type (destino) |
Doris |
|
Access Method (destino) |
Self-managed Database on ECS (para este exemplo). Para outros tipos de acesso, consulte Preparations. |
|
Instance Region (destino) |
Região onde o banco de dados Doris de destino reside |
|
ECS Instance ID |
ID da instância ECS que hospeda o Doris. Se nós BE ou FE do Doris forem executados em instâncias ECS adicionais, adicione manualmente os blocos CIDR do servidor DTS às regras de segurança de cada uma dessas instâncias. |
|
Port Number |
Porta de service do banco de dados Doris de destino (padrão: 9030) |
|
Database Account (destino) |
Conta com as permissões necessárias (consulte Pré-requisitos) |
|
Database Password (destino) |
Senha da conta do banco de dados |
Etapa 3: Testar a 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 Confirm authorization and test link.
Certifique-se de que os blocos CIDR dos servidores DTS possam ser adicionados (automaticamente ou manualmente) às configurações de segurança tanto do source quanto do destino. Para detalhes, consulte Add DTS server IP addresses to a whitelist.
Etapa 4: Selecionar objetos e tipos de migração
Na página Configure Objects, defina as seguintes configurações.
Tipos de migração
|
Objetivo |
Seleção |
|
Migração completa com tempo de inatividade mínimo |
Schema Migration + Full Data Migration + Incremental Data Migration |
|
Apenas migração completa (parar gravações no source durante a migração) |
Schema Migration + Full Data Migration |
Se você pular a Schema Migration, crie tabelas com modelo Unique Key ou Duplicate Key com a estrutura correta no Doris antes de iniciar. Consulte Data type mappings, Additional column information e Primary Key Model.
Para tabelas sem chave primária ou restrição UNIQUE, defina Engine como duplicate na etapa Configure Database and Table Fields.
Modo de processamento de tabelas conflitantes
|
Opção |
Comportamento |
|
Precheck and Report Errors |
Falha na pré-verificação se já existirem tabelas de destino com o mesmo nome. Renomeie as tabelas conflitantes usando object name mapping, se necessário. |
|
Ignore Errors and Proceed |
Ignora a verificação. Registros com chaves primárias correspondentes sobrescrevem os registros de destino. Use com cautela — pode ocorrer inconsistência de dados. |
Capitalização de nomes de objetos na instância de destino
Por padrão, aplica-se a DTS default policy. Ajuste se precisar que a capitalização dos nomes dos objetos corresponda ao source ou ao destino. Consulte Specify the capitalization of object names in the destination instance.
Seleção e configuração de objetos de migração
Em Source Objects, selecione os bancos de dados ou tabelas a serem migrados e clique em
para movê-los para Selected Objects.-
Em Selected Objects, clique com o botão direito em qualquer objeto para:
Mapear seu nome para um nome diferente no destino
Selecionar operações SQL incrementais específicas no nível do banco de dados ou da tabela
Definir condições WHERE para filtrar linhas (Set filter conditions)
Definir o parâmetro
bucket_count(se a migração de schema estiver selecionada): clique com o botão direito em uma tabela, vá para Parameter Settings, defina Enable Parameter Settings como Yes, insira o valor e clique em OK
O uso de mapeamento de nomes de objetos pode causar falha na migração de objetos dependentes.
Etapa 5: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os parâmetros abaixo.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS usa o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Intervalo de tempo (10–1.440 minutos, padrão: 720) durante o qual o DTS tenta reconectar após falhas. Defina como mais de 30 minutos. O DTS retoma a tarefa se a reconexão ocorrer dentro dessa janela; caso contrário, a tarefa falha. Durante as tentativas, a instância DTS continua a gerar cobranças. |
|
Retry Time for Other Issues |
Intervalo de tempo (1–1.440 minutos, padrão: 10) durante o qual o DTS tenta repetir operações DDL ou DML com falha. Defina como mais de 10 minutos. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita o QPS no banco de dados source, o RPS e a velocidade de migração de dados (MB/s) para reduzir a carga no destino. Disponível apenas quando Full Data Migration estiver selecionado. |
|
Enable Throttling for Incremental Data Migration |
Limita o RPS e a velocidade de migração de dados (MB/s) para migração incremental. Disponível apenas quando Incremental Data Migration estiver selecionado. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yes: o DTS não grava operações da tabela de heartbeat no source (um indicador de latência pode aparecer). No: o DTS grava operações da tabela de heartbeat (pode afetar backups físicos e clonagem do banco de dados source). |
|
Environment Tag |
Tag opcional para identificar o ambiente da instância. |
|
Configure ETL |
Yes: insira instruções de processamento de dados no editor de código. Consulte Configure ETL in a data migration or data synchronization task. No: pule o ETL. |
|
Monitoring and Alerting |
Yes: configure limiares de alerta e contatos de notificação para falhas de tarefa ou picos de latência. Consulte Configure monitoring and alerting. No: pule os alertas. |
Etapa 6: (Opcional) Configurar campos de banco de dados e tabelas
Clique em Next: Configure Database and Table Fields para definir a Primary Key Column, Distribution Key e Engine das tabelas de destino.
Esta etapa está disponível apenas se Schema Migration estiver selecionado.
Defina Definition Status como All para visualizar e modificar todas as tabelas.
Primary Key Column suporta chaves primárias compostas. Selecione uma ou mais colunas em Primary Key Column como a Distribution Key .
Para tabelas sem chave primária ou restrição UNIQUE, defina Engine como duplicate .
Etapa 7: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da OpenAPI antes de salvar, 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. A tarefa só começa após a aprovação na pré-verificação.
Se algum item falhar, clique em View Details ao lado do item com falha, resolva o problema e clique em Precheck Again.
Se aparecer um alerta não crítico que possa ser ignorado com segurança, clique em Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Etapa 8: Adquirir e iniciar a instância
Aguarde até que Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure a instância:
Parâmetro
Descrição
Resource Group
Grupo de recursos para a instância de migração (padrão: default resource group). Consulte What is Resource Management?
Instance Class
Determina a velocidade da migração. Escolha conforme suas necessidades. Consulte Instance classes of data migration instances.
Leia e aceite os 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.
Verificar o status da migração
Visualize o progresso da tarefa na página Data Migration.
Apenas migração completa: a tarefa para automaticamente quando concluída. O status mostra Completed.
Migração completa + incremental: a fase incremental é executada continuamente. O status mostra Running.
Se uma instância falhar, o suporte do DTS tentará a recuperação dentro de 8 horas. As operações de recuperação podem incluir reiniciar a instância e ajustar parâmetros da instância DTS (não parâmetros do banco de dados). Para detalhes, consulte Modify instance parameters .
Mapeamentos de tipos de dados
Durante a migração de schema, o DTS converte automaticamente os tipos de dados do MySQL para os tipos correspondentes do Doris.
| Categoria | Tipo MySQL | Tipo Doris |
|---|---|---|
| Inteiro | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Decimal | DECIMAL / NUMERIC | DECIMAL (atributo zerofill não suportado) |
| FLOAT | FLOAT | |
| DOUBLE | DOUBLE | |
| BOOL / BOOLEAN | BOOLEAN | |
| Data e hora | DATE | DATEV2 |
| DATETIME[(fsp)] | DATETIMEV2 | |
| TIMESTAMP[(fsp)] | DATETIMEV2 | |
| TIME[(fsp)] | VARCHAR | |
| YEAR[(4)] | INT | |
| String | CHAR, VARCHAR | VARCHAR |
| BINARY, VARBINARY | STRING | |
| TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | |
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
CHAR e VARCHAR(n) são convertidos para VARCHAR(4*n) no Doris para evitar perda de dados.
Se nenhum comprimento for especificado, o padrão VARCHAR(65533) do Doris será usado.
Se o comprimento exceder 65533, os dados serão convertidos para STRING.
Informações adicionais sobre colunas
Para tabelas que usam o modelo Duplicate Key, o DTS adiciona automaticamente as seguintes colunas à tabela de destino. Utilize essas colunas para identificar e remover linhas duplicadas.
|
Coluna |
Tipo de dado |
Padrão |
Descrição |
|
|
INT |
0 |
Indicador de exclusão de linha: |
|
|
BIGINT |
0 |
|
|
|
BIGINT |
0 |
|