O Data Transmission service (DTS) permite migrar dados de uma instância do RDS for MySQL para o mecanismo de tabela ampla (wide table engine) de uma instância do Lindorm. O DTS processa a replicação baseada em binary log, o que permite concluir a migração com tempo de inatividade mínimo, ao contrário do mysqldump, que exige tempo de inatividade prolongado e é impraticável para grandes conjuntos de dados. Você pode escolha apenas a migração completa ou combiná-la com a migração incremental contínua para manter o destino sincronizado enquanto sua aplicação permanece ativa.
Pré-requisitos
Antes de começar, certifique-se de ter:
Uma instância do Lindorm de destino com o mecanismo de tabela ampla e espaço de armazenamento maior que o utilizado pela instância do RDS for MySQL de origem. Consulte Create an instance.
O endpoint de conexão compatível com MySQL ativado na instância do Lindorm de destino. Consulte Enable the MySQL-compatible feature.
-
Um banco de dados (namespace) criado na instância do Lindorm de destino para receber os dados migrados. Caso não selecione Schema Migration, crie também uma tabela ampla (é recomendável fazer o pré-particionamento com base nos dados completos para melhor desempenho). O pré-particionamento determina como os dados são distribuídos pelo cluster do Lindorm. Escolha uma coluna de alta cardinalidade como chave de partição para distribuir os dados de forma uniforme e evitar hot spots que causariam lentidão na leitura e na gravação após a migração. A escolha inadequada da chave de partição também pode causar problemas na fase de CDC se as atualizações afetarem as colunas da chave de partição. Para obter instruções sobre como criar o banco de dados e a tabela, consulte Connect to and use the wide table engine using the MySQL command line, Connect to and use the wide table engine using Lindorm-cli, Access the wide table engine using Lindorm Shell e CREATE TABLE. Para verificar a compatibilidade de tipos de dados, consulte Data type mapping.
Os objetos criados devem estar em conformidade com as naming constraints and object limits for Lindorm instances .
Faturamento
|
Tipo de migração |
Taxa de configuração da tarefa |
Taxa de transferência de dados |
|
Migração completa de dados |
Gratuita |
Gratuita, a menos que o Access Method esteja definido como Public IP Address. Nesse caso, aplicam-se as taxas padrão de tráfego de Internet. Para mais detalhes, consulte Billable items. |
|
Migração incremental de dados |
Cobrada. Para mais detalhes, consulte Billing overview. |
— |
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Operações SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, ADD COLUMN |
Devido às limitações do LindormTable , o DTS não migra atributos adicionais de colunas em instruções ADD COLUMN. Por exemplo, se a origem executarALTER TABLE test ADD COLUMN col INT DEFAULT 0;, o DTS executaALTER TABLE test ADD COLUMN col INT;no destino.
Permissões da conta do banco de dados
Banco de dados | Migração completa | Migração incremental |
RDS for MySQL de origem | SELECT | Leitura e gravação |
Lindorm de destino | Leitura e gravação no namespace de destino | |
Se a conta do banco de dados de origem não foi criada e não recebeu as permissões no console do RDS for MySQL, certifique-se de que a conta tenha as permissões REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW e SELECT. Para criar uma conta e conceder permissões pelo console, consulte Create an account e Modify the permissions of an account .
Para o gerenciamento de contas do Lindorm, consulte User management.
Limitações
Limitações do banco de dados de origem
O servidor que hospeda o banco de dados de origem deve ter largura de banda de saída suficiente. Caso contrário, a velocidade de migração de dados poderá ser afetada.
As tabelas a serem migradas devem ter chaves primárias e campos exclusivos. Sem esses elementos, podem surgir dados duplicados no destino.
Se você migrar no nível da tabela e edite objetos (como mapear nomes de tabelas ou colunas), uma única tarefa suporta no máximo 1.000 tabelas. Caso ultrapasse esse limite, divida as tabelas em várias tarefas ou configure a tarefa para migrar o banco de dados inteiro.
-
Se a origem for o MySQL 8.0.23 ou posterior e os dados incluírem colunas invisíveis, o DTS não conseguirá ler essas colunas, causando perda de dados. Para tornar visíveis as colunas invisíveis antes da migração, execute:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Para mais informações, consulte Invisible Columns. Tabelas sem chaves primárias explícitas geram chaves primárias invisíveis automaticamente; torne-as visíveis também. Consulte Generated Invisible Primary Keys.
Incremental migration only:
-
O recurso de binary log deve estar ativado com as seguintes configurações. Sem elas, a pré-verificação falha e a tarefa não inicia. Requisitos de retenção de binary log: caso você exclua os binary logs antes que o DTS possa lê-los, a tarefa poderá falhar ou ocorrer inconsistência de dados, e o Service Level Agreement (SLA) do DTS pode não se aplicar.
ApsaraDB RDS for MySQL: pelo menos 3 dias (recomenda-se 7 dias). Consulte Configure parameters based on which the system automatically deletes the binary log files of an RDS instance.
MySQL autogerenciado: pelo menos 7 dias.
Parâmetro
Valor obrigatório
Efeito se não definido
binlog_formatROWDefinir como
STATEMENTouMIXEDpode causar inconsistência de dados no destino.binlog_row_imagefullImagens parciais de linha podem causar replicação incompleta de dados.
log_slave_updatesONObrigatório apenas para MySQL autogerenciado em um cluster de primário duplo. Sem isso, o DTS não consegue obter todos os binary logs.
Apenas migração completa:
-
Não execute operações DDL nem modifique a origem durante a migração completa. Operações DDL podem causar a falha da tarefa.
Durante a migração completa, o DTS consulta o banco de dados de origem e cria bloqueios de metadados, que podem bloquear operações DDL na origem.
Não grave novos dados na origem se selecionar apenas Full Data Migration. Para manter a origem e o destino sincronizados durante toda a migração, selecione tanto Full Data Migration quanto Incremental Data Migration.
-
Não é possível realizar a migração completa de dados se a instância do RDS for MySQL de origem tiver o recurso EncDB ativado.
Instâncias do RDS for MySQL com Transparent Data Encryption (TDE) ativado oferecem suporte à migração de schema, migração completa de dados e migração incremental de dados.
Outras limitações
A migração de schema para o Lindorm depende dos próprios recursos do Lindorm para a criação do schema.
O Lindorm possui um limite padrão de quantidade de colunas para índices em colunas que não são chave primária. O DTS não pode criar esses índices durante a migração de schema quando a quantidade de colunas excede esse limite. Para usar tais índices, crie-os manualmente. Para mais detalhes, consulte ALTER SYSTEM.
Não há suporte à migração de objetos INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER e chaves estrangeiras.
Não há suporte à migração do tipo de dados BIT.
Não é possível migrar apenas campos de chave primária. Os dados devem conter pelo menos um campo que não seja chave primária.
Os dados podem ser gravados apenas no mecanismo de tabela ampla de uma instância do Lindorm.
Strings vazias do tipo VARBINARY são tratadas como nulas tanto pelo DTS quanto pelo Lindorm.
Se a precisão de um campo DECIMAL no destino for diferente da origem, a tarefa falhará.
Os dados gravados no Lindorm devem estar em conformidade com os limits on data requests. Solicitações que excedam esses limites causam a falha da tarefa.
A migração completa executa operações INSERT simultâneas, o que causa fragmentação do tablespace no destino. O tablespace de destino será maior que o da origem após a conclusão da inicialização completa.
Não execute ferramentas de DDL online, como o pt-online-schema-change, em objetos de migração na origem durante a migração. Isso causa a falha da migração.
Se dados forem gravados no destino por outras fontes além do DTS durante a migração, pode ocorrer inconsistência de dados.
-
Dados gerados por operações de alteração de binary log — como dados restaurados de um backup físico ou operações em cascata — não são migrados para o destino.
Se esses dados não forem migrados, você poderá executar uma migração completa novamente, desde que suas operações não sejam afetadas.
Se uma instância do DTS falhar, o suporte do DTS tentará recuperá-la em até 8 horas. As operações de recuperação podem incluir a reinicialização da instância e o ajuste de parâmetros da instância do DTS (não parâmetros do banco de dados). Para os parâmetros que podem ser ajustados, consulte Modify instance parameters.
Casos especiais
Origem MySQL autogerenciado:
Se ocorrer um failover de primário/secundário na origem enquanto a tarefa de migração estiver em execução, a tarefa falhará.
O DTS executa periodicamente
CREATE DATABASE IF NOT EXISTSna origem para avançar a posição do arquivo de binary log.Se nenhuma operação DML for executada na origem por um longo período, as medições de latência de migração podem ficar imprecisas. Execute uma operação DML na origem e atualize a latência. Se selecionar um banco de dados inteiro como objeto de migração, crie uma tabela de heartbeat que receba atualizações a cada segundo.
Origem ApsaraDB RDS for MySQL:
Incremental migration only: Uma instância somente leitura do RDS for MySQL V5.6 não pode ser usada como origem porque não registra logs de transações.
O DTS executa periodicamente
CREATE DATABASE IF NOT EXISTSna origem para avançar a posição do arquivo de binary log.
Criar uma tarefa de migração
Etapa 1: Abrir a página Data Migration
Use um dos seguintes métodos:
DTS console
Para iniciar, acesse o DTS console.DTS console
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região da instância de migração.
DMS console
Nota
A navegação exata pode variar dependendo do modo e do layout do console do DMS. Para mais informações, consulte Simple mode e Customize the layout and style of the DMS console.
Para iniciar, acesse o DMS console.DMS console
Na barra de navegação superior, acesse Data + AI > DTS (DTS) > Data Migration.
À direita de Data Migration Tasks, selecione a região na lista suspensa.
Etapa 2: Configurar os bancos de dados de origem e destino
Clique em Create Task.
-
Configure os bancos de dados de origem e destino usando os seguintes parâmetros:
Banco de dados de origem:
Parâmetro
Descrição
Task Name
O nome da tarefa do DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. O nome não precisa ser único.
Select Existing Connection
Se a instância de source já estiver registrada no DTS, selecione-a na lista suspensa. O DTS preenche os parâmetros do banco de dados automaticamente. Caso contrário, configure os parâmetros abaixo manualmente.
Database Type
Selecione MySQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde reside a instância do RDS for MySQL de origem.
Replicate Data Across Alibaba Cloud Accounts
Selecione No se a origem estiver na mesma conta da Alibaba Cloud.
RDS Instance ID
Selecione o ID da instância do rds for MySQL de origem.
Database Account
Agora insira a conta do banco de dados para a instância de origem. Para as permissões necessárias, consulte Database account permissions.
Database Password
Agora insira a senha da conta do banco de dados.
Encryption
Selecione Non-encrypted ou SSL-encrypted. Para usar a criptografia SSL, ative-a primeiro na instância do RDS for MySQL. Consulte Use a cloud certificate to enable SSL encryption.
Banco de dados de destino:
Parâmetro
Descrição
Select Existing Connection
Se a instância de destino já estiver registrada no DTS, selecione-a na lista suspensa. Caso contrário, configure os parâmetros abaixo manualmente.
Database Type
Selecione Lindorm.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde reside a instância do Lindorm de destino.
Instance ID
Selecione o ID da instância do Lindorm de destino.
Database Account
Insira a conta do banco de dados para a instância de destino.
Database Password
Insira a senha da conta do banco de dados.
-
Clique em Test Connectivity and Proceed.
Certifique-se de que os blocos CIDR dos servidores do DTS tenham sido adicionados às configurações de segurança dos bancos de dados de origem e destino. Consulte Add DTS server IP addresses to a whitelist . Se a origem ou o destino for um banco de dados autogerenciado não acessado via Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 3: Configurar os objetos a serem migrados
-
Na página Configure Objects, defina os seguintes parâmetros:
Se não selecionar Incremental Data Migration , não grave novos dados na origem durante a migração para garantir a consistência dos dados.
Parâmetro
Descrição
Migration Types
Selecione Full Data Migration para uma migração única. Selecione tanto Full Data Migration quanto Incremental Data Migration para manter o destino sincronizado com a origem durante toda a migração.
Processing Mode of Conflicting Tables
Mantenha o valor padrão.
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. Para mais informações, consulte Capitalization policy for object names in the destination database.
Source Objects
Selecione os bancos de dados ou as tabelas que deseja migrar e, em seguida, clique em
para movê-los para Selected Objects.Selected Objects
Se os nomes de bancos de dados, tabelas ou colunas na instância do Lindorm de destino forem diferentes dos da origem, use o mapeamento de nomes de objetos. Para mais detalhes, consulte Map object names. Para aplicar filtros no nível de linha, clique com o botão direito em uma tabela e especifique as condições WHERE. Consulte Specify filter conditions. Para selecionar quais operações SQL incluir na migração incremental, clique com o botão direito em um objeto e selecione as operações.
-
Clique em Next: Advanced Settings e configure o seguinte:
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS usa o cluster compartilhado. Para melhorar a estabilidade, adquira um cluster dedicado. Consulte What is a DTS dedicated cluster.
Retry Time for Failed Connections
Define por quanto tempo o DTS tenta reconectar se a origem ou o destino estiver indisponível. Valores válidos: 10 a 1.440 minutos. Padrão: 720 minutos. Defina este valor para mais de 30 minutos. Se o DTS reconectar dentro dessa janela, ele retoma a tarefa; caso contrário, a tarefa falha. Nota: se várias tarefas compartilharem a mesma origem ou destino, o valor definido mais recentemente é aplicado. Há cobrança pela instância do DTS durante as novas tentativas.
Retry Time for Other Issues
Define por quanto tempo o DTS repete operações DDL ou DML com falha. Valores válidos: 1 a 1.440 minutos. Padrão: 10 minutos. Defina este valor para mais de 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Limita a velocidade da migração completa para reduzir a carga na origem e no destino. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Migration estiver selecionado.
Enable Throttling for Incremental Data Migration
Limita a velocidade da migração incremental. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado.
Environment Tag
Selecione uma tag para identificar a instância. Nenhuma tag é necessária para este exemplo.
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks
Define se o DTS grava operações SQL da tabela de heartbeat na origem enquanto a instância está em execução. Selecione Yesalert notification settings para não gravar (um valor de latência pode aparecer na instância do DTS). Selecione No para gravar operações de heartbeat (isso pode afetar o backup físico e a clonagem da origem).
Configure ETL
Selecione Yes para configurar regras de extração, transformação e carga (ETL) no editor de código. Consulte Configure ETL in a data migration or data synchronization task. Selecione No para não configurar ETL.
Monitoring and Alerting
Selecione Yes para receber alertas quando a tarefa falhar ou a latência de migração exceder o limiar. Configure o limiar de alerta e as configurações de notificação. Consulte Configure monitoring and alerting when you create a DTS task.
Etapa 4: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck e salve as configurações.
Para visualizar os parâmetros da OpenAPI para esta configuração de tarefa, passe o cursor sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters antes de prosseguir.
O DTS executa uma pré-verificação antes de iniciar a migração. Se a pré-verificação falhar:
Clique em View Details ao lado de cada item com falha, resolva o problema e, em seguida, clique em Precheck Again.
Se um alerta de pré-verificação puder ser ignorado, clique em Confirm Alert Details, depois em Ignore na caixa de diálogo, em seguida em OK e, por fim, em Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Etapa 5: Adquirir e iniciar a instância
Aguarde até que a Success Rate atinja 100% e, em seguida, clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure o seguinte:
Parâmetro
Descrição
Resource Group
O grupo de recursos para a instância de migração. Padrão: default resource group. Consulte What is Resource Management?
Instance Class
O DTS fornece classes de instância com diferentes velocidades de migração. Selecione uma classe de instância com base no seu cenário de negócios. Consulte Instance classes of data migration instances.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms e, em seguida, clique em Buy and Start. Clique em OK e confirme a mensagem.
Acompanhe o progresso da tarefa na página Data Migration.
Se a tarefa de migração de dados não incluir migração incremental, a tarefa será interrompida automaticamente e o status Completed será exibido.
Se a tarefa de migração de dados incluir migração incremental, a tarefa não será interrompida automaticamente. A migração incremental de dados é executada continuamente e o status Running será exibido.