Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos PolarDB

Última actualización: Sep 04, 2026

El origen de datos PolarDB permite leer y escribir datos en PolarDB. Puede configurar una tarea de sincronización mediante la interfaz sin código o el modo script.

Limitaciones

Lectura y escritura por lotes

Es posible leer datos desde vistas.

Lectura en tiempo real

Si utiliza un clúster de PolarDB for MySQL como origen, debe habilitar el registro binario. PolarDB for MySQL es una base de datos nativa de la nube totalmente compatible con MySQL. De forma predeterminada, PolarDB for MySQL utiliza registros físicos de alto nivel en lugar del registro binario. Para una mejor integración con el ecosistema de MySQL, PolarDB permite habilitar el registro binario.

Tipos de datos compatibles

Lectura por lotes

La siguiente tabla muestra las asignaciones de tipos de datos para PolarDB Reader.

Categoría

Tipo de datos de PolarDB

Entero

INT, TINYINT, SMALLINT, MEDIUMINT y BIGINT

Punto flotante

FLOAT, DOUBLE y DECIMAL

Cadena

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT

Fecha y hora

DATE, DATETIME, TIMESTAMP, TIME y YEAR

Booleano

BIT y BOOL

Binario

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB y VARBINARY

Nota
  • Los tipos de datos que no aparecen en la tabla no son compatibles.

  • El complemento PolarDB Reader trata TINYINT(1) como un entero.

Escritura por lotes

Al igual que PolarDB Reader, PolarDB Writer admite la mayoría de los tipos de datos de PolarDB, pero no todos. Asegúrese de que sus tipos de datos sean compatibles.

La siguiente tabla muestra las asignaciones de tipos de datos para PolarDB Writer.

Categoría

Tipo de datos de PolarDB

Entero

INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT y YEAR

Punto flotante

FLOAT, DOUBLE y DECIMAL

Cadena

VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT

Fecha y hora

DATE, DATETIME, TIMESTAMP y TIME

Booleano

BOOL

Binario

TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB y VARBINARY

Requisitos previos

Configurar una lista de permitidos de direcciones IP

Agregue el bloque CIDR de la VPC que contiene su Serverless resource group o Exclusive Resource Group for Data Integration a la lista de permitidos de direcciones IP de su clúster de PolarDB. Para obtener más información, consulte Set a cluster whitelist.

Crear una cuenta y otorgar permisos

Cree una cuenta y otórguele los permisos necesarios.

Cree una cuenta de base de datos para la sincronización de datos. La cuenta debe tener los permisos SELECT, REPLICATION SLAVE, REPLICATION CLIENT sobre la base de datos.

  1. Cree una cuenta.

    Para obtener más información, consulte Create and manage a database account.

  2. Otorgue permisos.

    Ejecute el siguiente comando para otorgar los permisos necesarios a la cuenta. Alternativamente, puede otorgar el permiso SUPER.

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

Habilitar el registro binario

Para obtener más información, consulte Enable binary logging.

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, debe agregar el origen de datos necesario a DataWorks siguiendo las instrucciones en Data source configuration. Puede consultar las descripciones de parámetros en la consola de DataWorks para comprender el significado de los parámetros al agregar un origen de datos.

Configurar una tarea de sincronización

Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las siguientes guías de configuración.

Configurar una tarea por lotes de tabla única

Configurar la sincronización en tiempo real para una tabla o base de datos

Para obtener más información, consulte Configure a real-time synchronization task (legacy).

Configurar la lectura por lotes de base de datos completa y la sincronización incremental en tiempo real

Para obtener más información, consulte Configure a real-time full-database synchronization task.

Preguntas frecuentes

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

Apéndice: Demostración de script y parámetros

Configurar una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, debe configurar los parámetros relacionados en el script según los requisitos unificados de formato de script. Para obtener más información, consulte Script mode configuration. La siguiente información describe los parámetros que debe configurar para los orígenes de datos cuando configura una tarea de sincronización por lotes mediante el editor de código.

Demostración de script de Reader

El siguiente código proporciona un ejemplo de script para leer datos de una sola tabla en una base de datos. Para obtener más información sobre los parámetros, consulte la sección de descripción 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 del script de Reader

Parámetro

Descripción

Obligatorio

Predeterminado

datasource

El nombre del origen de datos. En modo script, el valor de este parámetro debe coincidir con el nombre del origen de datos agregado.

Sí

Ninguna

table

El nombre de la tabla de origen desde la cual desea sincronizar datos.

Sí

Ninguna

useReadonly

