Todos os produtos
Search
Central de documentação

DataWorks:Sincronização em tempo real de uma tabela do Hologres para o Kafka

Última atualização: Aug 25, 2026

Use uma tarefa de sincronização ETL em tempo real para transferir dados de fontes como DataHub e Hologres para o Kafka. A tarefa inicializa o tópico do Kafka com base no schema da tabela de origem e mantém a sincronização contínua dos dados para consumo downstream.

Limites

  • A versão da fonte de dados Kafka deve estar entre 0.10.2 e 3.6.0.

  • A fonte de dados Hologres deve ser V2.1 ou superior.

  • Não há suporte para sincronização incremental de dados de tabelas particionadas do Hologres.

  • Mensagens referentes a alterações DDL em tabelas do Hologres não podem ser sincronizadas.

  • É possível sincronizar dados incrementais do Hologres nos seguintes tipos de dados: INTEGER, BIGINT, TEXT, CHAR(n), VARCHAR(n), REAL, JSON, SERIAL, OID, INT4[], INT8[], FLOAT8[], BOOLEAN[], TEXT[] e JSONB.

  • Ative o binary logging na tabela do Hologres no banco de dados de origem. Para mais informações, consulte Subscribe to Hologres binlogs.

Pré-requisitos

Procedimento

1. Selecione um tipo de tarefa de sincronização

  1. Faça login no console do DataWorks. Na região desejada, clique em Data Integration > Data Integration no painel de navegação à esquerda. Escolha um workspace na lista suspensa e clique em Go to Data Integration.

  2. No painel de navegação à esquerda, clique em Sync Tasks. No topo da página, clique em Create synchronization task e configure os parâmetros abaixo.

    • Data Source And Destination: HologresKafka

    • New Task Name: Defina um nome personalizado para a tarefa de sincronização.

    • Synchronization Mode: single-table real-time.

    • Synchronization Mode Step: Selecione full synchronization.

2. Configure a rede e os recursos

  1. Na seção Configure Network Connections and Resource Groups, selecione o Resource Group para a tarefa de sincronização. Opcionalmente, defina o Task Resource Usage em CUs.

  2. Em Source Data Source, escolha uma fonte de dados Hologres. Em Destination data source, selecione uma fonte de dados Kafka. Em seguida, clique em Test Connection.

  3. Após a aprovação dos testes de conectividade das fontes de dados de origem e destino, clique em Next step.

3. Configure o link de sincronização

a. Configure a origem Hologres

No topo da página, clique na fonte de dados Hologres e edite as Holo source information.

image

  1. Na seção Holo source information, selecione o schema e a tabela de origem.

  2. No canto superior direito, clique em Data Sampling.

    Na caixa de diálogo Preview Data Output, especifique os Sampled Data Records e clique em Start Collection. Essa ação amostra e pré-visualiza os dados da tabela do Hologres.

b. Configure o destino Kafka

No topo da página, clique no destino Kafka e edite as Kafka Destination Information.

image

  1. Na seção Kafka Destination Information, selecione o tópico do Kafka onde deseja gravar os dados.

  2. Defina a opção Merge Source Binlog Update Messages conforme necessário. Ao ativar essa opção, as duas mensagens de atualização correspondentes a uma operação de update nos binary logs de origem são mescladas em uma única mensagem antes da gravação no Kafka.

  3. Configure o Output Format, a Key Column e os Kafka Producer Parameters.

    • Output Format: Define o formato de valor dos registros gravados no Kafka. Os formatos válidos são Canal CDC e JSON. Para mais informações, consulte Appendix: Output formats.

    • Key Column: Especifica as colunas de origem cujos valores são serializados em strings e concatenados com vírgulas para formar a chave dos registros gravados no tópico do Kafka.

      Nota
      • As regras de serialização dos valores das colunas seguem o mesmo padrão das regras de serialização JSON para tipos de dados de coluna no Hologres.

      • Os valores de chave no tópico do Kafka determinam as partições de destino da gravação. Dados com o mesmo valor de chave vão para a mesma partição. Para garantir que um consumidor processe os dados do tópico Kafka em ordem, recomenda-se usar as colunas de chave primária da tabela do Hologres como colunas de chave.

      • Caso nenhuma coluna de origem seja definida como coluna de chave, os valores de chave no tópico do Kafka serão nulos. Nesse cenário, os dados são gravados em partições aleatórias do tópico.

    • Kafka Producer Parameters: Esses parâmetros controlam a consistência, a estabilidade e o tratamento de exceções nas operações de escrita. A configuração padrão atende à maioria dos casos de uso. Para detalhes sobre os parâmetros de producer suportados por diferentes versões do Kafka, consulte a documentação oficial do Kafka.

