Use o Data Transmission Service (DTS) para migrar seu banco de dados MySQL autogerenciado — seja local, em uma instância do Elastic Compute Service (ECS) ou em outra cloud — para o ApsaraDB RDS for MySQL com tempo de inatividade mínimo ou nulo.
Este guia aborda:
Escolha da solução de migração
Preparação do banco de dados de origem e da instância RDS de destino
Configuração e execução da tarefa de migração
Verificação dos dados e transição da aplicação
Escolher uma solução de migração
O DTS oferece três tipos de migração que você pode combinar para compor sua solução:
|
Tipo de migração |
Função |
|
Schema migration |
Copia a estrutura de bancos de dados, tabelas, views, triggers, stored procedures e funções. O DTS converte |
|
Full data migration |
Copia todos os dados existentes do banco de dados de origem para a instância RDS de destino. |
|
Incremental data migration |
Após o início da migração completa de dados, copia continuamente as novas alterações do banco de dados de origem, permitindo a migração com tempo de inatividade próximo de zero. |
Combine esses tipos conforme sua tolerância a tempo de inatividade:
|
Solução |
Tempo de inatividade |
Consistência dos dados |
Limitações |
Custo |
Indicado para |
|
Schema + full + incremental (recomendado) |
Zero |
Consistente após a conclusão da migração, mesmo que escritas continuem durante o processo |
A migração incremental permanece ativa até ser interrompida manualmente |
Pago (incremental) |
Ambientes de produção, exigência de tempo de inatividade zero |
|
Schema + full |
Duração da migração completa |
Consistente apenas se a origem for somente leitura durante a migração; inconsistente se houver escritas |
A origem deve ficar quiescente para garantir dados consistentes |
Gratuito |
Ambientes de teste, tempo de inatividade aceitável |
Faturamento
A migração de schema, a migração completa de dados e o tráfego pela rede pública são gratuitos. Os itens abaixo são cobrados:
Incremental data migration: Cobrado enquanto estiver em execução. Não há cobrança quando pausado ou com falha.
Data verification: Cobrado com base no volume de dados verificados. Consulte data verification fees.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um banco de dados MySQL de origem executando a versão 5,1, 5,5, 5,6, 5,7 ou 8,0
Uma instância RDS for MySQL de destino com espaço de armazenamento disponível superior ao do banco de dados de origem
Fase 1: Preparar a migração
Etapa 1: Autorizar o DTS a acessar recursos da cloud
Abra a página de autorização rápida com sua conta Alibaba Cloud e clique em Authorize.
Se você visualizar as mensagens
EntityAlreadyExists.RoleeEntityAlreadyExists.Role.Policy, a autorização já está concluída.