Especifica si se deben leer datos de una base de datos secundaria. Si establece este parámetro en true, los datos se leen de la base de datos secundaria. Si omite este parámetro, se utiliza el valor predeterminado false y los datos se leen de la base de datos principal.

No

false

column

Las columnas de la tabla de origen que desea sincronizar. El valor debe ser una matriz JSON. Este parámetro es obligatorio y no puede estar vacío. Ejemplo: ["*"].

  • Puede seleccionar un subconjunto de columnas para exportar.

  • Puede reordenar las columnas que se van a exportar independientemente del esquema de la tabla.

  • Puede utilizar constantes. Debe seguir la sintaxis SQL. Ejemplo: ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"].

    • id: un nombre de columna estándar.

    • table: un nombre de columna que también es una palabra clave reservada.

    • 1: una constante entera.

    • 'mingya.wmy': una constante de cadena. Tenga en cuenta que la constante de cadena debe ir entre comillas simples.

    • 'null': una constante de cadena.

    • to_char(a+1): una función que calcula la longitud de una cadena.

    • 2.3: un número de punto flotante.

    • true: un valor booleano.

  • El parámetro column es obligatorio y no puede estar vacío. Debe especificar las columnas que desea sincronizar.

Sí

Ninguna

splitPk

La clave de fragmentación. Puede especificar una columna para el parámetro splitPk con el fin de fragmentar los datos, lo que permite el procesamiento simultáneo y mejora la eficiencia de la sincronización de datos.

  • Se recomienda utilizar la clave principal de la tabla como valor del parámetro splitPk. Una clave principal suele estar distribuida uniformemente, lo que evita puntos críticos de datos en los shards creados.

  • El parámetro splitPk solo admite la fragmentación de datos basada en enteros. No se admiten cadenas, puntos flotantes, fechas ni otros tipos de datos. Si especifica una columna de un tipo de datos no compatible, la fragmentación de datos se deshabilita y los datos se sincronizan en un solo hilo.

  • Si no especifica el parámetro splitPk o lo establece en null, se utiliza un solo hilo para la sincronización de datos.

No

Ninguna

splitFactor

El factor de fragmentación. Este parámetro especifica el número de shards. Si configura un nivel de concurrencia, los datos se fragmentan en concurrencia × splitFactor shards. Por ejemplo, si la concurrencia es 5 y splitFactor es 5, los datos se dividen en 25 shards y se procesan mediante 5 hilos concurrentes.

Nota

Se recomienda establecer este parámetro en un valor entre 1 y 100. Un valor excesivamente grande puede provocar un error de falta de memoria (OOM).

No

5

where

La condición de filtro. Por ejemplo, para sincronizar solo los datos del día actual, establezca el parámetro where en gmt_create>$bizdate.

  • La condición where permite realizar eficazmente una sincronización incremental. Si no especifica una cláusula where, se sincronizan todos los datos.

  • Se recomienda no especificar LIMIT 10 como condición where, ya que esto no cumple con las restricciones de una cláusula WHERE.

No

Ninguna

querySql (Modo avanzado, no disponible en la interfaz sin código)

En algunos escenarios, el parámetro where es insuficiente para describir las condiciones de filtrado. Puede utilizar este parámetro para definir una consulta SQL personalizada. Cuando se configura este parámetro, el sistema de sincronización de datos ignora los parámetros column, table y where, y utiliza directamente el contenido de este parámetro para filtrar los datos. Por ejemplo, para sincronizar datos después de una unión de varias tablas, utilice select a,b from table_a join table_b on table_a.id = table_b.id. Cuando configura querySql, PolarDB Reader ignora directamente los parámetros column, table y where. El parámetro querySql tiene mayor prioridad que los parámetros table, column, where y splitPk. El datasource se utiliza para analizar información como el nombre de usuario y la contraseña.

No

Ninguna

Demostración de script de Writer