4. Alertas

Para evitar que erros na tarefa causem atrasos na sincronização de dados de negócios, defina uma política de alertas para a tarefa de sincronização.

  1. Clique em Alert Settings no canto superior direito da página para abrir a página de configurações de Alert Rule Configurations for Real-time Synchronization Subnode.

  2. Clique em Add Alert Rule para configurar uma regra de alerta.

    Nota

    As regras de alerta definidas aqui se aplicam às subtarefas de sincronização em tempo real geradas por esta tarefa. Após configurar a tarefa, visualize e modifique as regras de alerta dessas subtarefas na página Run and manage real-time synchronization tasks.

  3. Gerencie as regras de alerta.

    Nas regras existentes, use o botão alternador para ativá-las ou desativá-las. Também é possível direcionar alertas para diferentes destinatários com base no nível de severidade.

5. Configurações avançadas

A tarefa de sincronização oferece diversos parâmetros ajustáveis conforme a necessidade.

Nota

Antes de fazer alterações, certifique-se de compreender totalmente a função de cada parâmetro para evitar erros inesperados ou problemas de qualidade de dados.

  1. Clique em advanced settings no canto superior direito da página para abrir a página de configurações avançadas.

  2. Na página advanced settings, modifique os valores dos parâmetros conforme necessário.

6. Grupo de recursos

Clique em Configure Resource Group no canto superior direito para visualizar e alterar o grupo de recursos atual da tarefa.

7. Execute a tarefa de sincronização

  1. Após concluir todas as configurações, clique em Complete na parte inferior da página.

  2. Na página Data Integration > Synchronization Task, localize a tarefa criada e clique em Start na coluna Operations.

  3. Clique no Name/ID da tarefa correspondente na Task List para acompanhar o processo detalhado de execução.

Execute operações de O&M na tarefa de sincronização

Visualize o status da tarefa de sincronização

Após criar a tarefa de sincronização, acesse a página Tasks para visualizar todas as tarefas de sincronização do workspace e suas informações básicas.

A lista de tarefas exibe as seguintes colunas: Name/ID, Data Source Synchronization Solution (tipo de sincronização, origem e destino), Status, Execution Overview, resource group e Actions.

  • Na coluna Actions, utilize as opções Start ou Stop para iniciar ou parar uma tarefa de sincronização. No menu More, execute outras operações, como Edit e View.

  • Para tarefas iniciadas, acompanhe o status básico de execução no Execution Overview e clique na área de resumo correspondente para ver os detalhes da execução.

Uma tarefa de sincronização em tempo real de uma tabela do Hologres para o Kafka consiste nas três etapas a seguir:

  • Structure Migration: Inclui o método de criação da tabela de destino (tabela existente ou criação automática). Se optar pela criação automática, a instrução de linguagem de definição de dados (DDL) para criar a tabela será exibida.

  • Full initialization: Caso tenha selecionado Full Sync na etapa de sincronização da tarefa, o progresso da inicialização completa aparece aqui.

  • Real-time Data Synchronization: Contém estatísticas sobre a sincronização em tempo real, incluindo tráfego de leitura/gravação em tempo real, dados sujos, failovers e logs de operação.

