O Data Transmission Service (DTS) migra dados entre diferentes fontes de dados, com suporte a migração para cloud, migração entre instâncias na Alibaba Cloud, além de divisão e scale-out de bancos de dados. O procedimento a seguir utiliza um cluster dedicado do DTS com o ApsaraDB RDS for MySQL como origem e destino.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um cluster dedicado do DTS. Consulte Crie um cluster dedicado do DTS
Instâncias de origem e de destino do ApsaraDB RDS for MySQL. Consulte Crie uma instância do ApsaraDB RDS for MySQL
Armazenamento disponível suficiente na instância de destino para acomodar todos os dados de origem
Acesso à Internet ativado para a 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 aplica-se apenas aos recursos do cluster dedicado do DTS. A criação de uma tarefa de migração em um cluster dedicado não gera taxas adicionais. Se você migrar dados de um banco de dados da 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 suporte a três tipos de migração, combináveis conforme suas necessidades:
|
Tipo de migração |
O que faz |
Quando usar |
|
Migração de schema |
Copia os schemas de objetos (tabelas, visualizações, gatilhos, procedimentos armazenados, funções) da origem para o destino. Altera o atributo SECURITY de DEFINER para INVOKER em visualizações, procedimentos armazenados e funções. Não migra contas de usuário; conceda as permissões de leitura e gravação necessárias ao INVOKER separadamente. |
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. |
Inclua esta opção para a carga inicial de dados. Não escreva na origem durante uma migração apenas completa. |
|
Migração incremental de dados |
Após a conclusão da migração completa, aplica continuamente as alterações da origem para o destino usando binary logs. Mantém a origem e o destino sincronizados sem interrupção do serviço. |
Inclua esta opção para minimizar o tempo de inatividade e manter o serviço em execução 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 migrar 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 com suporte 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 às contas de banco de dados do DTS as seguintes permissões 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 gravação |
|
ApsaraDB RDS for MySQL de destino |
Permissões de leitura e gravação |
Permissões de leitura e gravação |
Permissões de leitura e gravação |
Para migrar contas, a conta de origem também precisa de SELECT em mysql.user, mysql.db, mysql.columns_priv e mysql.tables_priv. A conta de destino precisa de 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 obter instruções sobre como criar contas e conceder permissões, consulte Crie uma conta em uma instância do ApsaraDB RDS for MySQL e Modifique as permissões de uma conta padrão em uma instância do ApsaraDB RDS for MySQL.
Limites
Durante a migração de schema, o DTS migra chaves estrangeiras da origem para o destino. Durante a migração completa de dados e a migração incremental de dados, o DTS desativa temporariamente as verificações de restrição de chave estrangeira e as operações em cascata no nível da sessão. Se você executar operações em cascata ou exclua registros na origem durante a migração, poderá ocorrer inconsistência de dados.
Categoria | Limite |
Source database | O servidor de origem deve ter largura de banda de saída suficiente. A largura de banda insuficiente reduz a velocidade da migração. |
As tabelas devem ter chaves primárias ou restrições UNIQUE com todos os campos exclusivos. Sem essas restrições, o banco de dados de destino pode conter registros duplicados. | |
Se você selecionar tabelas como objetos de migração e precisar renomear tabelas ou colunas no destino, uma única tarefa oferece suporte a até 1.000 tabelas. Se você exceder esse limite, ocorrerá um 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 | |
Para migração apenas incremental: retenha os binary logs por mais de 24 horas. Para migração completa de dados combinada com migração incremental de dados: retenha os binary logs por pelo menos 7 dias. Após a conclusão da migração completa, você pode reduzir a retenção para mais de 24 horas. A retenção insuficiente faz com que o DTS não consiga obter os binary logs, o que pode resultar em 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. Não escreva no banco de dados de origem durante uma migração apenas completa. Fazer isso causa inconsistência de dados. | |
O DTS não oferece suporte à divisão da migração completa de dados em várias execuções. A migração completa de dados deve ser concluída em uma única execução. Para migrar dados em lotes, configure várias tarefas de migração. | |
Outros | Utilize a mesma versão do mecanismo para os bancos de dados MySQL de origem e de destino. |
Execute as migrações fora dos horários de pico. A migração completa de dados utiliza recursos de leitura e gravação 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 simultâneas. Como resultado, o tablespace de destino fica maior que o tablespace de origem após a migração. | |
O DTS usa | |
O DTS repete automaticamente as tarefas com falha por até 7 dias. Antes de alternar as cargas de trabalho para o banco de dados de destino, pare ou libere a tarefa de migração, ou execute | |
Casos especiais | Para MySQL autogerenciado: um failover primário/secundário durante uma tarefa de migração ativa causa a falha da 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 ser impreciso. Atualize a latência executando uma operação DML na origem. Se você migrar um banco de dados inteiro, crie uma tabela de heartbeat que grave dados a cada segundo. | |
O DTS executa periodicamente | |
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, crie o banco de dados manualmente e configure a tarefa. |
Configure uma tarefa de migração
A configuração possui quatro etapas: conectar os bancos de dados de origem e de destino, selecionar os objetos de migração, configurar as definições avançadas e iniciar a tarefa.
Etapa 1: Conectar os bancos de dados de origem e de destino
Acesse a página Dedicated Cluster.
Na barra de navegação superior, selecione a região onde reside o seu cluster dedicado do DTS.
Encontre o cluster e, na coluna Actions, escolha Configure Task > Configure Data Migration Task.
Na página de configuração, leia o aviso de Limits na parte superior antes de continuar.
-
Configure os parâmetros de Source Database:
Parâmetro
Descrição
Task Name
Gerado automaticamente. Especifique um nome descritivo para identificar a tarefa. O nome não precisa ser exclusivo.
Select an existing database connection (opcional)
Selecione uma conexão existente para preencher automaticamente os parâmetros de origem. Ignore esta opção se você configurar 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 de origem do ApsaraDB RDS for MySQL. A origem e o 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, Use a cloud certificate to enable SSL encryption antes de iniciar esta tarefa.
-
Configure os parâmetros de Destination Database:
Parâmetro
Descrição
Select an existing DMS database instance (opcional)
Selecione uma conexão existente para preencher automaticamente os parâmetros de destino. Ignore esta opção se você configurar 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 de destino do ApsaraDB RDS for MySQL.
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, Use a cloud certificate to enable SSL encryption 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 da Alibaba Cloud ou às regras do 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 cloud de terceiros, adicione manualmente os blocos CIDR do servidor DTS à lista de permissões de IP do banco de dados. Consulte Whitelist DTS server IP addresses.
AvisoAdicionar blocos CIDR do servidor DTS às listas de permissões de IP ou às regras do grupo de segurança gera exposição de segurança. Antes de continuar, fortaleça a segurança de contas e senhas, limite as portas expostas, autentique as chamadas de API, audite regularmente a lista de permissões de IP e as regras do grupo de segurança para remover blocos CIDR não autorizados e considere usar o 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 que se adapta ao seu objetivo. Apenas para migração completa: selecione Schema Migration e Full Data Migration. Para manter o serviço em execução durante a migração: selecione Schema Migration, Full Data Migration e Incremental Data Migration. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: verifique se o destino contém tabelas com os mesmos nomes da origem. A pré-verificação é aprovada apenas se não houver conflitos de nomes. Utilize Object name mapping para renomear tabelas conflitantes no destino. Ignore Errors and Proceed: ignora a verificação de conflito de nomes. Se os schemas coincidirem, o DTS ignora registros com chaves primárias duplicadas. Se os schemas forem diferentes, 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 com base em 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 de destino (tamanhos de índice, procedimentos armazenados, tabelas dependentes) atendem aos requisitos de migração. Os resultados da avaliação ficam visíveis durante a pré-verificação e não afetam a aprovação ou reprovação da pré-verificação. |
|
Capitalization of Object Names in Destination Instance |
Controla a caixa alta/baixa dos nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Capitalization policy for object names in the destination database. |
|
Source Objects |
Selecione os objetos na lista Source Objects e clique no ícone |
|
Selected Objects |
Clique com o botão direito em um objeto para renomeá-lo ou defina condições WHERE para filtrar linhas. Clique em Batch Edit (canto superior direito) para renomear vários objetos de uma vez. Consulte Object name mapping e Use SQL conditions to filter data. Renomear um objeto pode fazer com que objetos dependentes falhem na migração. |
Etapa 3: Configure 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 Configure data verification.
Definições avançadas
Parâmetro | Descrição |
Select the dedicated cluster used to schedule the task | Seu cluster dedicado do DTS já vem 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 do alerta e os contatos. Consulte Configure monitoring and alerting. |
Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database | Aplica-se ao usar o 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 as tabelas sombra do gh-ost. As tabelas no destino podem ser bloqueadas. Importante pt-online-schema-change não é suportado. O seu uso causa a falha da tarefa. |
Whether to Migrate Accounts | Selecione Yes para migrar as contas do banco de dados de origem. Consulte os requisitos de permissões em Permissões necessárias. |
Method to Migrate Triggers in Source Database | Escolha um método de migração de gatilhos. Consulte Configure trigger synchronization or migration. |
Retry Time for Failed Connections | Por quanto tempo o DTS tenta novamente após uma falha de conexão. Valores válidos: 10 a 1.440 minutos. Padrão: 720. Defina para pelo menos 30 minutos. Se a reconexão for bem-sucedida dentro desta janela, o DTS retoma a tarefa. Se a instância de origem ou de destino compartilhada for usada por várias tarefas, o valor definido mais recentemente entra em vigor em todas as tarefas. Nota Há cobrança pela instância do DTS quando ele tenta reconectar. Especifique este valor com base em seus requisitos de negócios. Você também pode liberar a instância do DTS o mais rápido possível após a liberação das instâncias de origem e de destino. |
The wait time before a retry when other issues occur in the source and destination databases | Por quanto tempo o DTS tenta novamente após falhas em operações DDL ou DML. Valores válidos: 1 a 1.440 minutos. Padrão: 10. Defina para 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 de API usados para configurar esta tarefa, 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 do DTS (DU) e o máximo é o número de DUs disponíveis restantes no cluster.
Leia e selecione 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 a 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 e atualize a latência.
Antes de alternar o tráfego da aplicação para o banco de dados de destino, verifique a consistência dos dados usando Configure data verification.
Pare ou libere a tarefa de migração antes de alternar as cargas de trabalho, ou execute
REVOKEpara remover as permissões de gravação do DTS no destino. Isso evita que uma tarefa retomada sobrescreva os dados de destino.