Todos os produtos
Search
Central de documentação

Data Transmission Service:Sincronizar PolarDB-X 2.0 com MaxCompute

Última atualização: Oct 13, 2026

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

Limitações

Nota

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

  • As tabelas sincronizadas devem ter uma chave primária ou uma restrição única. Caso contrário, podem ocorrer dados duplicados no banco de dados de destino.

  • O DTS não aceita instâncias somente leitura do PolarDB-X 2.0 Enterprise Edition como banco de dados de origem.

  • Se você sincronizar tabelas individualmente e realizar edições, como mapeamento de nomes de colunas, uma única tarefa de sincronização de dados aceita no máximo 5.000 tabelas. Para sincronizar mais de 5.000 tabelas, divida-as em várias tarefas ou configure a tarefa para sincronizar o banco de dados inteiro. Caso contrário, pode ocorrer um erro de requisição após o envio da tarefa.

  • Requisitos de binary log:

    • Você deve ativar o recurso de binary log no console do PolarDB-X 2.0 e definir o parâmetro binlog_row_image como full. Para mais informações, consulte Configurações de parâmetros. Caso contrário, a pré-verificação falha e a tarefa de sincronização de dados não pode ser iniciada.

    • Para sincronização incremental de dados, você deve reter os binary logs do banco de dados de origem por mais de 24 horas. Para tarefas que combinam sincronização completa e incremental, o período de retenção deve ser de pelo menos 7 dias. Após a conclusão da sincronização completa, você pode reduzir o período de retenção para 24 horas. O SLA do DTS não cobre problemas causados por período de retenção de binary log insuficiente.

  • Se o nome de uma tabela na instância PolarDB-X 2.0 de origem contiver letras maiúsculas, o DTS aceitará apenas a sincronização de schema para essa tabela.

  • O DTS não aceita a sincronização de grupos de tabelas (TABLEGROUP) nem de bancos de dados e tabelas que possuem o atributo Locality.

  • O DTS não aceita a sincronização de tabelas cujos nomes são palavras-chave reservadas, como select.

  • O DTS não pode sincronizar partições de bancos de dados no modo DRDS em uma instância PolarDB-X 2.0.

  • Não execute operações DDL que alterem schemas de banco de dados ou tabelas durante a sincronização de schema ou a sincronização completa. Caso contrário, a tarefa de sincronização falhará.

    Nota

    Durante a sincronização completa, o DTS consulta o banco de dados de origem. Isso cria bloqueios de metadados que podem impedir operações DDL no banco de dados de origem.

  • Durante a execução de uma tarefa de sincronização do DTS, não é compatível a alteração do tipo de uma tabela broadcast na instância PolarDB-X 2.0 de origem (por exemplo, alterar uma tabela broadcast para uma tabela regular ou uma tabela fragmentada). Para alterar o tipo da tabela, pare primeiro a tarefa de sincronização e depois reconfigure a tarefa após a conclusão da alteração.

Outros limites

  • O DTS aceita apenas sincronização de dados no nível de tabela.

  • Avalie o desempenho dos bancos de dados de origem e destino antes de iniciar a sincronização de dados. Realize a sincronização em horários de baixa demanda, pois a sincronização completa inicial consome recursos significativos e aumenta a carga do banco de dados.

  • A sincronização completa inicial executa operações INSERT simultâneas, o que pode causar fragmentação de tabelas no banco de dados de destino. Consequentemente, a instância de destino pode ocupar mais espaço de tabela do que a instância de origem após a sincronização.

  • Não use ferramentas como pt-online-schema-change para realizar operações DDL online nos objetos sendo sincronizados no banco de dados de origem. Caso contrário, a tarefa de sincronização falhará.

  • Durante a sincronização de dados, certifique-se de que apenas o DTS grave dados no banco de dados de destino. Gravar dados de outras fontes pode causar inconsistência entre os bancos de dados de origem e destino. Por exemplo, se você usar o DMS para realizar alterações DDL online, pode ocorrer perda de dados no banco de dados de destino.

  • O MaxCompute não aceita restrições PRIMARY KEY. Se o DTS retransmitir dados devido a problemas de rede, pode gravar registros duplicados no projeto MaxCompute.

  • Se uma tarefa falhar, a equipe de suporte do DTS tentará restaurá-la em até oito horas. Durante a restauração, podem reiniciar a tarefa ou ajustar seus parâmetros.

    Nota

    Apenas os parâmetros da tarefa do DTS são modificados — não os parâmetros do banco de dados. Os parâmetros que podem ser ajustados incluem os listados em Modificar parâmetros da instância.

Precauções

O DTS atualiza periodicamente a tabela dts_health_check.ha_health_check no banco de dados de origem para avançar a posição do binlog.

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 ALTER TABLE ... ADD COLUMN column_name data_type. Não é possível sincronizar operações de adição de coluna que incluam os seguintes atributos ou cláusulas:

  • Nullability: NULL / NOT NULL

  • Valor padrão: DEFAULT

  • Auto-incremento: AUTO_INCREMENT

  • Comentário: COMMENT

  • Conjunto de caracteres e collation: CHARACTER SET, COLLATE

  • Coluna gerada: AS (expressão) [VIRTUAL|STORED]

  • Restrição no nível de coluna: PRIMARY KEY, UNIQUE, REFERENCES

  • Posição da coluna: FIRST, AFTER

Procedimento

  1. 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

    1. Faça login no console do Data Transmission Service (DTS).

    2. No painel de navegação à esquerda, clique em Data Synchronization.

    3. No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.

    Pelo console do DMS

    Nota

    As 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.

    1. Faça login no Data Management (DMS).

    2. Na barra de menu superior, escolha Data + AI > Data Transmission (DTS) > Data Synchronization.

    3. À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.

  2. Clique em Create Task para abrir a página de configuração da tarefa.

  3. 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.

      Nota

      No 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.

    Nota

    Para 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.

      Nota

      No 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

  4. 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.

  5. Clique em OK para autorizar a conta do MaxCompute.

  6. Configure os objetos da tarefa.

    1. 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.

        Nota

        Se 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.

        Aviso

        Selecionar 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.

      Aviso

      Verifique 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 a direita para movê-lo para a caixa Selected Objects.

      Nota

      Você 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.

      Nota
      • Para 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.

    2. 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á.

      Importante

      O 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:

      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.

  7. 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.

  8. Adquira a instância.

    1. Quando a Success Rate for 100%, clique em Next: Purchase Instance.

    2. 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.

      Nota

      Esta opção está disponível apenas quando o método de faturamento é Subscription.

    3. Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.

    4. 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

Nota

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.

Nota

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
  • O ID é único e incremental.

  • Se o tipo de operação for UPDATE, a atualização é dividida em dois registros: um para o estado pré-atualização e outro para o estado pós-atualização. Ambos os registros compartilham o mesmo record_id.

operation_flag

O tipo de operação. Os valores válidos são:

  • I: operação INSERT.

  • D: operação DELETE.

  • U: operação UPDATE.

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.

    Exemplo de operação INSERT

  • 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.

    Exemplo de operação UPDATE

  • 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 operação DELETE

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.

Estrutura da tabela customer

  1. 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
  2. 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';
  3. Após a execução do comando acima, você pode consultar os dados mesclados na tabela `customer_1565944878`.

    Consultar os dados mesclados