Reexecute uma tarefa

Em situações especiais, como quando é preciso modificar campos sincronizados ou ajustar informações da tabela de destino, clique em Rerun na coluna Operations da tarefa de sincronização. Essa ação sincroniza os campos ajustados e outras alterações no destino, ignorando tabelas previamente sincronizadas que não sofreram mudanças.

  • Para executar a tarefa novamente sem alterações, clique em Rerun.

  • Se editar a tarefa, clique em Complete após realizar as modificações. A ação da tarefa mudará para Apply Updates. Ao clicar em Apply Updates, a tarefa é reexecutada com a nova configuração.

Apêndice: Descrição dos formatos de saída

Canal CDC

O Canal CDC é um formato de dados CDC definido pelo Alibaba Canal.

  • Campos e significados

    Nome do campo

    Significado do valor do campo

    id

    O valor deste campo é fixo em 0.

    database

    Nome do banco de dados Hologres.

    table

    Nome da tabela do Hologres.

    pkNames

    Coluna de chave primária da tabela do Hologres.

    isDdl

    Indica se os binary logs registram alterações DDL. O valor deste campo é fixo em false, pois não há suporte para sincronização de mensagens de alterações DDL na tabela do Hologres.

    type

    Tipo da alteração DML. Valores válidos: INSERT, UPDATE e DELETE.

    Nota

    Uma única operação de alteração na tabela do Hologres gera dois registros com tipo UPDATE, que serão gravados no tópico do Kafka.

    • Um dos registros corresponde ao conteúdo dos dados antes da alteração.

    • O outro corresponde ao conteúdo dos dados após a alteração.

    • Para sincronizar dados completos da tabela do Hologres para o tópico do Kafka, o valor do campo type é fixo em INSERT.

    es

    Timestamp de 13 dígitos em milissegundos, indicando o momento em que os dados na tabela do Hologres foram alterados.

    Na sincronização de dados completos da tabela do Hologres para o tópico do Kafka, o valor do campo es é fixo em 0.

    ts

    Timestamp de 13 dígitos em milissegundos, indicando o momento em que a tarefa de sincronização leu os binary logs gerados para a tabela do Hologres.

    sql

    Código SQL que registra alterações DDL quando os binary logs gerados para a tabela do Hologres contêm tais alterações. Como não há suporte para sincronização de mensagens de alterações DDL na tabela do Hologres, o valor deste campo é fixo como uma string vazia.

    sqlType

    Tipos de dados de campo SQL aos quais os tipos de dados dos campos da tabela do Hologres correspondem.

    Mapeamentos entre tipos de dados do Hologres e valores válidos de sqlType:

    • bigint: -5

    • decimal com escala diferente de 0: 3

    • decimal com escala igual a 0: -5

    • boolean: 16

    • date: 91

    • float4: 6

    • float8: 8

    • integer: 4

    • smallint: 5

    • json: 12

    • text: 12

    • varchar: 12

    • timestamp: 93

    • timestamptz: 93

    • bigserial: -5

    • bytea: 12

    • char: 12

    • serial: 4

    • time: 92

    • int4[]: 12

    • int8[]: 12

    • float4[]: 12

    • float8[]: 12

    • boolean[]: 12

    • text[]: 12

    mysqlType

    Tipos de dados de campo MySQL aos quais os tipos de dados dos campos da tabela do Hologres correspondem.

    Mapeamentos entre tipos de dados do Hologres e valores válidos de mysqlType:

    • bigint: BIGINT

    • int4: INT

    • decimal com escala diferente de 0: DECIMAL(xx,xx)

    • decimal com escala igual a 0: BIGINT

    • boolean: BOOLEAN

    • date: DATE

    • float4: FLOAT

    • float8: DOUBLE

    • integer: INT

    • smallint: SMALLINT

    • json: TEXT

    • text: TEXT

    • varchar: VARCHAR(xx)

    • timestamp: DATETIME(6)

    • timestamptz: DATETIME(6)

    • bigserial: BIGINT

    • bytea: TEXT

    • char: TEXT

    • serial: INT

    • time: TIME(6)

    • int4[]: TEXT

    • int8[]: TEXT

    • float4[]: TEXT

    • float8[]: TEXT

    • boolean[]: TEXT

    • text[]: TEXT

    data

    Alterações de dados na tabela do Hologres. Os nomes dos campos da tabela do Hologres são usados como chaves, e as alterações de dados nos campos são serializadas em strings e usadas como valores. Em seguida, as chaves e valores são organizados como strings formatadas em JSON. Para mais informações sobre serialização, consulte Description of JSON serialization.

    old

    Uma operação de alteração na tabela do Hologres gera dois registros com tipo UPDATE, que são gravados no tópico do Kafka.

    Esses registros correspondem ao conteúdo dos dados antes e depois da alteração. No primeiro registro, o campo old registra o conteúdo dos dados na tabela do Hologres antes da mudança. O campo data registra o conteúdo dos dados para alterações DML que não sejam UPDATE.

  • Exemplo de dados formatados em Canal JSON correspondentes a alterações de dados geradas por uma operação INSERT nos binary logs da tabela do Hologres

    {
        "id": 0,
        "database": "test",
        "table": "tp_int",
        "pkNames": [
            "id"
        ],
        "isDdl": false,
        "type": "INSERT",
        "es": 1640007049196,
        "ts": 1639633142960,
        "sql": "",
        "sqlType": {
            "bigint": -5,
            "integer": 4,
            "smallint": 5
        },
        "mysqlType": {
            "bigint": "BIGINT",
            "integer": "INT",
            "smallint": "SMALLINT"
        },
        "data": [
            {
                "bigint": "9223372036854775807",
                "integer": "2147483647",
                "smallint": "32767"
            }
        ],
        "old": null
    }
  • Exemplo de dados formatados em Canal JSON correspondentes a dados completos sincronizados da tabela do Hologres

    {
        "id": 0,
        "database": "test",
        "table": "tp_int",
        "pkNames": [
            "id"
        ],
        "isDdl": false,
        "type": "INSERT",
        "es": 0,
        "ts": 1639633142960,
        "sql": "",
        "sqlType": {
            "bigint": -5,
            "integer": 4,
            "smallint": 5
        },
        "mysqlType": {
            "bigint": "BIGINT",
            "integer": "INT",
            "smallint": "SMALLINT"
        },
        "data": [
            {
                "bigint": "9223372036854775807",
                "integer": "2147483647",
                "smallint": "32767"
            }
        ],
        "old": null
    }
  • Exemplo de dois registros de dados formatados em Canal JSON correspondentes a alterações de dados geradas por uma operação UPDATE nos binary logs da tabela do Hologres

    // Data content before a change
    {
        "id": 0,
        "database": "test",
        "table": "tp_int",
        "pkNames": [
            "id"
        ],
        "isDdl": false,
        "type": "UPDATE",
        "es": 1640007049196,
        "ts": 1639633142960,
        "sql": "",
        "sqlType": {
            "bigint": -5,
            "integer": 4,
            "smallint": 5
        },
        "mysqlType": {
            "bigint": "BIGINT",
            "integer": "INT",
            "smallint": "SMALLINT"
        },
        "old": [
            {
                "bigint": "0",
                "integer": "0",
                "smallint": "0"
            }
        ],
        "data": null
    }
    // Data content after a change
    {
        "id": 0,
        "database": "test",
        "table": "tp_int",
        "pkNames": [
            "id"
        ],
        "isDdl": false,
        "type": "UPDATE",
        "es": 1640007049196,
        "ts": 1639633142960,
        "sql": "",
        "sqlType": {
            "bigint": -5,
            "integer": 4,
            "smallint": 5
        },
        "mysqlType": {
            "bigint": "BIGINT",
            "integer": "INT",
            "smallint": "SMALLINT"
        },
        "data": [
            {
                "bigint": "9223372036854775807",
                "integer": "2147483647",
                "smallint": "32767"
            }
        ],
        "old": null
    }
  • Exemplo de dados formatados em Canal JSON correspondentes a alterações de dados geradas por uma operação DELETE nos binary logs da tabela do Hologres

    {
        "id": 0,
        "database": "test",
        "table": "tp_int",
        "pkNames": [
            "id"
        ],
        "isDdl": false,
        "type": "DELETE",
        "es": 1640007049196,
        "ts": 1639633142960,
        "sql": "",
        "sqlType": {
            "bigint": -5,
            "integer": 4,
            "smallint": 5
        },
        "mysqlType": {
            "bigint": "BIGINT",
            "integer": "INT",
            "smallint": "SMALLINT"
        },
        "data": [
            {
                "bigint": "9223372036854775807",
                "integer": "2147483647",
                "smallint": "32767"
            }
        ],
        "old": null
    }

