Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados PolarDB

Última atualização: Aug 25, 2026

A fonte de dados PolarDB permite ler e gravar dados no PolarDB. É possível configure uma tarefa de sincronização usando a interface visual sem código ou o modo de script.

Limitações

Leitura e gravação em lote

É possível ler dados de views.

Leitura em tempo real

Ao utilizar um cluster do PolarDB for MySQL como source, é obrigatório ative o binary log. O PolarDB for MySQL é um banco de dados cloud-native totalmente compatível com o MySQL. Por padrão, ele utiliza logs físicos de alto nível em vez do binary log. Para garantir melhor integração com o ecossistema MySQL, o PolarDB permite ative o binary log.

Tipos de dados suportados

Leitura em lote

A tabela a seguir apresenta os mapeamentos de tipos de dados para o PolarDB Reader.

Categoria

Tipo de dados PolarDB

Inteiro

INT, TINYINT, SMALLINT, MEDIUMINT e BIGINT

Ponto flutuante

FLOAT, DOUBLE e DECIMAL

String

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT

Data e hora

DATE, DATETIME, TIMESTAMP, TIME e YEAR

Booleano

BIT e BOOL

Binário

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB e VARBINARY

Nota
  • Tipos de dados não listados na tabela não são suportados.

  • O plug-in PolarDB Reader trata TINYINT(1) como um número inteiro.

Gravação em lote

Assim como o PolarDB Reader, o PolarDB Writer suporta a maioria dos tipos de dados do PolarDB, mas não todos. Verifique se os seus tipos de dados são compatíveis.

A tabela abaixo detalha os mapeamentos de tipos de dados para o PolarDB Writer.

Categoria

Tipo de dados PolarDB

Inteiro

INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT e YEAR

Ponto flutuante

FLOAT, DOUBLE e DECIMAL

String

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT

Data e hora

DATE, DATETIME, TIMESTAMP e TIME

Booleano

BOOL

Binário

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB e VARBINARY

Pré-requisitos

configure uma lista de permissões de endereços IP

Adicione o bloco CIDR da VPC que contém seu Serverless resource group ou Grupo de Recursos Exclusivos para Data Integration à lista de permissões de endereços IP do seu cluster PolarDB. Para mais informações, consulte Set a cluster whitelist.

crie uma conta e conceder permissões

crie uma conta e conceda as permissões necessárias.

crie uma conta de banco de dados para sincronização de dados. A conta deve ter as permissões SELECT, REPLICATION SLAVE, REPLICATION CLIENT no banco de dados.

  1. crie uma conta.

    Para mais informações, consulte Create and manage a database account.

  2. Conceda permissões.

    execute o comando a seguir para conceder as permissões necessárias à conta. Alternativamente, você pode conceder a permissão SUPER.

    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';

Ativar binary logging

Para mais informações, consulte Enable binary logging.

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária ao DataWorks seguindo as instruções em Data source configuration. Você pode visualize as descrições dos parâmetros no console do DataWorks para entender o significado de cada parâmetro ao adicionar uma fonte de dados.

configure uma tarefa de sincronização

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias de configuração a seguir.

configure uma tarefa em lote de tabela única

configure sincronização em tempo real para uma tabela ou banco de dados

Para mais informações, consulte Configure a real-time synchronization task (legacy).

configure leitura em lote de banco de dados completo e sincronização incremental em tempo real

Para mais informações, consulte Configure a real-time full-database synchronization task.

Perguntas frequentes

Why are errors repeatedly reported when a real-time synchronization task runs to synchronize data from Oracle, PolarDB, or MySQL?

Apêndice: Exemplo de script e parâmetros

configure uma tarefa de sincronização em lote usando o editor de código

Para configure uma tarefa de sincronização em lote através do editor de código, defina os parâmetros relevantes no script conforme os requisitos unificados de formato de script. Para mais detalhes, consulte Script mode configuration. As informações a seguir descrevem os parâmetros obrigatórios para fontes de dados ao configure uma tarefa de sincronização em lote via editor de código.

Exemplo de script do Reader

O código abaixo fornece um exemplo de script para leitura de dados de uma única tabela em um banco de dados. Para detalhes sobre os parâmetros, consulte a seção de descrição de parâmetros.