Etapa 2: Criar contas de banco de dados
Conta para o banco de dados de origem
Execute as seguintes instruções no banco de dados de origem:
-- Replace dts_user and Your_Password123 with actual values.
CREATE USER 'dts_user'@'%' IDENTIFIED BY 'Your_Password123';
-- Required for schema migration and full data migration.
GRANT SELECT ON *.* TO 'dts_user'@'%';
-- Required for incremental data migration.
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW ON *.* TO 'dts_user'@'%';
-- Required for DTS to create a heartbeat table to advance the binary log position.
GRANT CREATE ON *.* TO 'dts_user'@'%';
FLUSH PRIVILEGES;
A tabela a seguir resume as permissões mínimas necessárias para cada tipo de migração:
|
Tipo de migração |
Permissões necessárias |
|
Migração de schema |
SELECT |
|
Migração completa de dados |
SELECT |
|
Migração incremental de dados |
SELECT; REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW; CREATE (para tabela de heartbeat) |
Conta para a instância RDS de destino
No console do RDS, selecione a região e clique no ID da instância RDS de destino.
No painel de navegação à esquerda, clique em Accounts e, em seguida, clique em Create Account.
Defina Account Type como Privileged Account e preencha os parâmetros restantes.
A conta de destino requer permissões de leitura e escrita na instância RDS de destino.
Etapa 3: Configurar o acesso ao banco de dados de origem
Escolha o método de acesso correspondente à implantação do seu banco de dados de origem:
|
Banco de dados de origem |
Método de acesso |
Configuração |
|
Local com endereço IP público |
Public IP |
Add DTS server CIDR blocks to the source database IP whitelist |
|
Local sem endereço IP público |
Cloud Enterprise Network (CEN), Database Gateway ou VPN Gateway/Express Connect/Smart Access Gateway (SAG) |
Add DTS server CIDR blocks to the IP whitelist e conclua a network access configuration para o método escolhido |
|
Banco de dados em uma instância ECS |
ECS instance |
Nenhuma configuração necessária |
Configurar binary logging para migração incremental de dados
Pule esta etapa se não for realizar a migração incremental de dados.
O binary logging deve estar ativado no banco de dados de origem para a migração incremental de dados. Configure os parâmetros a seguir e reinicie o MySQL para que as alterações entrem em vigor.
Parâmetros de binary logging
|
Parâmetro |
Valor necessário |
Observações |
|
|
|
Ativa o binary logging |
|
|
|
Necessário para o DTS capturar alterações no nível de linha |
|
|
|
Obrigatório para MySQL 5.6 e posteriores |
|
|
Qualquer número inteiro maior que 1 |
Deve ser único em uma topologia de replicação |
|
|
7 ou superior |
Versões do MySQL anteriores à 8.0. Padrão: 0 (nunca expira) |
|
|
604800 ou superior (7 dias) |
MySQL 8.0 e posteriores. Padrão: 2592000 (30 dias) |
|
|
|
Apenas clusters dual-primary |
Mantenha os binary logs por pelo menos 7 dias. Se o período de retenção for muito curto, o DTS pode não conseguir obter os binary logs necessários, resultando em inconsistência ou perda de dados.
Configurar no Linux
-
Edite o arquivo
/etc/my.cnf:log_bin=mysql_bin binlog_format=row # MySQL earlier than 8.0: # expire_logs_days=7 # MySQL 8.0 and later: # binlog_expire_logs_seconds=604800 server_id=2 binlog_row_image=full # Dual-primary clusters only: # log_slave_updates=ON -
Reinicie o MySQL:
/etc/init.d/mysqld restart
Configurar no Windows
-
Edite o arquivo
my.ini:log_bin=mysql_bin binlog_format=row # MySQL earlier than 8.0: # expire_logs_days=7 # MySQL 8.0 and later: # binlog_expire_logs_seconds=604800 server_id=2 binlog_row_image=full # Dual-primary clusters only: # log_slave_updates=ON -
Reinicie o MySQL:
net stop mysql net start mysql
Fase 2: Configurar a tarefa de migração
Faça login no console do DTS, clique em Data Migration no painel de navegação à esquerda e, em seguida, clique em Create Task.
-
Configure o banco de dados de origem e a instância RDS de destino.
Banco de dados de origem
Parâmetro
Valor
Database Type
MySQL
Access Method
Selecione o método configurado na Etapa 3 (por exemplo, Public IP)
Instance Region
Região onde o banco de dados de origem está localizado
Domain Name or IP
Endpoint público ou endereço IP do banco de dados de origem
Port
Porta de service do banco de dados de origem. Padrão: 3306
Database Account
Conta criada na Etapa 2
Database Password
Senha da conta
Encryption
Non-encrypted se o SSL não estiver ativado; SSL-encrypted se o SSL estiver ativado (faça upload de um CA Certificate e defina a CA Key)
Instância RDS de destino
Parâmetro
Valor
Database Type
MySQL
Access Method
Alibaba Cloud Instance
Instance Region
Região da instância RDS de destino
Replicate Data Across Alibaba Cloud Accounts
No
RDS Instance ID
ID da instância RDS de destino
Database Account
Conta privilegiada criada na Etapa 2
Database Password
Senha da conta
Encryption
Non-encrypted ou SSL-encrypted. Se optar por SSL-encrypted, enable SSL encryption na instância RDS de destino primeiro
Clique em Test Connectivity and Proceed. Na caixa de diálogo, clique em Test Connectivity. Se o teste falhar, corrija o problema com base na mensagem de erro antes de continuar.
-
Configure os objetos a serem migrados.
Configurar Objetos
Na aba Configure Objects, defina os tipos de migração e selecione os objetos a migrar: Clique em Next: Advanced Settings.
Parâmetro
Descrição
Migration Types
Selecione Schema Migration e Full Data Migration para uma migração completa. Adicione Incremental Data Migration para minimizar o tempo de inatividade.
Source Objects
Selecione os bancos de dados, tabelas ou colunas a migrar e clique em
para adicioná-los aos Selected Objects.Selected Objects
Clique com o botão direito em um objeto para renomeá-lo ou configurar um filtro WHERE. Clique em Batch Edit para renomear vários objetos simultaneamente.
Processing Mode of Conflicting Tables
Precheck and Report Errors (padrão): falha na pré-verificação se o destino já contiver tabelas com os mesmos nomes. Ignore Errors and Proceed: ignora essa verificação — durante a migração completa, os registros existentes são mantidos; durante a migração incremental, os registros existentes são sobrescritos.
Method to Migrate Triggers in Source Database
Disponível quando tanto Schema Migration quanto Incremental Data Migration estão selecionados. Consulte Sincronizar ou migrar triggers.
Whether to migrate Event
Especifica se eventos do banco de dados de origem devem ser migrados. Se você selecionar Yes, deverá concluir as operações subsequentes. Para mais informações, consulte Sincronizar ou migrar eventos.
Enable Migration Assessment
Disponível quando Schema Migration está selecionado. Verifica se os schemas de origem e destino (tamanhos de índices, stored procedures, tabelas dependentes) são compatíveis. Os resultados aparecem durante a pré-verificação, mas não afetam o resultado dela.
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 Especificar uso de maiúsculas em nomes de objetos.
(Opcional) Configurações Avançadas
(Opcional) Na aba Advanced Configurations, ajuste as configurações conforme necessário: Clique em Next: Data verification.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, as tarefas executam no cluster compartilhado. Adquira um cluster dedicado para maior estabilidade.
Copy the temporary table of the Online DDL tool
Se usar DMS ou gh-ost para Online DDL na origem: Yes migra dados da tabela temporária (pode aumentar a latência); No, Adapt to DMS Online DDL migra apenas operações DDL originais; No, Adapt to gh-ost migra apenas DDL original do gh-ost.
Whether to Migrate Accounts
Migra informações de contas da origem. Se ativado, selecione as contas a migrar e verifique as permissões das contas.
Retry Time for Failed Connections
Tempo durante o qual o DTS tenta reconectar após falha de conexão. Intervalo: 10–1.440 minutos. Padrão: 720 minutos. Defina pelo menos 30 minutos.
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 minutos. Deve ser menor que Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Limita o QPS no banco de dados de origem, o RPS para migração completa e a velocidade de migração (MB/s). Utilize para reduzir a carga nos servidores de banco de dados.
Enable Throttling for Incremental Data Migration
Limita o RPS e a velocidade de migração (MB/s) para a migração incremental.
Configure ETL
Habilita processamento de extração, transformação e carga (ETL). Consulte Configure ETL.
Monitoring and Alerting
Envia alertas quando a tarefa falha ou a latência excede um limiar. Consulte Configurar monitoramento e alertas.
Whether to delete SQL operations on heartbeat tables
Yes: não grava SQL de heartbeat na origem (a latência de migração pode ser exibida). No: grava SQL de heartbeat na origem (pode afetar backup físico e clonagem).
Fase 3: Executar a pré-verificação e iniciar a migração
Clique em Next: Save Task Settings and Precheck. O DTS valida sua configuração e ambiente.
-
Aguarde a conclusão da pré-verificação:
Se a Success Rate atingir 100%, o ambiente está pronto. Analise quaisquer avisos para confirmar que não representam risco e, em seguida, ignore-os e prossiga.
Se a pré-verificação falhar, clique em View Details, corrija o problema e execute a pré-verificação novamente.
Clique em Next: Purchase Instance.
Selecione um Resource Group (padrão: default resource group) e a especificação adequada da instância DTS.
Aceite os Data Transmission Service (Pay-As-You-Go) Terms of Service, clique em Purchase and Start e, em seguida, clique em Confirm. A tarefa de migração inicia automaticamente.
Fase 4: Verificar dados e realizar a transição
-
Monitore o status da tarefa de migração:
Tarefas sem migração incremental de dados mostram Status: Completed ao terminar.
Tarefas com migração incremental de dados mostram Status: Running e não terminam automaticamente.
-
Após a conclusão da migração completa e quando a latência da migração incremental estiver próxima de zero, verifique a consistência dos dados: Opção 1 — Verificação automática: Configure a data verification task no DTS. Opção 2 — Verificação manual: Execute as consultas a seguir tanto no banco de dados de origem quanto na instância RDS de destino e compare os resultados:
-- Compare row counts SELECT COUNT(*) FROM <your_table>; -- Compare key business metrics SELECT SUM(amount) FROM orders WHERE create_time >= '2024-01-01'; -
Realize a transição da aplicação fora do horário de pico:
Pare sua aplicação.
Confirme que a latência da migração incremental atingiu zero.
Atualize as strings de conexão do banco de dados da sua aplicação para the endpoint of the destination RDS instance.
Libere a tarefa de migração após a conclusão da transição.
Operações SQL suportadas para migração incremental de dados
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ALTER TABLE, ALTER VIEW, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
Operações RENAME TABLE podem causar inconsistência de dados. Se você renomear uma tabela durante a migração e tiver selecionado essa tabela (em vez do banco de dados pai) como objeto de migração, os dados da tabela renomeada não serão migrados. Para evitar isso, selecione o banco de dados como objeto de migração e garanta que tanto o nome anterior quanto o posterior ao rename estejam incluídos no escopo da migração.
Perguntas frequentes
P: Por que o DTS falha ao conectar com o erro "Host 'XXX' is not allowed to connect to this MySQL server"?
Trata-se de um erro de conexão Java Database Connectivity (JDBC). Verifique se as credenciais da conta estão corretas e se a conta possui as permissões necessárias. Usar uma conta privilegiada para testar a conexão pode ajudar a isolar o problema.
P: Por que não consigo selecionar uma instância RDS na região China (Fuzhou) ao criar uma tarefa de migração?
O DTS não suporta instâncias na região China (Fuzhou). Como alternativa, back up a self-managed MySQL 5.7 or 8.0 database to the cloud.