Json

O formato JSON utiliza os nomes dos campos dos binary logs do Hologres como chaves e serializa os valores dos campos em strings. Os pares chave-valor resultantes são gravados no tópico do Kafka como strings formatadas em JSON.

Descrição da serialização JSON

Serialização de tipos de dados do Hologres

Tipo de dado do Hologres

Resultado da serialização gravado no Kafka

bit

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

inet

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

interval

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

money

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

oid

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

timetz

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

uuid

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

varbit

Sem suporte. O sistema reporta um erro ao iniciar a tarefa de sincronização.

jsonb

Sem suporte. O sistema reporta um erro indicando falha na análise dos binary logs após a gravação dos dados no Kafka.

bigint

String numérica. Exemplo: 2.

decimal(38,18)

String numérica com casas decimais equivalentes à precisão. Exemplo: 1,234560000000000000.

decimal(38,0)

String numérica com casas decimais equivalentes à precisão. Exemplo: 2.

boolean

"true"/"false".

date

String de data no formato yyyy-MM-dd. Exemplo: 2024-02-02.

float4/float8/double

String numérica. O sistema não adiciona 0 ao resultado da serialização, garantindo consistência com os dados consultados na tabela do Hologres. Exemplo: 1,24.

interger/smallint

String numérica. Exemplo: 2.

