Use o Data Transmission Service (DTS) para migrar dados de um cluster PolarDB for MySQL para uma instância ApsaraDB for SelectDB, atendendo a cargas de trabalho analíticas em larga escala. O DTS oferece suporte à migração de schema, à migração completa de dados e à migração incremental de dados, o que permite migrar dados com o mínimo de tempo de inatividade.
Pré-requisitos
Antes de começar, confirme que você tem:
Um cluster PolarDB for MySQL de source
Uma instância ApsaraDB for SelectDB instance de destino
Contas de banco de dados com as permissões necessárias nas duas instâncias (consulte Permissions required)
Cobrança
|
Tipo de migração |
Tarifas de configuração de link |
Tarifas de transferência de dados |
|
Migração de schema + migração completa de dados |
Gratuito |
Gratuito (a menos que o método de acesso do destino seja Public IP Address — consulte Billing overview) |
|
Migração incremental de dados |
Cobrado — consulte Billing overview |
— |
Permissões necessárias
| Banco de dados | Migração de schema | Migração completa | Migração incremental |
|---|---|---|---|
| Source: PolarDB for MySQL | SELECT | SELECT | Access control list |
| Destino: SelectDB | USAGE_PRIV, SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV | ||
Para criar contas e conceder permissões:
PolarDB for MySQL: consulte Create and manage database accounts e Manage the password of a database account.
SelectDB: consulte Cluster permission management e Basic permission management.
Limitações
Banco de dados de source
|
Limitação |
Detalhes |
|
Largura de banda |
O servidor do banco de dados de source deve ter no mínimo 100 Mb/s de largura de banda de saída. Larguras de banda menores reduzem a velocidade da migração. |
|
Objetos não suportados |
Não é possível migrar nós somente leitura, tabelas externas do OSS, índices, partições, views, procedures, funções, triggers e chaves estrangeiras. |
|
Limite de tabelas para mapeamento de colunas |
Ao mapear nomes de colunas ou edite objetos de migração de outra forma, uma única tarefa oferece suporte a até 1.000 tabelas. Para migrar mais tabelas, divida-as em várias tarefas ou migre o banco de dados inteiro sem edições em nível de coluna. |
|
Binary logging (somente migração incremental) |
Ative o binary logging e defina o parâmetro |
|
Retenção de binary log (somente migração incremental) |
Mantenha os binary logs por pelo menos 3 dias (recomenda-se 7 dias). Se o DTS não conseguir recuperar os binary logs, a migração pode falhar ou provocar inconsistência ou perda de dados. Isso não é coberto pelo Service-Level Agreement (SLA) do DTS. Consulte Modify the retention period. |
Banco de dados de destino (SelectDB)
|
Limitação |
Detalhes |
|
Engines suportadas |
Apenas tabelas que usam a engine Unique ou Duplicate têm suporte. |
|
Engine Unique |
Todas as chaves únicas na tabela de destino devem existir na tabela de source e estar incluídas nos objetos de migração. Caso contrário, pode ocorrer inconsistência de dados. |
|
Engine Duplicate |
Linhas duplicadas podem aparecer quando ocorre uma nova tentativa, quando a instância reinicia ou quando duas ou mais operações DML são executadas na mesma linha após a inicialização da instância. Use as colunas adicionais |
|
Parâmetro |
Na caixa Selected Objects, só é possível configure o parâmetro |
|
Regras de nomenclatura |
Nomes de bancos de dados e tabelas devem começar com uma letra. Nomes de objetos (bancos de dados, tabelas ou colunas) que contenham caracteres chineses precisam ser renomeados por meio do recurso de mapeamento de nomes de objeto antes da migração. |
|
Conversão de tamanho de VARCHAR |
No PolarDB for MySQL, |
|
Mesclagem de várias tabelas |
Ao migrar várias tabelas de source para uma única tabela de destino, os schemas das tabelas de source devem ser idênticos. Diferenças de schema provocam inconsistência de dados ou falha na tarefa. |
Limitações operacionais durante a migração
Evite as ações a seguir enquanto a migração estiver em andamento:
|
Ação proibida |
Risco |
|
Operações DDL que alteram schemas (durante a migração de schema ou a migração completa) |
A tarefa de migração falha. |
|
Operações DDL que modifique várias colunas de uma só vez, ou a mesma tabela em sucessão |
Sem suporte; a tarefa falha. |
|
Operações DDL online usando pt-online-schema-change na source |
Não podem ser migradas; podem causar perda de dados ou falha da tarefa. |
|
Crie clusters na instância SelectDB de destino |
A tarefa falha. Reinicie a instância de migração para retomar. |
|
Adicionar nós backend (BE) ao SelectDB |
A tarefa falha. Reinicie a instância de migração para retomar. |
|
Gravar dados de fontes diferentes do DTS no destino |
Pode causar inconsistência de dados. |
|
Gravar novos dados na source (somente migração completa, sem incremental) |
Provoca inconsistência de dados entre source e destino. |
|
Failover primário/secundário durante a migração completa |
O DTS não oferece suporte a failover durante a migração completa. Reconfigure a tarefa caso ocorra failover. |
Outras considerações
DDL online com DMS ou gh-ost: o DTS migra apenas as instruções DDL originais — não os dados de tabelas temporárias. Isso pode bloquear tabelas de destino.
Operações fora do binary log: alterações de dados que não são registradas nos binary logs (como recuperação de backup físico e operações em cascata) não são migradas. Execute uma nova migração completa de dados caso isso ocorra.
RENAME TABLE: um RENAME TABLE durante a migração incremental pode provocar inconsistência de dados. Se você renomear uma tabela que é objeto de migração, os dados dela podem não ser migrados. Para evitar isso, selecione o banco de dados — e não tabelas individuais — como objeto de migração e garanta que o banco de dados apareça nos objetos de migração antes e depois da renomeação.
Latência da sincronização incremental: por padrão, o DTS grava em cada objeto de sincronização no máximo uma vez a cada 5 segundos. Normalmente, a latência fica dentro de 10 segundos. Para reduzir a latência, ajuste o parâmetro
selectdb.reservoir.timeout.millisecondsno console do DTS (intervalo válido: 1.000–10.000 ms). Intervalos mais curtos aumentam a frequência de gravação e podem elevar a carga no destino e o tempo de resposta de gravação (RT).Impacto no desempenho: a migração completa lê todos os dados de source e grava no destino de forma concorrente, o que aumenta a carga em ambos os bancos de dados. Execute migrações fora dos horários de pico e ative a limitação de taxa quando necessário.
Tamanho do tablespace após a migração completa: operações INSERT concorrentes durante a migração completa causam fragmentação. O tablespace de destino pode ficar maior do que o de source após a conclusão da migração.
Recuperação da instância: se a instância de migração falhar, o helpdesk do DTS tenta a recuperação em até 8 horas. A recuperação pode envolver reinício da instância ou ajuste de parâmetros da instância do DTS (não parâmetros do banco de dados). Consulte Modify instance parameters para saber quais parâmetros podem ser modificados.
Operações SQL suportadas na migração incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
RENAME TABLE pode provocar inconsistência de dados. Se você selecione uma tabela como objeto de migração e renomeá-la durante a migração, os dados dela podem não migrar para o destino. Para evitar isso, selecione o banco de dados (e não tabelas individuais) como objeto de migração e garanta que o banco de dados apareça nos objetos de migração antes e depois da renomeação.
Crie uma tarefa de migração
Etapa 1: abrir a página Data Migration
Use um dos consoles a seguir:
DTS console
Faça login no DTS console.DTS console
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região onde a instância de migração está localizada.
DMS console
Nota
As etapas exatas podem variar conforme o modo e o layout do seu DMS console. Consulte Simple mode e Customize the layout and style of the DMS console.
Faça login no DMS console.DMS console
Na barra de navegação superior, acesse Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa à direita de Data Migration Tasks, selecione a região onde a instância de migração está localizada.
Etapa 2: configure os bancos de dados de source e destino
Clique em Create Task.
Na página de configuração da tarefa, defina os parâmetros a seguir.
General
|
Parâmetro |
Descrição |
|
Task Name |
Um nome para a tarefa DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para identificar a tarefa. O nome não precisa ser exclusivo. |
Source Database
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Se a instância de source já estiver registrada no DTS, selecione-a na lista suspensa — o DTS preenche automaticamente os demais parâmetros. No DMS console, use a lista suspensa Select a DMS database instance. Se a instância não estiver registrada, configure os parâmetros abaixo manualmente. |
|
Database Type |
Selecione PolarDB for MySQL. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
A região onde o cluster PolarDB for MySQL de source está localizado. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No para migração dentro da mesma conta. Para migrar entre contas diferentes, primeiro configure RAM authorization. |
|
PolarDB Cluster ID |
O ID do cluster PolarDB for MySQL de source. |
|
Database Account |
A conta de banco de dados do cluster de source. Consulte Permissions required. |
|
Database Password |
A senha da conta de banco de dados. |
|
Encryption |
Selecione uma opção com base nas configurações do cluster PolarDB for MySQL. Para detalhes sobre criptografia Secure Sockets Layer (SSL), consulte Configure SSL encryption. |
Destination Database
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Se a instância de destino já estiver registrada no DTS, selecione-a na lista suspensa. No DMS console, use a lista suspensa Select a DMS database instance. Caso não esteja registrada, configure os parâmetros abaixo manualmente. |
|
Database Type |
Selecione SelectDB. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
A região onde a instância SelectDB de destino está localizada. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No para migração dentro da mesma conta. |
|
Instance ID |
O ID da instância SelectDB de destino. |
|
Database Account |
A conta de banco de dados da instância SelectDB de destino. Consulte Permissions required. |
|
Database Password |
A senha da conta de banco de dados. |
Clique em Test Connectivity and Proceed.
Adicione os blocos CIDR dos servidores DTS às configurações de segurança de ambos os bancos de dados antes de executar o teste de conectividade. Consulte Add DTS server IP addresses to a whitelist .
Etapa 3: Selecionar objetos de migração
Na página Configure Objects, defina as configurações a seguir.
|
Configuração |
Descrição |
|
Migration Types |
Selecione os tipos de migração conforme suas necessidades: Somente migração completa: selecione Schema Migration e Full Data Migration. Migração com tempo de inatividade mínimo: selecione Schema Migration, Full Data Migration e Incremental Data Migration. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (padrão): o DTS verifica se existem tabelas com o mesmo nome no destino. Caso haja duplicatas, a pré-verificação falha e a tarefa não é iniciada. Para resolver sem excluir a tabela de destino, use object name mapping. Ignore Errors and Proceed: o DTS ignora a verificação de tabelas duplicadas. Use com cautela — se os esquemas coincidirem, os registros da source sobrescrevem os registros do destino que tenham a mesma chave primária; se os esquemas divergirem, algumas colunas podem não migrar ou a tarefa pode falhar. |
|
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 Specify the capitalization of object names in the destination instance. |
|
Source Objects |
Selecione os bancos de dados ou tabelas a migrar. Clique em ícone de seta para adicioná-los a Selected Objects. |
|
Selected Objects |
Clique em com o botão direito em um objeto de migração para renomeá-lo, definir o parâmetro |
Se você não selecionar Schema Migration, crie as tabelas com o modelo de chave Unique ou Duplicate na instância SelectDB de destino antes de iniciar a migração. Consulte Data type mappings, Additional columns e Data model.
Se você não selecionar Incremental Data Migration, não grave novos dados na instância de origem durante a migração.
O uso de mapeamento de nomes de objetos pode fazer com que objetos dependentes falhem na migração.
Clique em Next: Advanced Settings e defina o seguinte.
|
Configuração |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS usa um cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Por quanto tempo o DTS tenta reconectar após falhas de conexão. Intervalo válido: 10–1.440 minutos. Padrão: 720 minutos. Defina no mínimo 30 minutos. Se o DTS reconectar dentro dessa janela, a migração é retomada; caso contrário, a tarefa falha. Observe que tarefas diferentes que compartilham a mesma source ou destino usam o valor definido mais recentemente, e o DTS cobra pela instância durante o período de nova tentativa. |
|
Retry Time for Other Issues |
Por quanto tempo o DTS tenta reexecutar operações DDL ou DML que falharam. Intervalo válido: 1–1.440 minutos. Padrão: 10 minutos. Defina no mínimo 10 minutos. Deve ser inferior a Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita a carga de leitura e gravação durante a migração completa. 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 carga durante a 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 |
(Opcional) Uma tag para identificar a instância. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesconfigurações de notificação de alerta: não grava operações de heartbeat na source (um indicador de latência pode aparecer na instância DTS). No: grava operações de heartbeat (pode afetar o backup físico e a clonagem da source). |
|
Configure ETL |
Yes: configure o processamento de extract, transform, and load (ETL) com instruções de tratamento de dados no editor de código. Consulte Configure ETL in a data migration or data synchronization task e What is ETL?. No: ignora o ETL. |
|
Monitoring and Alerting |
Yes: configure alertas para falha da tarefa ou para latência que exceda um limiar. Defina o limiar de alerta e os contatos de notificação. Consulte Configure monitoring and alerting when you create a DTS task. No: sem alertas. |
(Opcional) Clique em Next: Configure Database and Table Fields para definir Primary Key Column, Distribution Key e Engine nas tabelas de destino.
Esta etapa só está disponível quando Schema Migration está selecionado. Defina Definition Status como All para ver todas as tabelas.
Selecione uma ou mais colunas como Primary Key Column . Ao menos uma coluna de chave primária também deve ser selecionada como Distribution Key .
Para tabelas sem chaves primárias ou restrições UNIQUE, defina Engine como duplicate . Caso contrário, a migração poderá falhar ou haverá perda de dados.
Etapa 4: Executar uma pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros de API desta tarefa, passe o cursor sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
O DTS executa uma pré-verificação antes do início da migração. A tarefa só pode ser iniciada após a aprovação da pré-verificação.
Se um item de verificação falhar, clique em View Details ao lado do item com falha, corrija o problema e clique em Precheck Again.
-
Se um alerta for acionado:
Se não puder ser ignorado, clique em View Details, corrija o problema e execute a pré-verificação novamente.
Se puder ser ignorado, clique em Confirm Alert Details, clique em Ignore na caixa de diálogo, clique em OK e, em seguida, clique em Precheck Again.
Ignorar alertas da pré-verificação pode resultar em inconsistência de dados ou em outros riscos.
Etapa 5: Adquirir e iniciar a instância de migração
Aguarde até que Success Rate atinja 100% e clique em Next: Purchase Instance.
Na página Purchase Instance, defina o seguinte.
| Seção | Parâmetro | Descrição |
|---|---|---|
| New Instance Class | 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 | Determina a velocidade da migração. Selecione conforme o volume de dados e a janela de migração. Consulte Instance classes of data migration instances. |
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
Acompanhe o progresso da migração na página Data Migration:
Somente migração completa: a tarefa é interrompida automaticamente ao concluir. O status exibe Completed.
Incremental migration: a tarefa é executada continuamente e não para automaticamente. O status exibe Running.
Mapeamentos de tipos de dados
A tabela a seguir mostra como os tipos de dados do PolarDB for MySQL são mapeados para os tipos de dados do SelectDB.
| Categoria | PolarDB for MySQL | SelectDB |
|---|---|---|
| Numérico | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Decimal | Decimal (Zerofill não suportado) | |
| Numeric | Decimal | |
| Float | Float | |
| Double | DOUBLE | |
| BOOL / BOOLEAN | BOOLEAN | |
| Data e hora | DATE | DATEV2 |
| DATETIME[(fsp)] | DATETIMEV2 | |
| Timestamp[(fsp)] | DATETIMEV2 | |
| Time[(fsp)] | VARCHAR | |
| YEAR[(4)] | INT | |
| String | CHAR / VARCHAR | VARCHAR |
| BINARY / VARBINARY | STRING | |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING | |
| TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
Para evitar perda de dados, CHAR e VARCHAR(n) são convertidos para VARCHAR(4*n) durante a migração para o SelectDB.
Se nenhum comprimento for especificado, o padrão é VARCHAR(65533).
Dados com mais de 65.533 caracteres são convertidos para STRING.
Colunas adicionais
Para tabelas que usam o engine Duplicate, o DTS adiciona automaticamente as colunas a seguir às tabelas de destino. Se você criar as tabelas de destino manualmente, adicione essas colunas por conta própria.
|
Nome da coluna |
Tipo de dado |
Valor padrão |
Descrição |
|
|
Int |
0 |
Indica se a linha foi excluída. 0 para INSERT e UPDATE; 1 para DELETE. |
|
|
Bigint |
0 |
0 para migração completa. Na migração incremental, corresponde ao timestamp em segundos do binary log da source. |
|
|
Bigint |
0 |
0 para migração completa. Na migração incremental, corresponde ao ID de registro exclusivo com incremento automático da entrada de log incremental. |
Próximas etapas
Após a conclusão da migração, verifique a consistência dos dados entre os bancos de dados de origem e de destino. Para migração incremental, interrompa as gravações na source, aguarde o DTS sincronizar as alterações restantes e, em seguida, redirecione o tráfego da aplicação para o SelectDB.