Use o Data Transmission Service (DTS) para migrar dados de um cluster PolarDB for MySQL para um projeto MaxCompute. O DTS oferece suporte à migração de esquema, migração completa de dados e migração incremental de dados, abrangendo tanto dados históricos quanto alterações contínuas.
Como funciona
O DTS utiliza um pipeline de três estágios para transferir dados do PolarDB for MySQL para o MaxCompute:
Schema migration: O DTS lê os esquemas das tabelas de origem e cria as tabelas correspondentes no MaxCompute, adicionando o sufixo
_basea cada nome de tabela. Por exemplo, a tabelacustomertorna-secustomer_baseno MaxCompute.Full data migration: O DTS copia todas as linhas existentes de cada tabela de origem para a tabela
_basecorrespondente no MaxCompute. Essas tabelas são chamadas de tabelas de linha de base completa e servem como ponto de partida para a sincronização incremental.Incremental data migration: O DTS cria uma tabela
_logseparada para cada tabela migrada (por exemplo,customer_log) e transmite operações contínuas de INSERT, UPDATE e DELETE dos logs binários de origem para essas tabelas em tempo real.
Pré-requisitos
Antes de começar, verifique se você possui:
O serviço MaxCompute ativado e um projeto MaxCompute criado. Consulte Ativar o MaxCompute e o DataWorks e Criar um projeto MaxCompute.
Uma lista de permissões de endereços IP configurada no projeto MaxCompute para permitir o acesso do DTS. Consulte Configurar uma lista de permissões de endereços IP para permitir o acesso de serviços da Alibaba Cloud ao MaxCompute.
Um par de AccessKey para a conta Alibaba Cloud proprietária do projeto MaxCompute de destino. Consulte Criar um par de AccessKey.
Em vez de usar o par de AccessKey da conta principal, crie um usuário RAM e defina-o como superadministrador do projeto MaxCompute .
Limitações
Condições que bloqueiam a tarefa (corrija antes de iniciar)
As condições a seguir causam falha na tarefa de migração:
O servidor onde o banco de dados de origem está implantado deve ter largura de banda de saída suficiente. Caso contrário, a velocidade de migração de dados diminui.
As tabelas a serem migradas devem ter uma restrição PRIMARY KEY ou UNIQUE com todos os campos únicos. Sem isso, o destino pode conter registros duplicados.
Se você selecionar tabelas como objetos de migração e precisar renomear tabelas ou colunas, uma única tarefa suportará até 1.000 tabelas. Tarefas com mais de 1.000 tabelas neste modo retornam um erro de solicitação. Configure várias tarefas ou migre no nível do banco de dados.
Para migração incremental de dados, o log binário deve estar habilitado e o parâmetro
loose_polar_log_bindeve estar definido comoon. Se o log binário não estiver habilitado, a pré-verificação falhará e a tarefa não poderá ser iniciada. Consulte Habilitar log binário e Modificar parâmetros.Não execute instruções DDL para alterar esquemas de banco de dados ou tabelas durante a migração de esquema ou a migração completa de dados. A tarefa de migração falhará se os esquemas forem alterados durante a execução.
Não utilize ferramentas como
pt-online-schema-changepara operações DDL online nos objetos em migração. A tarefa de migração falhará.
Habilitar o log binário em um cluster PolarDB for MySQL gera cobranças de armazenamento para os arquivos de log binário.
Riscos à integridade dos dados (revise antes de iniciar)
Estas condições podem causar inconsistência ou perda de dados:
Os logs binários devem ser retidos por pelo menos 3 dias; recomenda-se a retenção por 7 dias para maior segurança. Se o DTS não conseguir ler os logs binários, a tarefa falhará. Em casos excepcionais, pode ocorrer inconsistência ou perda de dados. Reter logs por menos dias do que o necessário pode invalidar o Acordo de Nível de Serviço (SLA) do DTS. Consulte Modificar o período de retenção.
Não grave dados no banco de dados de origem durante a migração apenas completa (migração de esquema + migração completa de dados sem incremental). Gravar na origem durante esta fase causa inconsistência de dados. Para gravar com segurança na origem durante a migração, inclua a migração incremental de dados.
Não grave dados de outras fontes no projeto MaxCompute de destino durante a migração. Gravações externas causam inconsistência de dados.
O MaxCompute não oferece suporte a restrições de chave primária. Se ocorrerem erros de rede, o DTS poderá gravar registros duplicados no projeto MaxCompute.
O DTS tenta repetir tarefas com falha por até 7 dias. Antes de alternar cargas de trabalho para o destino, pare ou libere as tarefas com falha. Alternativamente, revogue as permissões de gravação das contas do DTS no destino. Caso contrário, os dados de origem substituirão os dados de destino quando uma tarefa com falha for retomada.
Limites operacionais
O DTS não migra nós somente leitura do cluster PolarDB for MySQL de origem.
O DTS não migra tabelas externas do Object Storage Service (OSS) do cluster PolarDB for MySQL de origem.
O DTS não migra chaves estrangeiras. Operações em cascata e de exclusão dependentes de chaves estrangeiras não são replicadas para o destino.
Migre dados fora dos horários de pico. A migração completa de dados utiliza recursos de leitura e gravação tanto na origem quanto no destino, o que aumenta a carga em ambos os servidores de banco de dados.
Após a migração completa de dados, o tablespace de destino fica maior que o de origem porque operações INSERT simultâneas causam fragmentação da tabela.
Se uma instância do DTS falhar, o suporte técnico do DTS tentará a recuperação dentro de 8 horas. A recuperação pode envolver a reinicialização da instância ou o ajuste de parâmetros da instância do DTS (não parâmetros do banco de dados). Para obter informações sobre os parâmetros modificáveis, consulte Modificar parâmetros da instância.
Faturamento
|
Tipo de migração |
Taxa de configuração da tarefa |
Taxa de tráfego de internet |
|
Migração de esquema e migração completa de dados |
Gratuita |
Gratuita, a menos que o Access Method esteja definido como Public IP Address. Consulte Visão geral do faturamento. |
|
Migração incremental de dados |
Cobrada. Consulte Visão geral do faturamento. |
— |
Operações SQL com suporte para migração incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN |
Operações ADD COLUMN que incluem colunas de atributo não podem ser migradas.
Permissões necessárias para a conta do banco de dados
|
Banco de dados |
Permissões necessárias |
Como conceder |
|
PolarDB for MySQL |
Permissões de leitura nos objetos a serem migrados |
Criar e gerenciar contas de banco de dados e Gerenciar senhas de contas de banco de dados |
Criar uma tarefa de migração
Etapa 1: Abrir a página Data Migration
Use o console do DTS ou o console do DMS.
Console do DTS
Faça login no console do DTS.console do DTS
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 residirá.
Console do DMS
Nota
O layout do console do DMS varia conforme o modo. Consulte Modo simples e Personalizar o layout e o estilo do console do DMS.
Faça login no console do DMS.console do DMS
Na barra de navegação superior, mova o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa ao lado de Data Migration Tasks, selecione a região onde a instância de migração residirá.
Etapa 2: Configurar bancos de dados de origem e destino
Clique em Create Task.
Configure os seguintes parâmetros.
Geral
|
Parâmetro |
Descrição |
|
Task Name |
Nome da tarefa do DTS. O DTS gera um nome padrão. Especifique um nome descritivo para identificar a tarefa facilmente. Os nomes das tarefas não precisam ser exclusivos. |
Banco de dados de origem
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Se o banco de dados de origem já estiver registrado no DTS, selecione-o na lista suspensa. O DTS preencherá os campos restantes automaticamente. Caso contrário, configure os campos abaixo. No console do DMS, selecione em Select a DMS database instance. |
|
Database Type |
Selecione PolarDB for MySQL. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Região onde o cluster PolarDB for MySQL de origem reside. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No ao migrar dentro da mesma conta Alibaba Cloud. |
|
PolarDB Cluster ID |
ID do cluster PolarDB for MySQL de origem. |
|
Database Account |
Conta do banco de dados para o cluster de origem. Consulte Permissões necessárias para a conta do banco de dados. |
|
Database Password |
Senha da conta do banco de dados. |
|
Encryption |
Indica se a conexão com o banco de dados de origem deve ser criptografada. Consulte Configurar criptografia SSL. |
Banco de dados de destino
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Se o projeto MaxCompute de destino já estiver registrado no DTS, selecione-o na lista suspensa. Caso contrário, configure os campos abaixo. |
|
Database Type |
Selecione MaxCompute. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Região onde o projeto MaxCompute de destino reside. |
|
Project |
Nome do projeto MaxCompute de destino. |
|
AccessKey ID of Alibaba Cloud Account |
AccessKey ID do par de AccessKey preparado nos pré-requisitos. |
|
AccessKey Secret of Alibaba Cloud Account |
AccessKey Secret do par de AccessKey. |
Clique em Test Connectivity and Proceed.
Certifique-se de que os blocos CIDR dos servidores do DTS foram adicionados às configurações de segurança dos bancos de dados de origem e destino. O DTS pode adicioná-los automaticamente ou você pode adicioná-los manualmente. Consulte Adicionar endereços IP do servidor DTS a uma lista de permissões .
Clique em OK para conceder permissões ao DTS no projeto MaxCompute. Em seguida, clique em Test Connectivity and Proceed.
Etapa 3: Configurar objetos de migração
Na página Configure Objects, defina os seguintes parâmetros.
Migration types
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione os tipos de migração com base no seu caso de uso: - Schema Migration + Full Data Migration: migra apenas dados históricos. A tarefa é concluída e parada automaticamente. - Schema Migration + Full Data Migration + Incremental Data Migration: migra dados históricos e replica alterações contínuas em tempo real. A tarefa é executada continuamente até que você a pare. |
Se você pular a Schema Migration , crie o banco de dados e as tabelas de destino manualmente antes de iniciar a tarefa e ative o mapeamento de nomes de objetos em Selected Objects .
Se você pular a Incremental Data Migration , não grave no banco de dados de origem durante a migração para evitar inconsistência de dados.
Configuração de tabela
|
Parâmetro |
Descrição |
|
Naming Rules of Additional Columns |
Após a migração, o DTS adiciona colunas extras à tabela de destino. Se um nome de coluna adicionada entrar em conflito com uma coluna existente, a tarefa falhará. Selecione New Rule ou Previous Rule com base na sua configuração. Verifique se há conflitos de nomes antes de selecionar. Consulte Regras de nomenclatura para colunas adicionais. |
|
Partition Definition of Incremental Data Table |
Selecione nomes de partição para a tabela de dados incrementais. Consulte Partição. |
|
Processing Mode of Conflicting Tables |
Como o DTS lida com tabelas no destino que têm o mesmo nome das tabelas na origem: - Precheck and Report Errors: a tarefa falha na pré-verificação se conflitos de nome forem encontrados. Para resolver conflitos sem renomear as tabelas de destino, use o mapeamento de nomes de objetos. Consulte Mapear nomes de objetos. - Ignore Errors and Proceed: ignora a verificação de conflitos. Se os esquemas de origem e destino coincidirem e as chaves primárias entrarem em conflito, a migração completa ignorará o registro conflitante (o registro de destino é mantido), enquanto a migração incremental o substituirá. Se os esquemas diferirem, apenas colunas específicas serão migradas ou a tarefa falhará. Use com cautela. |
|
Capitalization of Object Names in Destination Instance |
Política de uso de maiúsculas e minúsculas para nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Especificar o uso de maiúsculas e minúsculas em nomes de objetos na instância de destino. |
Seleção de objetos
| Parâmetro | Descrição |
|---|---|
| Source Objects | Selecione os objetos a serem migrados. Clique no ícone |
| Selected Objects | Para renomear um único objeto no destino, clique com o botão direito nele em Selected Objects. Consulte Mapear o nome de um único objeto. Para renomear vários objetos de uma vez, clique em Batch Edit. Consulte Mapear vários nomes de objetos de uma vez. Para filtrar linhas em uma tabela, clique com o botão direito na tabela e configure as condições de filtro. Consulte Especificar condições de filtro. Nota
Renomear um objeto com o mapeamento de nomes de objetos pode fazer com que objetos dependentes falhem na migração. |
Clique em Next: Advanced Settings.
Etapa 4: Configurar definições avançadas
| Parâmetro | Descrição |
|---|---|
| Dedicated Cluster for Task Scheduling | Por padrão, o DTS agenda a tarefa para o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado do DTS. |
| Retry Time for Failed Connections | Tempo durante o qual o DTS tenta reconectar quando o banco de dados de origem ou destino está inacessível. Valores válidos: 10–1.440 minutos. Padrão: 720 minutos. Recomendamos definir o parâmetro com um valor superior a 30. Se o DTS reconectar dentro da janela de nova tentativa, ele retomará a tarefa. Caso contrário, a tarefa falhará. Nota
Quando várias tarefas compartilham um banco de dados de origem ou destino, o tempo de nova tentativa definido mais recentemente se aplica. O DTS cobra pela instância durante as novas tentativas. |
| Retry Time for Other Issues | Tempo durante o qual o DTS tenta novamente após falhas de DDL ou DML. Valores válidos: 1–1.440 minutos. Padrão: 10 minutos. Recomendamos definir o parâmetro com um valor superior a 10. Deve ser menor que Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limita a carga de leitura e gravação na origem e no destino durante a migração completa de dados. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration (linhas por segundo) 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 de dados. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Controla se o DTS grava operações SQL nas tabelas de heartbeat no banco de dados de origem durante a execução. Yesalert notification settings: não grava nas tabelas de heartbeat (um indicador de latência pode aparecer na instância). No: grava nas tabelas de heartbeat (pode afetar o backup físico ou a clonagem da origem). |
| Environment Tag | Uma tag opcional para identificar a instância do DTS por ambiente (por exemplo, produção ou teste). |
| Configure ETL | Indica se o recurso de extração, transformação e carregamento (ETL) deve ser ativado. Yes: configure instruções de processamento de dados no editor de código. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. No: pule a configuração de ETL. Consulte O que é ETL? |
| Monitoring and Alerting | Indica se alertas devem ser configurados para a tarefa de migração. Yes: defina limiares de alerta e contatos de notificação. Os alertas são disparados se a tarefa falhar ou se a latência da migração exceder o limiar. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS. No: pule a configuração de alertas. |
Etapa 5: Executar a pré-verificação
Para visualizar os parâmetros da API antes de salvar, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters.
Clique em Next: Save Task Settings and Precheck.
O DTS executa uma pré-verificação antes que a tarefa de migração possa ser iniciada. A tarefa só começa após a aprovação na pré-verificação.
Se um item de verificação falhar, clique em View Details ao lado dele, corrija o problema e clique em Precheck Again.
Se um alerta for disparado em um item de verificação e o item puder ser ignorado com segurança, clique em Confirm Alert Details, depois clique em Ignore na caixa de diálogo e clique em OK. Em seguida, clique em Precheck Again. Ignorar um alerta pode causar inconsistência de dados.
Etapa 6: Adquirir uma instância e iniciar a tarefa
Aguarde até que a Success Rate atinja 100%, então clique em Next: Purchase Instance.
Na página Purchase Instance, configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Resource Group |
Grupo de recursos para a instância de migração. O padrão é o grupo de recursos padrão. Consulte O que é o Resource Management? |
|
Instance Class |
Classe de velocidade de migração. Selecione com base nos seus requisitos de throughput. Consulte Classes de instâncias de migração de dados. |
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms marcando a caixa de seleção.
Clique em Buy and Start, depois clique em OK na caixa de diálogo de confirmação.
A tarefa aparece na página Data Migration.
Tarefas sem migração incremental param automaticamente quando a migração completa termina. O status mostra Completed.
Tarefas com migração incremental são executadas continuamente. O status mostra Running. Pare a tarefa manualmente quando estiver pronto para realizar o corte (cutover).
Estrutura das tabelas de dados incrementais
Execute set odps.sql.allow.fullscan=true; no MaxCompute para permitir varreduras completas de tabela no projeto antes de consultar tabelas de dados incrementais.
O DTS grava alterações incrementais da origem em uma tabela _log no MaxCompute (por exemplo, customer_log). Cada linha na tabela de dados incrementais representa um evento de alteração e inclui tanto as colunas de dados da tabela de origem quanto as seguintes colunas de metadados.
|
Campo |
Descrição |
|
|
Identificador exclusivo da entrada de log incremental. Os IDs são incrementados automaticamente a cada nova entrada. Para operações UPDATE, o DTS gera duas entradas (valores pré-atualização e pós-atualização) com o mesmo |
|
|
Tipo de alteração: |
|
|
Carimbo de data/hora da operação em UTC, obtido do log binário. |
|
|
Indica se a linha contém valores pré-atualização: |
|
|
Indica se a linha contém valores pós-atualização: |