{
    "type": "job",
    "steps": [
        {
            "parameter": {
                "datasource": "test_005",                // The name of the data source.
                "column": [                              // The source column names.
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "where": "id=1001",                      // The filter condition.
                "splitPk": "id",                         // The sharding key.
                "table": "PolarDB_person",               // The source table name.
              	"useReadonly": "false"                   // Specifies whether to read data from a secondary database.
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {}
    ],
    "version": "2.0",                                // The version number.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {                              // The error tolerance.
            "record": ""
        },
        "speed": {
            "concurrent": 6,                         // The concurrency level.
            "throttle": true,                        // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
      "mbps":"12"                              // The throttling rate, in MB/s.
        }
    }
}

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Padrão

datasource

Nome da fonte de dados. No modo de script, o valor deste parâmetro deve ser idêntico ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela de origem de onde os dados serão sincronizados.

Sim

Nenhum

useReadonly

Define se os dados devem ser lidos de um banco de dados secundário. Se definido como true, a leitura ocorre no banco secundário. Se omitido, o valor padrão false é aplicado, lendo os dados do banco primário.

Não

false

column

Colunas da tabela de origem a serem sincronizadas. O valor deve ser um array JSON. Este parâmetro é obrigatório e não pode estar vazio. Exemplo: ["*"].

  • É possível selecione um subconjunto de colunas para exportação.

  • A ordem das colunas exportadas pode ser alterada independentemente do esquema da tabela.

  • Constantes são permitidas, desde que sigam a sintaxe SQL. Exemplo: ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2,3","true"].

    • id: nome de uma coluna comum.

    • table: nome de coluna que também é uma palavra-chave reservada.

    • 1: constante inteira.

    • 'mingya.wmy': constante string. Note que constantes string devem estar entre aspas simples.

    • 'null': constante string.

    • to_char(a+1): função para calcular o comprimento de uma string.

    • 2,3: número de ponto flutuante.

    • true: valor booleano.

  • O parâmetro column é obrigatório e não pode estar vazio. especifique as colunas que deseja sincronizar.

Sim

Nenhum

splitPk

Chave de fragmentação. Permite especifique uma coluna no parâmetro splitPk para fragmentar os dados, habilitando processamento concorrente e aumentando a eficiência da sincronização.

  • Recomenda-se usar a chave primária da tabela como valor do parâmetro splitPk. Chaves primárias geralmente têm distribuição uniforme, evitando hotspots de dados nos shards criados.

  • O parâmetro splitPk suporta apenas fragmentação baseada em inteiros. Strings, pontos flutuantes, datas e outros tipos não são suportados. Caso especifique uma coluna com tipo incompatível, a fragmentação será desativada e a sincronização ocorrerá em thread única.

  • Se o parâmetro splitPk não for especificado ou for definido como null, a sincronização usará apenas uma thread.

Não

Nenhum

splitFactor

Fator de fragmentação. Define a quantidade de shards. Ao configure um nível de concorrência, os dados são divididos em concurrency × splitFactor shards. Por exemplo, se a concorrência for 5 e splitFactor for 5, os dados serão divididos em 25 shards processados por 5 threads concorrentes.

Nota

Recomenda-se defina este parâmetro entre 1 e 100. Valores excessivamente altos podem causar erros de falta de memória (OOM).

Não

5

where

Condição de filtro. Por exemplo, para sincronizar apenas os dados do dia atual, defina o parâmetro where como gmt_create>$bizdate.

  • A condição where permite realizar sincronizações incrementais de forma eficiente. Sem essa cláusula, todos os dados serão sincronizados.

  • Evite usar LIMIT 10 como condição where, pois isso viola as restrições de uma cláusula WHERE.

Não

Nenhum

querySql (Modo avançado, indisponível na interface visual)

Em certos cenários, o parâmetro where não basta para descrever as condições de filtragem. Use este parâmetro para definir uma consulta SQL personalizada. Quando configurado, o sistema ignora os parâmetros column, table e where, utilizando diretamente o conteúdo deste parâmetro para filtrar os dados. Por exemplo, para sincronizar dados após um join de múltiplas tabelas, use select a,b from table_a join table_b on table_a.id = table_b.id. Ao configure querySql, o PolarDB Reader ignora automaticamente os parâmetros column, table e where. O parâmetro querySql tem prioridade sobre table, column, where e splitPk. O datasource é usado para interpretar informações como usuário e senha.

Não

Nenhum

Exemplo de script do Writer

O código a seguir apresenta um exemplo de configuração de script. Para mais detalhes sobre os parâmetros, consulte a seção de descrição de parâmetros.

{
    "type": "job",
    "steps": [
        {
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {
                "postSql": [],                        // The SQL statement to be executed after the synchronization task is complete.
                "datasource": "test_005",             // The name of the data source.
                "column": [                           // The destination column names.
                    "id",
                    "name",
                    "age",
                    "sex",
                    "salary",
                    "interest"
                ],
                "writeMode": "insert",                // The write mode.
                "batchSize": 256,                     // The number of records to submit in each batch.
                "table": "PolarDB_person_copy",       // The destination table name.
                "preSql": []                          // The SQL statement to be executed before the synchronization task starts.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",                             // The version number.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {                           // The error tolerance.
            "record": ""
        },
        "speed": {
            "throttle":true,                      // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
            "concurrent":6,                       // The concurrency level.
            "mbps":"12"                           // The throttling rate, in MB/s.
        }
    }
}

Parâmetros do script do Writer

  • Todos os parâmetros

    Parâmetro

    Descrição

    Obrigatório

    Padrão

    datasource

    Nome da fonte de dados. No modo de script, o valor deve corresponder exatamente ao nome da fonte de dados adicionada.

    Sim

    Nenhum

    table

    Nome da tabela de destino onde os dados serão gravados.

    Sim

    Nenhum

    writeMode

    Modo de gravação. Valores válidos:

    • insert: corresponde a INSERT INTO na interface visual.

    • update: corresponde a ON DUPLICATE KEY UPDATE na interface visual.

    • replace: corresponde a REPLACE INTO na interface visual.

    Para mais informações sobre os modos e exemplos, consulte a seção Detalhes do parâmetro writeMode abaixo.

    Nota

    Para o PolarDB for PostgreSQL, apenas o modo insert é suportado. Para atualize dados e evitar conflitos de chave primária, remova os dados duplicados antes de execute a tarefa de sincronização em lote. Os métodos recomendados são:

    • Método 1: No parâmetro preSql (que corresponde a Pre-Import Statement na interface visual), configure uma instrução TRUNCATE para limpar a tabela de destino.

    • Método 2: Processe a tabela de destino em um nó upstream para prevenir conflitos de chave primária durante a sincronização.

    Não

    insert

    column

    Colunas de destino nas quais os dados serão gravados. Separe as colunas por vírgulas (,). Exemplo: "column": ["id", "name", "age"]. Para gravar em todas as colunas sequencialmente, utilize um asterisco (). Exemplo: "column": [""].

    Sim

    Nenhum

    preSql

    Especifica instruções SQL a serem executadas antes do início da tarefa. A interface visual aceita apenas uma instrução, enquanto o modo de script suporta múltiplas, como comandos para limpar dados existentes.

    Não

    Nenhum

    postSql

    Define instruções SQL para execução após a conclusão da tarefa. A interface visual permite apenas uma instrução; já o modo de script aceita várias, como a inserção de timestamps.

    Não

    Nenhum

    batchSize

    Quantidade de registros enviados por lote. Valores maiores aumentam o throughput ao reduzir interações de rede com o PolarDB, mas valores excessivos podem provocar erros de falta de memória (OOM).

    Não

    1024

    updateColumn

    Colunas a serem atualizadas quando houver conflito de chave primária ou índice único. Este parâmetro só é válido quando writeMode está definido como update. Múltiplas colunas podem ser especificadas, separadas por vírgulas. Exemplo: "updateColumn": ["name", "age"].

    Nota

    Este parâmetro é suportado apenas no PolarDB for MySQL.

    Não

    Nenhum

  • Detalhes do parâmetro writeMode

    Comparação

    insert (corresponde a INSERT INTO na interface visual)

    update (corresponde a ON DUPLICATE KEY UPDATE na interface visual)

    replace (corresponde a REPLACE INTO na interface visual)

    Estratégia de tratamento de conflitos

    Se ocorrer conflito de chave primária ou índice único, a linha conflitante não é gravada na tabela de destino e é tratada como dado sujo.

    Sem conflitos de chave primária ou índice único, funciona igual ao modo INSERT INTO. Em caso de conflito, a nova linha atualiza apenas os campos especificados da linha existente.

    Na ausência de conflitos de chave primária ou índice único, comporta-se como o modo INSERT INTO. Havendo conflito, a linha existente é excluída e a nova é inserida, substituindo efetivamente todos os seus campos.

    Exemplo de dados

    • Tabela de origem

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Tabela de destino original

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Após a execução da tarefa, uma linha é gravada na tabela de destino e outra é registrada como dado sujo.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Cenário 1: A tarefa está configurada para sincronizar apenas algumas colunas: "column": ["id","name"]

      • Tabela de origem

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Tabela de destino original

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Após a execução da tarefa, duas linhas são gravadas na tabela de destino e nenhum dado sujo é registrado.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    | 3   |
        +----+---------+-----+
    • Cenário 2: A tarefa está configurada para sincronizar todas as colunas: "column": ["id","name","age"]

      • Tabela de origem

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
      • Tabela de destino original

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Após a execução da tarefa, duas linhas são gravadas na tabela de destino e nenhum dado sujo é registrado.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
    • Tabela de origem

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+
    • Tabela de destino original

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |  3  |
      +----+---------+-----+
    • Após a execução da tarefa, duas linhas são gravadas na tabela de destino e nenhum dado sujo é registrado.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | lisi    |     |
      +----+---------+-----+