Use o Data Transmission Service (DTS) para migrar seu banco de dados MySQL autogerenciado — seja on-premises, em uma instância 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 combináveis para compor uma solução:
|
Tipo de migração |
Descriçã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, requisito 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 de rede pública são gratuitos. Os itens abaixo são cobrados:
Incremental data migration: Cobrada enquanto estiver em execução. Não há cobrança quando pausada ou com falha.
Data verification: Cobrada com base no volume de dados verificado. Consulte taxas de verificação de dados.
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 mais espaço de armazenamento disponível do que o 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á foi 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
Selecione 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 |
|
On-premises com endereço IP público |
Public IP |
Adicionar blocos CIDR do servidor DTS à lista de permissões de IP do banco de dados de origem |
|
On-premises sem endereço IP público |
Cloud Enterprise Network (CEN), Database Gateway ou VPN Gateway/Express Connect/Smart Access Gateway (SAG) |
Adicionar blocos CIDR do servidor DTS à lista de permissões de IP e concluir a configuração de acesso à rede para o método escolhido |
|
Banco de dados em uma instância ECS |
ECS instance |
Nenhuma configuração necessária |
Configurar log binário para migração incremental de dados
Pule esta etapa se não for realizar migração incremental de dados.
O log binário 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 tenham efeito.
Parâmetros de log binário
|
Parâmetro |
Valor necessário |
Observações |
|
|
|
Ativa o log binário |
|
|
|
Necessário para o DTS capturar alterações no nível de linha |
|
|
|
Obrigatório para MySQL 5.6 e posteriores |
|
|
Qualquer 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 com dois primários |
Mantenha os logs binários por pelo menos 7 dias. Se o período de retenção for muito curto, o DTS pode falhar ao obter os logs binários necessários, resultando em inconsistência ou perda de dados.
Configurar no Linux
-
Edite
/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
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 criptografado com SSL, ative a criptografia SSL 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 serem migrados: 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 serem migrados 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 de uma vez.
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 esta 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 (comprimentos de índice, stored procedures, tabelas dependentes) são compatíveis. Os resultados são exibidos durante a pré-verificação, mas não afetam o resultado dela.
Capitalization of Object Names in Destination Instance
Controla a capitalização dos nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Especificar capitalização de 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 são executadas 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 DDL online 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 serem migradas e verifique as permissões das contas.
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 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). Use 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 migração incremental.
Configure ETL
Habilita processamento de extração, transformação e carga (ETL). Consulte Configurar 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. Revise 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 apropriada 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 quando finalizadas.
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 uma tarefa de verificação de dados no DTS. Opção 2 — Verificação manual: Execute as seguintes consultas 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 sua 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 o endpoint da instância RDS de destino.
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 de seu 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 os nomes de banco de dados anteriores quanto posteriores à renomeação 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"?
Este é 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, faça backup de um banco de dados MySQL 5.7 ou 8.0 autogerenciado para a cloud.