O Data Transmission service (DTS) migra dados entre diferentes fontes, com suporte a migrações para a cloud, migrações entre instâncias no Alibaba Cloud e operações de divisão e expansão de bancos de dados. O procedimento abaixo utiliza um cluster dedicado do DTS com o ApsaraDB RDS for MySQL como origem e destino.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster dedicado do DTS. Consulte Create a DTS dedicated cluster
Instâncias de origem e destino do ApsaraDB RDS for MySQL. Consulte Create an ApsaraDB RDS for MySQL instance
Armazenamento disponível suficiente na instância de destino para acomodar todos os dados da origem
Acesso à internet ativado na instância de origem ou de destino, caso a instância e o cluster dedicado do DTS estejam em regiões diferentes
Faturamento
A cobrança ocorre apenas pelos recursos do cluster dedicado do DTS. Criar uma tarefa de migração em um cluster dedicado não gera taxas adicionais. Se você migrar dados de um banco de dados do Alibaba Cloud para outra cloud, também haverá cobrança pelo tráfego de internet. Consulte Billing of DTS dedicated clusters.
Tipos de migração
O DTS oferece três tipos de migração combináveis conforme sua necessidade:
|
Tipo de migração |
Funcionalidade |
Quando utilizar |
|
Migração de schema |
Copia schemas de objetos (tabelas, views, triggers, stored procedures, funções) da origem para o destino. Altera o atributo SECURITY de DEFINER para INVOKER em views, stored procedures e funções. Não migra contas de usuário; conceda separadamente as permissões de leitura e escrita necessárias ao INVOKER. |
Inclua sempre esta opção, a menos que o schema de destino já exista. |
|
Migração completa de dados |
Copia todos os dados existentes da origem para o destino. |
Utilize para a carga inicial de dados. Evite escrever na origem durante uma migração exclusivamente completa. |
|
Migração incremental de dados |
Após a conclusão da migração completa, aplica continuamente as alterações da origem ao destino por meio de binary logs. Mantém a sincronização entre origem e destino sem interromper o service. |
Recomendado para minimizar o tempo de inatividade e manter os serviços ativos durante a migração. |
Combinação recomendada: Selecione os três tipos (migração de schema + migração completa de dados + migração incremental de dados) para transferir dados sem interromper sua aplicação. Utilize a migração apenas completa (migração de schema + migração completa de dados) somente para migrações únicas em que o tempo de inatividade seja aceitável.
Operações SQL suportadas para migração incremental de dados
|
Tipo de operação |
Operaçõ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 |
Permissões necessárias
Conceda as seguintes permissões às contas de banco de dados do DTS antes de iniciar a tarefa:
|
Banco de dados |
Migração de schema |
Migração completa de dados |
Migração incremental de dados |
|
ApsaraDB RDS for MySQL de origem |
SELECT |
SELECT |
Permissões de leitura e escrita |
|
ApsaraDB RDS for MySQL de destino |
Permissões de leitura e escrita |
Permissões de leitura e escrita |
Permissões de leitura e escrita |
Para migrar contas, a conta de origem também precisa de permissão SELECT nas tabelas mysql.user, mysql.db, mysql.columns_priv e mysql.tables_priv. A conta de destino requer as permissões CREATE USER e GRANT OPTION. Contas de sistema (root, mysql.infoschema, mysql.session, mysql.sys) e contas que já existem no destino não podem ser migradas.
Para instruções sobre como criar contas e conceder permissões, consulte Create an account on an ApsaraDB RDS for MySQL instance e Modify the permissions of a standard account on an ApsaraDB RDS for MySQL instance.
Limites
Durante a migração de schema, o DTS migra chaves estrangeiras da origem para o destino. Nas fases de migração completa e incremental de dados, o DTS desativa temporariamente as verificações de restrições de chave estrangeira e as operações em cascata no nível da sessão. Executar operações em cascata ou de exclusão na origem durante a migração pode causar inconsistência de dados.
| Categoria | Limite |
|---|---|
| Source database | O servidor de origem deve ter largura de banda de saída suficiente. Largura de banda insuficiente reduz a velocidade da migração. |
| As tabelas devem possuir chaves primárias ou restrições UNIQUE com todos os campos únicos. Sem essas restrições, o banco de dados de destino poderá conter registros duplicados. | |
| Se você selecionar tabelas como objetos de migração e precisar renomear tabelas ou colunas no destino, uma única tarefa suporta até 1.000 tabelas. Exceder esse limite resulta em erro de solicitação. Divida as tabelas em várias tarefas ou migre o banco de dados inteiro. | |
Para migração incremental de dados: defina binlog_format como row, configure binlog_row_image como full e ative o log binário. Se o banco de dados MySQL autogerenciado estiver em um cluster com dois primários, defina log_slave_updates como ON para que o DTS possa ler todos os binary logs. |
|
| Para migração exclusivamente incremental: retenha os binary logs por mais de 24 horas. Para migração completa combinada com incremental: retenha os binary logs por pelo menos 7 dias. Após a conclusão da migração completa, reduza a retenção para mais de 24 horas. Retenção insuficiente impede o DTS de obter os binary logs, o que pode causar falha na tarefa ou perda de dados. | |
| Não execute operações DDL durante a migração de schema ou a migração completa de dados. Evite escrever no banco de dados de origem durante uma migração exclusivamente completa. Essas ações causam inconsistência de dados. | |
| Outros | Utilize a mesma versão de mecanismo para os bancos de dados MySQL de origem e de destino. |
| Execute as migrações fora do horário de pico. A migração completa de dados consome recursos de leitura e escrita em ambas as instâncias e aumenta a carga do servidor. | |
| A migração completa de dados causa fragmentação nas tabelas de destino devido a operações INSERT concorrentes. Consequentemente, o tablespace de destino fica maior que o da origem após a migração. | |
O DTS utiliza ROUND(COLUMN,PRECISION) para ler colunas FLOAT e DOUBLE. A precisão padrão é de 38 dígitos para FLOAT e 308 dígitos para DOUBLE. Verifique se essas configurações de precisão atendem aos seus requisitos. |
|
O DTS tenta automaticamente repetir tarefas com falha por até 7 dias. Antes de transferir as cargas de trabalho para o banco de dados de destino, pare ou libere a tarefa de migração, ou execute REVOKE para remover as permissões de escrita do DTS no destino. Caso contrário, a tarefa retomada sobrescreverá os dados de destino com os dados da origem. |
|
| Casos especiais | Para MySQL autogerenciado: um failover entre primário e secundário durante uma tarefa ativa causa falha na tarefa. |
| Para MySQL autogerenciado: se nenhuma operação DML for executada na origem por um longo período, o relatório de latência da migração pode ficar impreciso. Execute uma operação DML na origem para atualizar a latência. Se estiver migrando um banco de dados inteiro, crie uma tabela de heartbeat que grave dados a cada segundo. | |
O DTS executa periodicamente CREATE DATABASE IF NOT EXISTS \test\`` no banco de dados de origem para avançar a posição do binary log. |
|
| Para destinos ApsaraDB RDS for MySQL: o DTS cria automaticamente o banco de dados de destino, a menos que o nome do banco de dados de origem seja inválido. Se o nome for inválido, create the database manually antes de configurar a tarefa. |
Configurar uma tarefa de migração
A configuração envolve quatro etapas: conectar os bancos de dados de origem e destino, selecionar os objetos de migração, definir as configurações avançadas e iniciar a tarefa.
Etapa 1: Conectar os bancos de dados de origem e destino
Acesse a página Dedicated Cluster.
Na barra de navegação superior, selecione a região onde reside seu cluster dedicado do DTS.
Localize o cluster e, na coluna Actions, escolha Configure Task > Configure Data Migration Task.
Na página de configuração, leia o aviso de Limits no topo antes de prosseguir.
-
Configure os parâmetros da Source Database:
Parâmetro
Descrição
Task Name
Gerado automaticamente. Especifique um nome descritivo para identificar a tarefa. O nome não precisa ser único.
Select an existing database connection (opcional)
Selecione uma conexão existente para preencher automaticamente os parâmetros da origem. Ignore esta etapa se estiver configurando manualmente.
Database Type
Selecione MySQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Definido pelo cluster dedicado do DTS. Não pode ser alterado.
Replicate Data Across Alibaba Cloud Accounts
Selecione No para migração na mesma conta.
RDS Instance ID
O ID da instância ApsaraDB RDS for MySQL de origem. Origem e destino podem ser a mesma instância.
Database Account
A conta com as permissões listadas em Permissões necessárias.
Database Password
Senha da conta do banco de dados.
Connection Method
Selecione Non-encrypted ou SSL-encrypted. Para criptografia SSL, configure SSL on the instance antes de iniciar esta tarefa.
-
Configure os parâmetros da Destination Database:
Parâmetro
Descrição
Select an existing DMS database instance (opcional)
Selecione uma conexão existente para preencher automaticamente os parâmetros do destino. Ignore esta etapa se estiver configurando manualmente.
Database Type
Selecione MySQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Definido pelo cluster dedicado do DTS. Não pode ser alterado.
RDS Instance ID
O ID da instância ApsaraDB RDS for MySQL de destino.
Database Account
A conta com as permissões listadas em Permissões necessárias.
Database Password
Senha da conta do banco de dados.
Connection Method
Selecione Non-encrypted ou SSL-encrypted. Para criptografia SSL, configure SSL on the instance antes de iniciar esta tarefa.
-
Clique em Test Connectivity and Proceed. O DTS adiciona automaticamente seus blocos CIDR de servidor à lista de permissões de IP das instâncias de banco de dados do Alibaba Cloud ou às regras de grupo de segurança de uma instância ECS que hospeda um banco de dados autogerenciado. Para bancos de dados autogerenciados em data centers on-premises ou nuvens de terceiros, adicione manualmente os blocos CIDR do servidor DTS à lista de permissões de IP do banco de dados. Consulte Add the CIDR blocks of DTS servers to the security settings of on-premises databases.
AvisoAdicionar blocos CIDR do servidor DTS a listas de permissões de IP ou regras de grupo de segurança introduz exposição de segurança. Antes de prosseguir, reforce a segurança de contas e senhas, limite as portas expostas, autentique chamadas de API, audite regularmente a lista de permissões de IP e as regras de grupo de segurança para remover blocos CIDR não autorizados e considere usar Express Connect, VPN Gateway ou Smart Access Gateway para conectar o banco de dados ao DTS.
Etapa 2: Selecionar objetos de migração
Configure o tipo de migração, o tratamento de conflitos e os objetos a serem migrados:
|
Parâmetro |
Descrição |
|
Migration Type |
Selecione a combinação adequada ao seu objetivo. Para migração apenas completa: selecione Schema Migration e Full Data Migration. Para manter os serviços ativos durante a migração: selecione Schema Migration, Full Data Migration e Incremental Data Migration. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: verifica se o destino contém tabelas com os mesmos nomes da origem. A pré-verificação só é aprovada se não houver conflitos de nomes. Use object name mapping para renomear tabelas conflitantes no destino. Ignore Errors and Proceed: ignora a verificação de conflito de nomes. Se os schemas forem iguais, o DTS ignora registros com chaves primárias duplicadas. Se os schemas diferirem, apenas colunas específicas serão migradas ou a tarefa falhará. Use com cautela, pois pode ocorrer inconsistência de dados. |
|
Method to Migrate Triggers in Source Database |
Aplica-se apenas quando Schema Migration está selecionado. Escolha um método conforme seus requisitos. Consulte Synchronize or migrate triggers from the source database. |
|
Enable Migration Assessment |
Aplica-se apenas quando Schema Migration está selecionado. Selecione Yes para verificar se os schemas de origem e destino (comprimentos de índice, stored procedures, tabelas dependentes) atendem aos requisitos de migração. Os resultados da avaliação aparecem durante a pré-verificação e não afetam a aprovação ou reprovação desta. |
|
Capitalization of Object Names in Destination Instance |
Controla a caixa (maiúsculas/minúsculas) dos nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Specify the capitalization of object names in the destination instance. |
|
Source Objects |
Selecione objetos na lista Source Objects e clique no ícone |
|
Selected Objects |
Clique com o botão direito em um objeto para renomeá-lo ou definir condições WHERE para filtrar linhas. Clique em Batch Edit (canto superior direito) para renomear vários objetos de uma vez. Consulte Map object names e Use SQL conditions to filter data. Renomear um objeto pode causar falha na migração de objetos dependentes. |
Etapa 3: Configurar definições avançadas
Clique em Next: Advanced Settings para configurar os seguintes parâmetros:
Verificação de dados
Para verificar a consistência dos dados após a migração, consulte Enable data verification.
Configurações avançadas
| Parâmetro | Descrição |
|---|---|
| Select the dedicated cluster used to schedule the task | Seu cluster dedicado do DTS é selecionado por padrão. |
| Set Alerts | Selecione Yes para receber notificações quando a tarefa falhar ou a latência da migração exceder um limiar. Especifique o limiar de alerta e os contatos. Consulte Configure monitoring and alerting when you create a DTS task. |
| Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database | Aplica-se ao usar Data Management (DMS) ou gh-ost para operações DDL online na origem. Yes: migra os dados da tabela temporária gerados pelo DDL online (pode estender o tempo de migração para grandes conjuntos de dados). No, Adapt to DMS Online DDL: ignora os dados da tabela temporária; migra apenas o DDL original. As tabelas no destino podem ser bloqueadas. No, Adapt to gh-ost: ignora os dados da tabela temporária; migra apenas o DDL original. Use expressões regulares padrão ou personalizadas para filtrar tabelas shadow do gh-ost. As tabelas no destino podem ser bloqueadas. Importante
pt-online-schema-change não é suportado. Seu uso causa falha na tarefa. |
| Whether to Migrate Accounts | Selecione Yes para migrar as contas do banco de dados de origem. Consulte os requisitos de permissão em Permissões necessárias. |
| Method to Migrate Triggers in Source Database | Escolha um método de migração de triggers. Consulte Synchronize or migrate triggers from the source database. |
| Retry Time for Failed Connections | Tempo durante o qual o DTS tenta reconectar após uma falha de conexão. Valores válidos: 10 a 1.440 minutos. Padrão: 720. Defina pelo menos 30 minutos. Se a reconexão for bem-sucedida dentro dessa janela, o DTS retoma a tarefa. Se a instância compartilhada de origem ou destino for usada por várias tarefas, o valor definido mais recentemente terá efeito em todas elas. Nota
Enquanto o DTS tenta reconectar, a instância do DTS é cobrada. Especifique este valor com base nos requisitos do seu negócio. Você também pode liberar a instância do DTS assim que possível após a liberação das instâncias de origem e destino. |
| The wait time before a retry when other issues occur in the source and destination databases | Tempo de espera antes de tentar novamente após falhas em operações DDL ou DML. Valores válidos: 1 a 1.440 minutos. Padrão: 10. Defina pelo menos 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections. |
Etapa 4: Executar a pré-verificação e iniciar a tarefa
Clique em Next: Save Task Settings and Precheck. Para visualizar os parâmetros da API usados nesta configuração, passe o mouse sobre o botão e clique em Preview OpenAPI parameters.
-
Aguarde a conclusão da pré-verificação. Se a pré-verificação falhar:
Para itens com falha: clique em View Details, corrija os problemas e clique em Precheck Again.
Para itens de alerta que não podem ser ignorados: clique em View Details, corrija os problemas e clique em Precheck Again.
Para itens de alerta que podem ser ignorados: clique em Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar um alerta pode resultar em inconsistência de dados.
Quando a taxa de sucesso atingir 100%, clique em Next: Select DTS Instance Type.
Na seção New Instance Class, defina a Instance Class para a tarefa. O mínimo é 1 unidade DTS (DU) e o máximo é o número de DUs restantes disponíveis no cluster.
Leia e marque a caixa de seleção Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Start Task > OK.
Para monitorar o progresso, acesse a página de detalhes do cluster e clique em Cluster Task List no painel de navegação à esquerda.
Próximos passos
Após o início da tarefa e o começo da execução da migração incremental:
Monitore a latência da migração na página Cluster Task List. Se a latência estiver alta devido à inatividade na origem, execute uma operação DML para atualizá-la.
Antes de transferir o tráfego da aplicação para o banco de dados de destino, verifique a consistência dos dados usando data verification.
Pare ou libere a tarefa de migração antes de trocar as cargas de trabalho, ou execute
REVOKEpara remover as permissões de escrita do DTS no destino. Isso evita que uma tarefa retomada sobrescreva os dados de destino.