El siguiente código proporciona una configuración de script de ejemplo. Para obtener más información sobre los parámetros, consulte la sección de descripción 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 del script de Writer

  • Todos los parámetros

    Parámetro

    Descripción

    Obligatorio

    Predeterminado

    datasource

    El nombre del origen de datos. En modo script, el valor de este parámetro debe coincidir con el nombre del origen de datos agregado.

    Sí

    Ninguna

    table

    El nombre de la tabla de destino en la cual desea sincronizar datos.

    Sí

    Ninguna

    writeMode

    El modo de escritura. Valores válidos:

    • insert: corresponde a INSERT INTO en la interfaz sin código.

    • update: corresponde a ON DUPLICATE KEY UPDATE en la interfaz sin código.

    • replace: corresponde a REPLACE INTO en la interfaz sin código.

    Para obtener más información sobre los modos y ejemplos, consulte la sección Detalles del parámetro writeMode a continuación.

    Nota

    Para PolarDB for PostgreSQL, solo se admite el modo insert. Para actualizar datos y evitar conflictos de clave principal, elimine los datos duplicados antes de ejecutar la tarea de sincronización por lotes. Se recomiendan los siguientes métodos:

    • Método 1: En el parámetro preSql (que corresponde a Pre-Import Statement en la interfaz sin código), configure una sentencia TRUNCATE para borrar la tabla de destino.

    • Método 2: Procese la tabla de destino en un nodo ascendente para evitar conflictos de clave principal durante la sincronización de datos.

    No

    insert

    column

    Las columnas de destino en las que desea escribir datos. Separe las columnas con comas (,). Ejemplo: "column": ["id", "name", "age"]. Para escribir datos en todas las columnas en orden, utilice un asterisco (). Ejemplo: "column": [""].

    Sí

    Ninguna

    preSql

    Especifica una o más sentencias SQL para ejecutar antes de que comience la tarea. La interfaz sin código admite una sola sentencia, mientras que el modo script admite múltiples sentencias, como sentencias para borrar datos existentes.

    No

    Ninguna

    postSql

    Especifica una o más sentencias SQL para ejecutar después de que finalice la tarea. La interfaz sin código admite una sola sentencia, mientras que el modo script admite múltiples sentencias, como una sentencia para agregar una marca de tiempo.

    No

    Ninguna

    batchSize

    El número de registros que se enviarán en cada lote. Valores más grandes pueden mejorar el throughput al reducir las interacciones de red con PolarDB, pero un valor excesivamente grande puede provocar un error de falta de memoria (OOM).

    No

    1024

    updateColumn

    Las columnas que se actualizarán cuando ocurra un conflicto de clave principal o índice único. Este parámetro solo es válido cuando writeMode se establece en update. Puede especificar varias columnas separadas por comas. Ejemplo: "updateColumn": ["name", "age"].

    Nota

    Este parámetro solo es compatible con PolarDB for MySQL.

    No

    Ninguna

  • Detalles del parámetro writeMode

    Comparación

    insert (corresponde a INSERT INTO en la interfaz sin código)

    update (corresponde a ON DUPLICATE KEY UPDATE en la interfaz sin código)

    replace (corresponde a REPLACE INTO en la interfaz sin código)

    Estrategia de manejo de conflictos

    Si ocurre un conflicto de clave principal o índice único, la fila en conflicto no se escribe en la tabla de destino y se procesa como datos sucios.

    Si no ocurre ningún conflicto de clave principal o índice único, este modo funciona igual que el modo INSERT INTO. Si ocurre un conflicto, la nueva fila actualiza solo los campos especificados de la fila existente.

    Si no ocurre ningún conflicto de clave principal o índice único, este modo funciona igual que el modo INSERT INTO. Si ocurre un conflicto, la fila existente se elimina y se inserta la nueva fila, reemplazando efectivamente todos sus campos.

    Ejemplo de datos

    • Tabla de origen

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

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Después de ejecutar la tarea, se escribe una fila en la tabla de destino y se registra una fila como datos sucios.

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 1  | zhangsan| 1   |
      | 2  | wangwu  |     |
      +----+---------+-----+
    • Escenario 1: La tarea está configurada para sincronizar solo algunas columnas: "column": ["id","name"]

      • Tabla de origen

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

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Después de ejecutar la tarea, se escriben dos filas en la tabla de destino y no se registran datos sucios.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    | 3   |
        +----+---------+-----+
    • Escenario 2: La tarea está configurada para sincronizar todas las columnas: "column": ["id","name","age"]

      • Tabla de origen

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

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 2  | wangwu  |  3  |
        +----+---------+-----+
      • Después de ejecutar la tarea, se escriben dos filas en la tabla de destino y no se registran datos sucios.

        +----+---------+-----+
        | id | name    | age |
        +----+---------+-----+
        | 1  | zhangsan| 1   |
        | 2  | lisi    |     |
        +----+---------+-----+
    • Tabla de origen

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

      +----+---------+-----+
      | id | name    | age |
      +----+---------+-----+
      | 2  | wangwu  |  3  |
      +----+---------+-----+
    • Después de ejecutar la tarea, se escriben dos filas en la tabla de destino y no se registran datos sucios.

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