Você pode usar o Data Transmission Service (DTS) para sincronizar dados de uma instância PolarDB-X 2.0 com um projeto MaxCompute.
Pré-requisitos
Você ativou o MaxCompute e criou um projeto MaxCompute. Para mais informações, consulte Ativar o MaxCompute e Criar um projeto.
Você configurou a lista de permissões do MaxCompute para permitir o acesso do DTS. Para mais informações, consulte Configurar a lista de permissões do MaxCompute para permitir acesso dos serviços Alibaba Cloud.
Você usou sua conta Alibaba Cloud (conta raiz) para Criar uma AccessKey.
NotaAlternativamente, você pode Criar um usuário RAM e depois Definir um usuário RAM como superadministrador de um projeto MaxCompute.
Limitações
O DTS não sincroniza chaves estrangeiras do banco de dados de origem para o banco de dados de destino. Portanto, operações em cascata e de exclusão no banco de dados de origem não são sincronizadas com o banco de dados de destino.
|
Tipo |
Descrição |
|
Limites do banco de dados de origem |
|
|
Outros limites |
|
|
Precauções |
O DTS atualiza periodicamente a tabela |
Faturamento
|
Tipo de sincronização |
Preço |
|
Sincronização de schema e sincronização completa de dados |
Gratuito. |
|
Sincronização incremental de dados |
Cobrado. Para mais informações, consulte Visão geral do faturamento. |
Operações SQL compatíveis
Tipo | Instrução SQL |
DML | INSERT, UPDATE e DELETE |
DDL | ALTER TABLE, ADD COLUMN Nota Apenas operações simples de adição de coluna são compatíveis, como
|
Procedimento
-
Acesse a página da lista de tarefas de sincronização da região de destino. Você pode usar um dos dois métodos a seguir:
Pelo console do DTS
-
Faça login no console do Data Transmission Service (DTS).
-
No painel de navegação à esquerda, clique em Data Synchronization.
-
No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.
Pelo console do DMS
NotaAs operações reais podem variar de acordo com o modo e o layout do console do DMS. Para mais informações, consulte Modo simples e Personalizar o layout e o estilo da interface do DMS.
-
Faça login no Data Management (DMS).
-
Na barra de menu superior, escolha .
-
À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.
-
-
Clique em Create Task para abrir a página de configuração da tarefa.
Configure os bancos de dados de origem e de destino.
Categoria
Parâmetro
Descrição
N/A
Task Name
O DTS gera automaticamente um nome para a tarefa. Recomendamos que você especifique um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Source Database
Select Existing Connection
-
Para usar uma instância de banco de dados que foi adicionada ao sistema (recém-criada ou salva), selecione a instância na lista suspensa. As informações do banco de dados são configuradas automaticamente.
NotaNo console do DMS, este item de configuração se chama Select a DMS database instance..
-
Se você não adicionou a instância de banco de dados ao sistema ou não precisa usar uma instância já adicionada, configure manualmente as seguintes informações do banco de dados.
Database Type
Selecione PolarDB-X 2.0.
Connection Type
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde a instância PolarDB-X 2.0 está localizada.
Replicate Data Across Alibaba Cloud Accounts
Este exemplo mostra a sincronização de dados na mesma conta Alibaba Cloud. Selecione No.
Instance ID
Selecione o ID da instância PolarDB-X 2.0 de origem.
Database Account
Insira a conta do banco de dados da instância PolarDB-X 2.0. A conta deve ter as permissões REPLICATION SLAVE, REPLICATION CLIENT e SELECT sobre os objetos a serem sincronizados.
NotaPara informações sobre como conceder permissões, consulte Problemas de permissão de conta durante a sincronização de dados.
Database Password
Insira a senha correspondente à conta do banco de dados.
Destination Database
Select Existing Connection
-
Para usar uma instância de banco de dados que foi adicionada ao sistema (recém-criada ou salva), selecione a instância na lista suspensa. As informações do banco de dados são configuradas automaticamente.
NotaNo console do DMS, este item de configuração se chama Select a DMS database instance..
-
Se você não adicionou a instância de banco de dados ao sistema ou não precisa usar uma instância já adicionada, configure manualmente as seguintes informações do banco de dados.
Database Type
Selecione MaxCompute.
Connection Type
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde a instância MaxCompute de destino está localizada.
Project
Insira o nome do projeto MaxCompute de destino.
AccessKey ID of Alibaba Cloud Account
Insira o par de AccessKey que você preparou na seção Pré-requisitos.
AccessKey Secret of Alibaba Cloud Account
-
-
Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.
Nota-
Certifique-se de que os blocos CIDR de endereços IP dos servidores do DTS foram adicionados às configurações de segurança dos bancos de dados de origem e destino para permitir o acesso dos servidores do DTS. Isso pode ser feito automaticamente ou manualmente. Para mais informações, consulte Adicionar os blocos CIDR de endereços IP dos servidores do DTS a uma lista de permissões.
-
Se o banco de dados de origem ou de destino for um banco de dados autogerenciado (onde o Access Method não é Alibaba Cloud Instance), você também deve clicar em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.
-
Clique em OK para autorizar a conta do MaxCompute.
Configure os objetos da tarefa.
Na página Configure Objects, configure os objetos a serem sincronizados.
Parâmetro
Descrição
Synchronization Types
Os tipos de sincronização. Por padrão, Incremental Data Synchronization está selecionado. Você também deve selecionar Schema Synchronization e Full Data Synchronization. Após a conclusão da pré-verificação, o DTS sincroniza os dados históricos dos objetos selecionados do banco de dados de origem para o cluster de destino. Os dados históricos são a base para a sincronização incremental subsequente.
Processing Mode for Existing Tables in Destination
-
Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de dados de destino. Se não existir uma tabela com o mesmo nome, a pré-verificação é aprovada. Se existir uma tabela com o mesmo nome, a pré-verificação falha e a tarefa de sincronização de dados não é iniciada.
NotaSe você não puder excluir ou renomear a tabela com o mesmo nome no banco de dados de destino, poderá mapeá-la para um nome de tabela diferente. Para mais informações, consulte Mapear nomes de tabelas e colunas.
-
Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas duplicados no banco de dados de destino.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seu negócio em risco. Por exemplo:
-
Se os schemas das tabelas forem iguais e um registro no banco de dados de destino tiver o mesmo valor de chave primária ou chave única que um registro no banco de dados de origem:
-
Durante a sincronização completa, o DTS mantém o registro no cluster de destino. O registro correspondente do banco de dados de origem não é sincronizado.
-
Durante a sincronização incremental, o registro do banco de dados de origem sobrescreve o registro no banco de dados de destino.
-
-
Se os schemas das tabelas forem diferentes, a sincronização inicial de dados pode falhar. Isso pode resultar na sincronização apenas parcial dos dados das colunas ou em uma falha completa da sincronização. Prossiga com cautela.
-
Naming Rules of Additional Columns
O DTS adiciona colunas adicionais às tabelas de destino durante a sincronização. Se esses nomes de colunas entrarem em conflito com colunas existentes, a sincronização falhará. Selecione New Rule ou Previous Rule de acordo com os requisitos do seu negócio.
AvisoVerifique se os nomes das colunas adicionais entram em conflito com os nomes das colunas existentes nas tabelas de destino antes de selecionar uma regra. Caso contrário, pode ocorrer perda de dados ou falha da tarefa. Para mais informações sobre as regras e definições de colunas adicionais, consulte Nomes e definições de colunas adicionais.
Partition Definition of Incremental Data Table
Selecione os nomes das partições de acordo com os requisitos do seu negócio. Para mais informações sobre partições, consulte PartiçãoPartição.
Case Sensitivity Policy for Destination Object Names
Você pode configurar a política de diferenciação de maiúsculas e minúsculas para nomes de objetos de banco de dados, tabelas e colunas sincronizados com a instância de destino. Por padrão, a DTS default policy está selecionada. Você também pode optar por usar as políticas padrão dos bancos de dados de origem e destino. Para mais informações, consulte Política de diferenciação de maiúsculas e minúsculas para nomes de objetos de destino.
Source Objects
Na caixa Source Objects, clique em um objeto para sincronizar e depois clique em
para movê-lo para a caixa Selected Objects.NotaVocê pode selecionar objetos para sincronizar apenas no nível de tabela.
Selected Objects
-
Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto na caixa Selected Objects. Para mais informações sobre renomear objetos, consulte Mapear um único banco de dados, tabela ou coluna.
-
Para alterar os nomes de vários objetos de sincronização na instância de destino em lote, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Mapear bancos de dados, tabelas e colunas em lote.
NotaPara selecionar as operações SQL a serem sincronizadas no nível de banco de dados ou tabela, clique com o botão direito no objeto na caixa Selected Objects e depois selecione as operações SQL desejadas na caixa de diálogo exibida.
Para definir uma cláusula WHERE para filtrar dados, clique com o botão direito na tabela a ser sincronizada na caixa Selected Objects e depois defina a condição de filtro na caixa de diálogo exibida. Para mais informações, consulte Filtrar dados da tarefa usando condições SQL.
-
Clique em Next: Advanced Settings para configurar parâmetros avançados.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS agenda tarefas em um cluster compartilhado, e você não precisa selecionar um cluster. Para um desempenho mais estável, você pode adquirir um cluster dedicado para executar tarefas de sincronização do DTS. Para mais informações, consulte O que é um cluster dedicado do DTS?.
Retry Time for Failed Connections
Após o início de uma tarefa de sincronização, se a conexão com o banco de dados de origem ou destino falhar, o DTS reportará um erro e iniciará imediatamente a tentativa de reconexão. A duração padrão de nova tentativa é de 720 minutos. Você também pode especificar uma duração personalizada de 10 a 1.440 minutos. Recomendamos definir a duração como 30 minutos ou mais. Se o DTS reconectar com sucesso ao banco de dados dentro da duração especificada, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.
Nota-
Se você tiver várias instâncias do DTS (por exemplo, Instância A e Instância B) que compartilham a mesma origem ou destino, e definir o tempo de nova tentativa de rede como 30 minutos para a Instância A e 60 minutos para a Instância B, a duração menor de 30 minutos será usada para ambas.
-
Como o DTS cobra pelo tempo de execução da tarefa durante o período de nova tentativa de conexão, recomendamos personalizar a duração da nova tentativa de acordo com as necessidades do seu negócio ou liberar a instância do DTS o mais rápido possível após a liberação das instâncias de banco de dados de origem e destino.
Retry Time for Other Issues
Após o início da tarefa de sincronização, se ocorrerem outros problemas não relacionados à conectividade com o banco de dados de origem ou destino (como exceções de execução de DDL ou DML), o DTS reportará um erro e iniciará imediatamente operações de nova tentativa contínuas. A duração padrão de nova tentativa é de 10 minutos. Você também pode personalizar a duração dentro do intervalo de 1 a 1.440 minutos. Recomendamos definir como 10 minutos ou mais. Se as operações relevantes forem bem-sucedidas dentro da duração de nova tentativa definida, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.
ImportanteO valor de Retry Time for Other Issues deve ser menor que o de Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Durante a etapa de sincronização completa, o DTS consome recursos de leitura e gravação dos bancos de dados de origem e destino, o que pode aumentar a carga dos bancos de dados. Para reduzir a carga nos bancos de dados de origem e destino, você pode definir um limite de taxa para a tarefa de sincronização completa configurando os parâmetros Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s).
Nota-
Este item de configuração está disponível apenas quando Synchronization Types está definido como Full Data Synchronization.
-
Você também pode ajustar a taxa de sincronização completa após a instância de sincronização estar em execução.
Enable Throttling for Incremental Data Synchronization
Você também pode definir um limite de taxa para a tarefa de sincronização incremental. Para aliviar a pressão no banco de dados de destino, defina RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks
Escolha se deseja gravar informações SQL de heartbeat no banco de dados de origem quando a instância do DTS estiver em execução.
-
Yes: As informações SQL de heartbeat não são gravadas no banco de dados de origem. Isso pode fazer com que a instância do DTS reporte atraso.
-
No: Grava informações SQL de heartbeat no banco de dados de origem. Isso pode interferir em recursos como backup físico e clonagem do banco de dados de origem.
Environment Tag
Selecione uma tag de ambiente para identificar a instância. Este parâmetro é opcional para este exemplo.
Configure ETL
Escolha se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte O que é ETL? Valores válidos:
-
Yes: Ativa o recurso ETL. Insira instruções de processamento de dados no editor de código. Para mais informações, consulte Configurar ETL em uma tarefa de migração ou sincronização de dados.
-
No: Desativa o recurso ETL.
Monitoring and Alerting
Especifique se deseja configurar alertas. Se a sincronização falhar ou a latência exceder o limiar especificado, uma notificação será enviada a um contato de alerta.
-
No: Nenhum alerta é configurado.
-
Yes: Configure alertas definindo um limiar de alerta e especificando um notificação de alerta. Para mais informações, consulte Configurar monitoramento e alertas durante a configuração da tarefa.
-
-
Salve a tarefa e execute uma pré-verificação.
-
Para visualizar os parâmetros da API para configurar esta instância, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters na bolha.
-
Se você terminou de visualizar os parâmetros da API, clique em Next: Save Task Settings and Precheck na parte inferior da página.
Nota-
Antes do início da tarefa de sincronização, o DTS executa uma pré-verificação. A tarefa só pode ser iniciada após todos os itens de pré-verificação serem aprovados.
-
Se a pré-verificação falhar, clique em View Details do item com falha. Corrija o problema conforme indicado e execute a pré-verificação novamente.
-
Se a pré-verificação retornar um aviso:
-
Se um item de verificação falhar e não puder ser ignorado, clique em View Details ao lado do item. Siga as instruções para corrigir o problema e execute a pré-verificação novamente.
-
Para itens de verificação que podem ser ignorados, clique em Confirm Alert Details, Ignore, OK e Precheck Again em sequência para pular o aviso e executar a pré-verificação novamente. Se você optar por ignorar o item de aviso, isso pode causar problemas como inconsistência de dados e representar riscos ao seu negócio.
-
-
Adquira a instância.
-
Quando a Success Rate for 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione o método de faturamento e a especificação de link para a instância de sincronização de dados. A tabela a seguir descreve esses parâmetros em detalhes.
Categoria
Parâmetro
Descrição
New Instance Class
Método de faturamento
-
Assinatura: Você paga ao criar a instância. Adequado para necessidades de longo prazo e mais econômico que o pagamento conforme o uso. Quanto maior a duração da assinatura, maior o desconto.
-
Pagamento conforme o uso: A cobrança é feita por hora. Adequado para necessidades de curto prazo. Você pode liberar a instância imediatamente após o uso para economizar custos.
Configuração do grupo de recursos
O grupo de recursos ao qual a instância pertence. O padrão é o grupo de recursos padrão. Para mais informações, consulte O que é o Resource Management?.
Especificação do link
O DTS fornece especificações de sincronização com diferentes níveis de desempenho. A especificação do link de sincronização afeta a taxa de sincronização. Você pode escolher uma especificação de acordo com o cenário do seu negócio. Para mais informações, consulte Especificações de link de sincronização de dados.
Duração da assinatura
No modo de assinatura, selecione a duração e a quantidade para a instância de assinatura. Você pode escolher uma assinatura mensal de 1 a 9 meses ou uma assinatura anual de 1, 2, 3 ou 5 anos.
NotaEsta opção está disponível apenas quando o método de faturamento é Subscription.
-
-
Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.
-
Clique em Buy and Start. Na caixa de diálogo OK, clique em OK.
Você pode acompanhar o progresso da tarefa na página Data Synchronization.
-
Schema da tabela de log incremental
Execute set odps.sql.allow.fullscan=true; no MaxCompute para permitir varreduras completas de tabela.
O DTS armazena dados incrementais com metadados adicionais ao sincronizar do MySQL para uma tabela de log incremental no MaxCompute.
Neste exemplo, modifytime_year, modifytime_month, modifytime_day, modifytime_hour e modifytime_minute são chaves de partição, especificadas na etapa Configurar objetos da tarefa.
Definição do schema
Campo | Descrição |
record_id | O ID de registro exclusivo para cada entrada de log incremental. Nota
|
operation_flag | O tipo de operação. Os valores válidos são:
|
utc_timestamp | O timestamp da operação do binlog, em UTC. |
before_flag | Especifica se os valores das colunas representam o estado pré-atualização. Valores válidos: Y ou N. |
after_flag | Especifica se os valores das colunas representam o estado pós-atualização. Valores válidos: Y ou N. |
Informações adicionais sobre os campos before_flag e after_flag
Para diferentes tipos de operação, os campos before_flag e after_flag em um log incremental são definidos da seguinte forma:
-
INSERT
Quando o tipo de operação é INSERT, todos os valores das colunas são os valores do registro recém-inserido. Esses são os valores após a atualização. Portanto, o valor de `before_flag` é N e o valor de `after_flag` é Y, conforme mostrado no exemplo a seguir.