json

String JSON. Exemplo: {\"a\":2}.

text/varchar

String codificada em UTF-8. Exemplo: text.

timestamp

String de tempo com precisão de microssegundos

  • Se as partes de milissegundos e microssegundos forem 0, ambas são omitidas automaticamente durante a gravação no Kafka.

    • Por exemplo, a string de tempo 2020-01-01 09:01:01.000000 torna-se 2020-01-01 09:01:01 após a gravação no Kafka.

  • Se a parte de microssegundos for 0, os zeros após os milissegundos serão omitidos durante a gravação. Por exemplo:

    • A string de tempo 2020-01-01 09:01:01.123000 torna-se 2020-01-01 09:01:01.123 após a gravação no Kafka.

  • Se a parte de microssegundos não for 0, o sistema adiciona automaticamente três zeros após essa parte durante a gravação no Kafka.

    • Por exemplo, a string de tempo 2020-01-01 09:01:01.123457 torna-se 2020-01-01 09:01:01.123457000 após a gravação no Kafka.

timestamp with time zone

String de tempo com precisão de milissegundos. Exemplo: 2020-01-01 09:01:01.123.

  • Se a parte de milissegundos for 0, ela é omitida automaticamente durante a gravação no Kafka.

    • Por exemplo, a string de tempo 2020-01-01 09:01:01.000 torna-se 2020-01-01 09:01:01 após a gravação no Kafka.

bigserial

String numérica. Exemplo: 2.

bytea

String codificada em Base64. Exemplo: ASDB==.

char

String de comprimento fixo. Exemplo: char.

serial

String numérica. Exemplo: 2

time

String de tempo com precisão de microssegundos.

  • Se as partes de milissegundos e microssegundos forem 0, ambas são omitidas automaticamente durante a gravação no Kafka:

    • Por exemplo, a string de tempo 2020-01-01 09:01:01.000000 torna-se 2020-01-01 09:01:01 após a gravação no Kafka.

  • Se a parte de milissegundos ou microssegundos não for 0, o sistema adiciona 0 para a parte de nanossegundos após os microssegundos:

    • Por exemplo, a string de tempo 2020-01-01 09:01:01.123457 torna-se 2020-01-01 09:01:01.123457000 após a gravação no Kafka.

int4[]/int8[]

Array de strings. Exemplo: ["1","2","3","4"].

float4[]/float8[]

Array de strings. Exemplo: ["1,23","2,34"].

boolean[]

Array de strings. Exemplo: ["true","false"].

text[]

Array de strings. Exemplo: ["a","b"].

Nota

Se os valores dos campos de tempo serializados estiverem fora do intervalo [0001-01-01,9999-12-31], o resultado da serialização diferirá do resultado da consulta no Hologres.

Descrição dos campos de metadados

Nota
  • Uma operação INSERT, UPDATE ou DELETE registrada nos binary logs da tabela do Hologres gera dois registros formatados em JSON, assim como ocorre no formato Canal CDC. Esses registros serão sincronizados com o tópico do Kafka relacionado. Um dos registros corresponde ao conteúdo dos dados antes da alteração, e o outro ao conteúdo após a alteração.

  • No formato JSON, selecione a opção Whether to output source binlog metadata.. Se marcada, o sistema adiciona vários campos de metadados ao objeto JSON, descrevendo as propriedades do registro de alteração dos binary logs do Hologres.

Nome do campo

Significado do valor do campo

_sequence_id_

Identificador único dos registros nos binary logs da tabela do Hologres. Na sincronização completa, o valor deste campo é preenchido como null.

_operation_type_

Tipo da alteração DML. Valores válidos: "I", "U" e "D", indicando operações INSERT, UPDATE e DELETE. Na sincronização completa, o valor deste campo é preenchido como "I".

_execute_time_

Timestamp de 13 dígitos em milissegundos.

  • Indica o momento em que os dados na tabela do Hologres foram alterados.

  • Na sincronização completa, o valor deste campo é preenchido como 0.

_before_image_

  • Indica se os dados da mensagem de sincronização incremental correspondem ao conteúdo antes da alteração. Valores válidos: Y e N, indicando sim e não.

  • Na sincronização completa, o valor deste campo é preenchido como N.

  • Se o tipo de mensagem da alteração for INSERT, o valor deste campo é preenchido como N.

  • Se o tipo de mensagem da alteração for UPDATE, dois registros são gravados no Kafka. O valor deste campo em um dos registros é preenchido como Y, e no outro como N.

  • Se o tipo de mensagem da alteração for DELETE, o valor deste campo é preenchido como Y.

_after_image_

  • Indica se os dados da mensagem de sincronização incremental correspondem ao conteúdo após a alteração. Valores válidos: Y e N, indicando sim e não.

  • Na sincronização completa, o valor deste campo é preenchido como Y.

  • Se o tipo de mensagem da alteração for INSERT, o valor deste campo é preenchido como Y.

  • Se o tipo de mensagem da alteração for UPDATE, dois registros são gravados no Kafka. O valor deste campo em um dos registros é preenchido como Y, e no outro como N.

  • Se o tipo de mensagem da alteração for DELETE, o valor deste campo é preenchido como N.