-
UPDATE
Quando o tipo de operação é UPDATE, o DTS divide a operação UPDATE em dois registros de log incremental. Esses dois registros de log têm os mesmos valores para `record_id`, `operation_flag` e `utc_timestamp`.
O primeiro registro de log contém os valores antes da atualização, portanto o valor de `before_flag` é Y e o valor de `after_flag` é N. O segundo registro de log contém os valores após a atualização, portanto o valor de `before_flag` é N e o valor de `after_flag` é Y, conforme mostrado no exemplo a seguir.

-
DELETE
Quando o tipo de operação é DELETE, todos os valores das colunas no registro de log incremental são os valores excluídos. Isso significa que os valores das colunas não são alterados. Portanto, o valor de `before_flag` é Y e o valor de `after_flag` é N, conforme mostrado no exemplo a seguir.

Exemplo de mesclagem de dados completos
Após a operação de sincronização de dados, o DTS cria uma tabela de linha de base completa e uma tabela de log incremental para cada tabela no MaxCompute. Você pode usar comandos SQL do MaxCompute para mesclar essas duas tabelas e obter os dados completos em um determinado ponto no tempo.
Este exemplo usa a tabela `customer` (com a seguinte estrutura) para descrever o procedimento.

-
Com base na estrutura da tabela a ser sincronizada no banco de dados de origem, crie uma tabela no MaxCompute para armazenar os resultados mesclados.
Por exemplo, para obter os dados completos da tabela `customer` no timestamp
1565944878, crie a seguinte tabela de dados para facilitar a identificação do negócio:CREATE TABLE `customer_1565944878` ( `id` bigint NULL, `register_time` datetime NULL, `address` string);Nota-
Você pode executar comandos SQL no editor de consultas ad-hoc do MaxCompute.
-
Para mais informações sobre os tipos de dados aceitos pelo MaxCompute, consulte Tipos de dados.
-
-
Execute o seguinte comando SQL no MaxCompute para mesclar a tabela de linha de base completa e a tabela de log incremental e obter os dados completos da tabela em um determinado ponto no tempo.
set odps.sql.allow.fullscan=true; insert overwrite table <result_storage_table> select <col1>, <col2>, <colN> from( select row_number() over(partition by t.<primary_key_column> order by record_id desc, after_flag desc) as row_number, record_id, operation_flag, after_flag, <col1>, <col2>, <colN> from( select incr.record_id, incr.operation_flag, incr.after_flag, incr.<col1>, incr.<col2>,incr.<colN> from <table_log> incr where utc_timestamp< <timestamp> union all select 0 as record_id, 'I' as operation_flag, 'Y' as after_flag, base.<col1>, base.<col2>,base.<colN> from <table_base> base) t) gt where row_number=1 and after_flag='Y'Nota-
<result_storage_table>: O nome da tabela que armazena o conjunto de resultados completo mesclado.
-
<col1>/<col2>/<colN>: Os nomes das colunas na tabela sincronizada.
-
<primary_key_column>: O nome da coluna de chave primária na tabela sincronizada.
-
<table_log>: O nome da tabela de log incremental.
-
<table_base>: O nome da tabela de linha de base completa.
-
<timestamp>: O ponto no tempo para o qual deseja obter os dados completos.
Para mesclar as tabelas de dados e obter os dados completos da tabela `customer` no timestamp
1565944878, use o seguinte exemplo:set odps.sql.allow.fullscan=true; insert overwrite table customer_1565944878 select id, register_time, address from( select row_number() over(partition by t.id order by record_id desc, after_flag desc) as row_number, record_id, operation_flag, after_flag, id, register_time, address from( select incr.record_id, incr.operation_flag, incr.after_flag, incr.id, incr.register_time, incr.address from customer_log incr where utc_timestamp< 1565944878 union all select 0 as record_id, 'I' as operation_flag, 'Y' as after_flag, base.id, base.register_time, base.address from customer_base base) t) gt where gt.row_number= 1 and gt.after_flag= 'Y'; -
-
Após a execução do comando acima, você pode consultar os dados mesclados na tabela `customer_1565944878`.
