Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos MySQL

Última actualización: Sep 04, 2026

Un origen de datos MySQL proporciona canales bidireccionales de lectura y escritura para sincronizar datos con bases de datos MySQL mediante Data Integration.

Versiones compatibles de MySQL

  • Lectura y escritura sin conexión:

    Admite MySQL 5.5.x, 5.6.x, 5.7.x y 8.0.x. Es compatible con Amazon RDS for MySQL, Azure Database for MySQL y Amazon Aurora MySQL.

    La sincronización sin conexión permite leer desde vistas.

  • Lectura en tiempo real:

    Data Integration utiliza la suscripción en tiempo real para leer datos de MySQL. Admite la sincronización en tiempo real de las versiones 5.5.x, 5.6.x, 5.7.x y 8.0.x de MySQL, pero no es compatible con las nuevas funciones de MySQL 8.0, como el índice funcional. Esta función también es compatible con Amazon RDS for MySQL, Azure Database for MySQL y Amazon Aurora MySQL.

    Importante

    Si necesita sincronizar datos desde DRDS, no lo configure como un origen de datos MySQL. En su lugar, configúrelo directamente como un origen de datos DRDS. Para obtener instrucciones, consulte Configure a DRDS data source.

Limitaciones

Sincronización en tiempo real

  • No es posible sincronizar datos desde instancias de solo lectura de MySQL que ejecuten una versión anterior a la 5.6.x.

  • No se admite la sincronización de tablas que contienen índices funcionales.

  • No se admite XA ROLLBACK.

    Para las transacciones en estado XA PREPARE, la sincronización en tiempo real escribe los datos en el destino. Si se emite un comando XA ROLLBACK, la sincronización en tiempo real no revierte los datos preparados. Para manejar este escenario, debe eliminar manualmente la tabla de la tarea de sincronización en tiempo real y volver a agregarla para resincronizarla.

  • El formato de registro binario del servidor MySQL debe establecerse en ROW.

  • La sincronización en tiempo real no sincroniza las eliminaciones en cascada en tablas asociadas.

  • Para bases de datos Amazon Aurora MySQL, debe conectarse a su instancia principal o de escritura. No es posible habilitar la función Binlog en las réplicas de lectura de Aurora MySQL, y las tareas de sincronización en tiempo real requieren Binlog para las actualizaciones incrementales.

  • Para cambios DDL en línea en tablas MySQL, la sincronización en tiempo real solo admite agregar columnas (Add Column) mediante Data Management Service (DMS).

  • No se admite la lectura de procedimientos almacenados desde MySQL.

Sincronización sin conexión

  • Cuando utiliza el plugin MySQL Reader para sincronizar varias tablas desde una base de datos fragmentada, debe establecer la concurrencia en un valor mayor que el número de tablas para habilitar la división de tablas. De lo contrario, el sistema crea una tarea por cada tabla.

  • No se admite la lectura de procedimientos almacenados desde MySQL.

Tipos de datos compatibles

Para consultar la lista completa de tipos de datos de MySQL en cada versión, consulte la documentación oficial de MySQL. La siguiente tabla muestra el estado de compatibilidad de los principales tipos de datos, tomando como ejemplo MySQL 8.0.x.

Tipo

Lectura sin conexión (MySQL Reader)

Escritura sin conexión (MySQL Writer)

Lectura en tiempo real

Escritura en tiempo real

TINYINT

Supported

Supported

Supported

Supported

SMALLINT

Supported

Supported

Supported

Supported

INTEGER

Supported

Supported

Supported

Supported

BIGINT

Supported

Supported

Supported

Supported

FLOAT

Supported

Supported

Supported

Supported

DOUBLE

Supported

Supported

Supported

Supported

DECIMAL/NUMERIC

Supported

Supported

Supported

Supported

REAL

Not supported

Not supported

Not supported

Not supported

VARCHAR

Supported

Supported

Supported

Supported

JSON

Supported

Supported

Supported

Supported

TEXT

Supported

Supported

Supported

Supported

MEDIUMTEXT

Supported

Supported

Supported

Supported

LONGTEXT

Supported

Supported

Supported

Supported

VARBINARY

Supported

Supported

Supported

Supported

BINARY

Supported

Supported

Supported

Supported

TINYBLOB

Supported

Supported

Supported

Supported

MEDIUMBLOB

Supported

Supported

Supported

Supported

LONGBLOB

Supported

Supported

Supported

Supported

ENUM

Supported

Supported

Supported

Supported

SET

Supported

Supported

Supported

Supported

BOOLEAN

Supported

Supported

Supported

Supported

BIT

Supported

Supported

Supported

Supported

DATE

Supported

Supported

Supported

Supported

DATETIME

Supported

Supported

Supported

Supported

TIMESTAMP

Supported

Supported

Supported

Supported

TIME

Supported

Supported

Supported

Supported

YEAR

Supported

Supported

Supported

Supported

LINESTRING

Not supported

Not supported

Not supported

Not supported

POLYGON

Not supported

Not supported

Not supported

Not supported

MULTIPOINT

Not supported

Not supported

Not supported

Not supported

MULTILINESTRING

Not supported

Not supported

Not supported

Not supported

MULTIPOLYGON

Not supported

Not supported

Not supported

Not supported

GEOMETRYCOLLECTION

Not supported

Not supported

Not supported

Not supported

Nota

Cuando los datos se almacenan en una columna DATE de MySQL, este normaliza automáticamente el valor de fecha al formato yyyy-mm-dd. Por ejemplo, un valor de fecha de origen 20260423 en formato yyyymmdd se convierte a 2026-04-23. Este es un mecanismo integrado de MySQL y no depende de la configuración de las tareas de sincronización de DataWorks. Si necesita conservar el formato original, cambie el tipo de campo a VARCHAR en la tabla de destino.

Requisitos previos

Prepare su entorno de MySQL antes de agregarlo como origen de datos en DataWorks para garantizar que las tareas de sincronización de datos se ejecuten correctamente.

Complete los siguientes requisitos previos.

Verificar la versión de MySQL

Data Integration solo admite versiones específicas de MySQL. Para obtener más información, consulte la sección Supported MySQL versions. Compruebe su versión de MySQL ejecutando el siguiente comando:

SELECT version();

Configurar permisos de cuenta

Se recomienda crear una cuenta dedicada de MySQL para el acceso al origen de datos de DataWorks.

  1. Opcional: Cree una cuenta.

    Para obtener instrucciones detalladas, consulte Crear una cuenta de MySQL.

  2. Otorgue permisos.

    • Por lotes

      En escenarios de sincronización por lotes:

      • Para leer datos de MySQL, la cuenta debe tener el permiso de lectura (SELECT) sobre las tablas que desea sincronizar.

      • Para escribir datos en MySQL, la cuenta debe tener los permisos de escritura (INSERT, DELETE y UPDATE) sobre las tablas que desea sincronizar.

      Nota

      Si solo necesita leer datos de MySQL para sincronizarlos sin escribirlos de nuevo, basta con otorgar el permiso SELECT a la cuenta. Los permisos INSERT, DELETE y UPDATE no son obligatorios para la sincronización de solo lectura.

    • Tiempo real

      En escenarios de sincronización en tiempo real, la cuenta debe tener los permisos SELECT, REPLICATION SLAVE y REPLICATION CLIENT sobre la base de datos.

    Ejecute los siguientes comandos para otorgar los permisos necesarios. También puede otorgar a la cuenta el permiso SUPER. En el siguiente comando, reemplace 'sync_account' con el nombre de la cuenta que creó.

    -- Optional: Create a synchronization account that can connect from any host ('%').
    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password'; 
    -- Grant the required permissions to the synchronization account.
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';

    La sintaxis *.* otorga los permisos sobre todas las tablas en todas las bases de datos. También puede otorgar los permisos sobre una tabla específica en una base de datos concreta. Por ejemplo, para otorgar permisos sobre la tabla user en la base de datos test, ejecute el siguiente comando: GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.

    Nota

    El permiso REPLICATION SLAVE es un permiso global y no se puede otorgar para una base de datos o tabla específica.

Habilitar binlog de MySQL (solo para sincronización en tiempo real)

Data Integration realiza la sincronización incremental de datos en tiempo real mediante la suscripción a registros binarios de MySQL. Debe habilitar el registro binario de MySQL antes de configurar una tarea de sincronización en DataWorks.

Importante
  • Si un registro binario se está consumiendo, la base de datos no puede eliminarlo. Una latencia alta en una tarea de sincronización en tiempo real puede retrasar la eliminación del registro binario, lo cual podría agotar el espacio en disco. Se recomienda configurar alertas de latencia para su tarea y monitorear el espacio en disco de la base de datos.

  • Conserve los registros binarios durante al menos 72 horas. Si una tarea falla y los registros binarios ya no están disponibles, no podrá restablecer el punto de control a una posición anterior al fallo, lo que puede provocar pérdida de datos. En este caso, debe utilizar la sincronización por lotes para rellenar los datos.

  1. Compruebe si el registro binario está habilitado.

    • Ejecute la siguiente instrucción para comprobar si el registro binario está habilitado.

      SHOW variables LIKE "log_bin";

      Si el valor devuelto es ON, el registro binario está habilitado.

    • Para comprobar el estado del registro binario en una base de datos réplica, ejecute la siguiente instrucción.

      SHOW variables LIKE "log_slave_updates";

      Si el valor devuelto es ON, el registro binario está habilitado en la base de datos réplica.

    Si el valor devuelto no es el esperado:

  2. Verifique el formato del registro binario.

    Ejecute la siguiente instrucción para verificar el formato del registro binario.

    SHOW variables LIKE "binlog_format";

    Valores devueltos posibles:

    • Un valor devuelto de ROW indica que el formato de registro binario habilitado es ROW.

    • STATEMENT: El formato de registro binario es STATEMENT.

    • MIXED: El formato de registro binario es MIXED.

    Importante

    La sincronización en tiempo real de DataWorks solo admite el formato ROW. Si el valor devuelto no es ROW, debe cambiar la configuración de binlog_format.

  3. Compruebe si se registran imágenes completas de fila.

    Ejecute la siguiente instrucción para comprobar la configuración de imagen de fila.

    SHOW variables LIKE "binlog_row_image";

    Valores devueltos posibles:

    • FULL: Se registran imágenes completas de fila.

    • MINIMAL: Se registran imágenes mínimas de fila en lugar de imágenes completas.

    Importante

    La sincronización en tiempo real de DataWorks solo admite servidores MySQL que tienen habilitadas las imágenes completas de fila para el registro binario. Si el valor devuelto no es FULL, debe modificar la configuración de binlog_row_image.

Configurar permisos de lectura de registro binario en OSS

Al agregar un origen de datos MySQL, si establece el Configuration Mode en ApsaraDB for RDS y su instancia de RDS for MySQL se encuentra en la misma región que su espacio de trabajo de DataWorks, puede habilitar Read binlogs from OSS. De este modo, DataWorks obtiene los registros binarios desde OSS si falla el acceso directo a los registros binarios de RDS for MySQL, lo que evita interrupciones en las tareas de sincronización en tiempo real.

Si utiliza un Alibaba Cloud RAM User o un Alibaba Cloud RAM Role como OSS binlog access identity, también debe otorgar los permisos necesarios.

  • Usuario RAM

    1. Inicie sesión en la consola de Resource Access Management (RAM), vaya a la página Users y localice el usuario RAM objetivo.

    2. En la columna Operations, haga clic en Attach Policy.

    3. Configure los siguientes parámetros y haga clic en OK.

      • Scope: Alibaba Cloud account

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

  • Rol RAM

    1. Inicie sesión en la consola de Resource Access Management (RAM) y cree un rol RAM. Para obtener más información, consulte Create a RAM role for a trusted Alibaba Cloud account.

      Parámetros clave:

      • Select trusted entity: Alibaba Cloud account

      • Select account: Other Alibaba Cloud account. Introduzca el ID de la cuenta de Alibaba Cloud propietaria del espacio de trabajo de DataWorks.

      • Role name: Introduzca un nombre personalizado.

    2. Otorgue permisos al rol RAM. Para obtener más información, consulte Grant permissions to a RAM role.

      Parámetros clave:

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

    3. Modifique la política de confianza del rol RAM. Para obtener más información, consulte Edit the trust policy of a RAM role.

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "di.dataworks.aliyuncs.com",
                          "dataworks.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }

Agregar un origen de datos

Modo de instancia de Alibaba Cloud

Si su base de datos MySQL se ejecuta en una instancia de RDS de Alibaba Cloud, se recomienda crear el origen de datos en el modo de instancia de Alibaba Cloud. Configure los parámetros de la siguiente manera:

Parámetro

Descripción

Data Source Name

El nombre del origen de datos debe ser único dentro del espacio de trabajo. Se recomienda utilizar un nombre que identifique claramente el negocio y el entorno; por ejemplo, rds_mysql_order_dev.

Connection Mode

Seleccione el modo de instancia de Alibaba Cloud. Para obtener más información sobre los modos de conexión, consulte Scenario 1: Instance Mode (Current Cloud Account) y Scenario 2: Instance Mode (Other Cloud Account).

Alibaba Cloud Account

Seleccione la cuenta en la nube a la que pertenece la instancia. Si selecciona Another Alibaba Cloud Account, debe configurar permisos entre cuentas. Para obtener más información, consulte Cross-Account Authorization (RDS, Hive, or Kafka).

Si selecciona otra cuenta en la nube, proporcione la siguiente información:

  • ID de la cuenta principal: El ID de la cuenta principal propietaria de la instancia.

  • Nombre del rol de RAM: El rol de RAM proporcionado por la otra cuenta en la nube. Este rol debe tener los permisos necesarios para acceder a la instancia de destino.

Region

La región de la instancia.

Instance

Seleccione el nombre de la instancia a la que desea conectarse.

Standby library settings

Si su instancia de RDS tiene una read-only instance (instancia en espera), puede configurar tareas para leer datos desde ella. Esto evita que las operaciones de lectura afecten el rendimiento de la instancia principal.

Instance Address

Después de seleccionar la instancia correcta, haga clic en Get Latest Address para consultar información como su dirección pública/privada, VPC y vSwitch.

Database

El nombre de la base de datos a la que se conecta el origen de datos. Asegúrese de que el usuario especificado tenga los permisos necesarios para acceder a esta base de datos.

Corresponding access identity

Seleccione el origen de credenciales que utiliza DataWorks para acceder a MySQL. Se admiten las siguientes opciones:

  • Nombre de usuario y contraseña: Introduzca el nombre de usuario y la contraseña de la base de datos MySQL. DataWorks los almacena mediante cifrado simétrico. Si utiliza una instancia de RDS, puede crearlos y gestionarlos en la sección account management de la instancia.

  • Key Management Service: Utilice un secreto genérico alojado en Alibaba Cloud Key Management Service (KMS). Primero debe crear un secreto genérico en KMS. Para obtener más información, consulte Manage and use generic secrets. Luego, en el origen de datos, seleccione la Kms Region donde reside el secreto genérico de KMS y seleccione el secreto genérico de destino en la KMS List. El contenido de un secreto genérico de KMS admite los siguientes dos formatos JSON:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Nota

    Después de modificar el contenido de un secreto genérico de KMS, DataWorks almacena el secreto en caché durante un máximo de 5 minutos. El nuevo secreto entra en vigor en un plazo máximo de 5 minutos.

Support OSS binlog reading

Si se habilita, DataWorks intenta obtener los registros binlog de OSS cuando los registros binlog de RDS no son accesibles. Esto evita interrupciones en las tareas de sincronización en tiempo real. Para obtener más información, consulte Configure authorization for reading OSS binlogs. Según su configuración de autorización, establezca la OSS binlog access identity.

Authentication Method

Seleccione sin autenticación o autenticación SSL. Si selecciona autenticación SSL, asegúrese de que también esté habilitada en la instancia. Prepare el archivo de certificado y cárguelo en Authentication File Management.

Version

Inicie sesión en el servidor MySQL y ejecute la consulta SELECT VERSION() para comprobar el número de versión.

Modo de cadena de conexión

También puede utilizar el modo de cadena de conexión para crear un origen de datos con mayor flexibilidad. Configure los parámetros de la siguiente manera:

Parámetro

Descripción

Data Source Name

El nombre del origen de datos debe ser único dentro del espacio de trabajo. Se recomienda utilizar un nombre que identifique claramente el negocio y el entorno; por ejemplo, rds_mysql_order_dev.

Connection Mode

Seleccione User-created Data Store with Public IP Addresses. En este modo, se utiliza una URL JDBC para conectarse a la base de datos.

Connection string preview

Después de introducir la dirección de conexión y el nombre de la base de datos, DataWorks genera automáticamente una vista previa de la URL JDBC.

Connection Address

Dirección del host: Introduzca la dirección de acceso real del servidor de base de datos. Asegúrese de que la dirección sea accesible por red desde el resource group de DataWorks. Los escenarios comunes incluyen:

  • Acceso dentro de la misma VPC: Introduzca la dirección IP interna (privada).

  • Acceso a través de Internet o mediante una puerta de enlace NAT: Introduzca la dirección IP pública o las direcciones IP NAT.

Si la base de datos es una instancia de RDS de Alibaba Cloud, puede encontrar la dirección en la página Database Connection de los detalles de la instancia.

Número de puerto: El puerto de la base de datos. El valor predeterminado es 3306.

Database Name

El nombre de la base de datos a la que se conecta el origen de datos. Asegúrese de que el usuario especificado tenga los permisos necesarios para acceder a esta base de datos.

Corresponding access identity

Seleccione el origen de credenciales que utiliza DataWorks para acceder a MySQL. Se admiten las siguientes opciones:

  • Nombre de usuario y contraseña: Introduzca el nombre de usuario y la contraseña de la base de datos MySQL. DataWorks los almacena mediante cifrado simétrico. Si utiliza una instancia de RDS, puede crearlos y gestionarlos en la sección account management de la instancia.

  • Key Management Service: Utilice un secreto genérico alojado en Alibaba Cloud Key Management Service (KMS). Primero debe crear un secreto genérico en KMS. Para obtener más información, consulte Manage and use generic secrets. Luego, en el origen de datos, seleccione la Kms Region donde reside el secreto genérico de KMS y seleccione el secreto genérico de destino en la KMS List. El contenido de un secreto genérico de KMS admite los siguientes dos formatos JSON:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Nota

    Después de modificar el contenido de un secreto genérico de KMS, DataWorks almacena el secreto en caché durante un máximo de 5 minutos. El nuevo secreto entra en vigor en un plazo máximo de 5 minutos.

Version

Inicie sesión en el servidor MySQL y ejecute la consulta SELECT VERSION() para comprobar el número de versión.

Authentication Method

Seleccione sin autenticación o autenticación SSL. Si selecciona autenticación SSL, asegúrese de que también esté habilitada en la instancia. Prepare el archivo de certificado y cárguelo en Authentication File Management.

Advanced Parameters

Parámetro: Seleccione un parámetro compatible en la lista desplegable; por ejemplo, connectTimeout.

Valor: Introduzca un valor adecuado para el parámetro seleccionado; por ejemplo, 3000.

La URL JDBC se actualiza automáticamente a: jdbc:mysql://192.168.90.28:3306/test?connectTimeout=3000.

Por ejemplo, si encuentra errores relacionados con la zona horaria o necesita especificar una, haga clic en Add Property, seleccione serverTimezone como parámetro e introduzca la zona horaria de destino, como Asia/Shanghai. Guarde la configuración del origen de datos y vuelva a ejecutar la tarea.

Importante

Asegúrese de que el resource group de DataWorks pueda conectarse a la base de datos. De lo contrario, las tareas posteriores fallarán. La configuración de red depende del entorno de la base de datos y del modo de conexión del origen de datos. Para obtener más información, consulte Test connectivity.

Flujo de trabajo de sincronización de MySQL

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 la sincronización sin conexión de tabla única

Configurar la sincronización en tiempo real de tabla única

Consulte Real-time synchronization task configuration (Legacy) para ver el procedimiento.

Configurar la sincronización de base de datos completa

Consulte Full database real-time synchronization task configuration para ver el procedimiento.

Preguntas frecuentes

Para otros problemas comunes de Data Integration, consulte Data Integration FAQ.

Apéndice: Ejemplos de scripts y parámetros de MySQL

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.

Ejemplos de scripts de Reader

Los siguientes ejemplos muestran configuraciones para una sola tabla en una sola base de datos y para tablas fragmentadas.

Nota

Los comentarios en los siguientes ejemplos JSON son solo con fines demostrativos. Elimine los comentarios antes de ejecutar el script.

  • Tabla única en una base de datos única

    {
      "type": "job",
      "version": "2.0",// The version number.
      "steps": [
        {
          "stepType": "mysql",// The connector name.
          "parameter": {
            "column": [// The columns to read.
              "id"
            ],
            "connection": [
              {
                "querySql": [
                  "select a,b from join1 c join join2 d on c.id = d.id;"
                ],
                "datasource": ""// The data source name.
              }
            ],
            "where": "",// The filter condition.
            "splitPk": "",// The shard key.
            "encoding": "UTF-8"// The encoding format.
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "stream",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "errorLimit": {
          "record": "0"// The maximum number of allowed dirty data records.
        },
        "speed": {
          "throttle": true,// Set to true to enable rate limiting. If false, rate limiting is disabled and the 'mbps' parameter is ignored.
          "concurrent": 1,// The number of concurrent threads.
          "mbps": "12"// The rate limit. 1 mbps = 1 MB/s.
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Tablas fragmentadas

    Nota

    MySQL Reader puede leer datos de varias tablas MySQL que tienen el mismo esquema. En este contexto, "tablas fragmentadas" se refiere a un escenario donde los datos de varias tablas de origen se escriben en una sola tabla de destino. Para sincronizar tablas fragmentadas a nivel de base de datos, create a task in Data Integration y seleccione la función de fragmentación de base de datos completa.

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "indexes": [
              {
                "type": "unique",
                "column": [
                  "id"
                ]
              }
            ],
            "envType": 0,
            "useSpecialSecret": false,
            "column": [
              "id",
              "buyer_name",
              "seller_name",
              "item_id",
              "city",
              "zone"
            ],
            "tableComment": "Test order table",
            "connection": [
              {
                "datasource": "rds_dataservice",
                "table": [
                  "rds_table"
                ]
              },
              {
                "datasource": "rds_workshop_log",
                "table": [
                  "rds_table"
                ]
              }
            ],
            "where": "",
            "splitPk": "id",
            "encoding": "UTF-8"
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "odps",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        },
        {
          "name": "Processor",
          "stepType": null,
          "category": "processor",
          "copies": 1,
          "parameter": {
            "nodes": [],
            "edges": [],
            "groups": [],
            "version": "2.0"
          }
        }
      ],
      "setting": {
        "executeMode": null,
        "errorLimit": {
          "record": ""
        },
        "speed": {
          "concurrent": 2,
          "throttle": false
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }

Parámetros de Reader

Parámetro

Descripción

Obligatorio

Predeterminado

datasource

El nombre del origen de datos desde el cual leer. Debe coincidir con un origen de datos configurado en el editor de código.

Sí

Ninguna

table

El nombre de la tabla de origen que se va a sincronizar. Una tarea de Data Integration solo puede leer datos de una tabla lógica.

Los siguientes ejemplos muestran cómo usar patrones avanzados para el parámetro table:

  • Puede leer desde tablas fragmentadas especificando un rango. Por ejemplo, 'table_[0-99]' lee desde 'table_0', 'table_1', 'table_2', hasta 'table_99'.

  • Si los sufijos numéricos en los nombres de sus tablas tienen una longitud consistente, por ejemplo, 'table_000', 'table_001' y 'table_002' hasta 'table_999', puede configurarlo como '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]'.

Nota

La tarea lee las columnas especificadas en el parámetro column de todas las tablas que coinciden con el patrón. La tarea falla si una tabla coincidente o una columna especificada no existe.

Sí

Ninguna

column

Una matriz JSON que especifica las columnas que se van a leer de la tabla de origen. Para seleccionar todas las columnas, utilice ["*"].

  • Reducción de columnas: Puede exportar un subconjunto de columnas.

  • Reordenamiento de columnas: Puede exportar columnas en un orden diferente al del esquema de la tabla.

  • Valores constantes: Puede configurar valores constantes. Los valores deben seguir la sintaxis SQL de MySQL. Ejemplo: ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3",true].

    • id es un nombre de columna regular.

    • table es un nombre de columna que es una palabra clave reservada.

    • 1 es una constante entera.

    • 'mingya.wmy' es una constante de cadena. Debe encerrarse entre comillas simples.

    • Manejo de valores null:

      • " " representa una cadena que contiene un solo espacio.

      • null representa un valor NULL.

      • 'null' representa la cadena literal "null".

    • to_char(a+1) es una función de conversión de cadenas.

    • 2.3 es un número de punto flotante.

    • true es un valor booleano.

  • Debe especificar explícitamente las columnas en el parámetro column. No puede estar vacío.

Sí

Ninguna

splitPk

Cuando MySQL Reader extrae datos, especificar el parámetro splitPk habilita la fragmentación de datos en el campo especificado. Data Integration lanza entonces tareas concurrentes para mejorar la eficiencia de la sincronización.

  • Para obtener el mejor rendimiento, utilice la clave principal de la tabla como splitPk.

  • Actualmente, splitPk admite la división de datos solo para tipos enteros. No admite otros tipos como cadenas, punto flotante o fechas. Si especifica un tipo de dato no compatible, la función splitPk se ignora y se utiliza un solo canal para la sincronización.

  • Si no se especifica splitPk o su valor está vacío, la tabla se sincroniza a través de un solo canal.

No

Ninguna

splitFactor

El factor de fragmentación. Este parámetro controla cuántos fragmentos se crean. Si se habilita la concurrencia, los datos se dividen en concurrencia × splitFactor fragmentos. Por ejemplo, si la concurrencia es 5 y splitFactor es 5, los datos se dividen en 25 fragmentos que son procesados por 5 hilos concurrentes.

Nota

Rango recomendado: 1 a 100. Un valor demasiado grande puede causar un error de memoria insuficiente (OOM).

No

5

where

Una condición de filtro. En un escenario típico, para sincronizar solo los datos del día actual, puede establecer la condición where en gmt_create > $bizdate.

  • La cláusula where le permite realizar eficazmente una sincronización incremental. Si no especifica la instrucción where, incluyendo no proporcionar una clave o valor para where, la sincronización de datos se trata como una sincronización completa de datos.

  • No utilice cláusulas como LIMIT 10, ya que no son válidas en una cláusula WHERE de MySQL.

No

Ninguna

querySql (Disponible solo en el editor de código; no compatible con la interfaz de usuario sin código.)

En algunos casos de uso, el parámetro where es insuficiente para el filtrado requerido. Utilice este parámetro para definir una consulta SQL personalizada. Cuando se configura, el sistema ignora los parámetros tables, columns y splitPk, y utiliza esta consulta directamente. Por ejemplo, para sincronizar datos de una unión de varias tablas, utilice select a,b from table_a join table_b on table_a.id = table_b.id. El parámetro querySql tiene prioridad sobre table, column, where y splitPk. El datasource se utiliza para analizar información como el nombre de usuario y la contraseña.

Nota

El parámetro querySql distingue entre mayúsculas y minúsculas. Por ejemplo, querysql (en minúsculas) no surtirá efecto.

No

Ninguna

useSpecialSecret

Especifica si se debe utilizar la contraseña individual de cada origen de datos cuando hay configurados varios orígenes de datos. Valores válidos:

  • true

  • false

Si varios orígenes de datos tienen diferentes nombres de usuario y contraseñas, establezca este parámetro en true para utilizar las credenciales de cada origen de datos respectivo.

No

false

Ejemplo de script de Writer

{
  "type": "job",
  "version": "2.0",// The version number.
  "steps": [
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "mysql",// The connector name.
      "parameter": {
        "postSql": [],// The SQL statements to run after the task.
        "datasource": "",// The data source name.
        "column": [// The columns to write to.
          "id",
          "value"
        ],
        "writeMode": "insert",// The write mode. Valid values: insert, replace, and update.
        "batchSize": 1024,// The number of records per batch.
        "table": "",// The destination table name.
        "nullMode": "skipNull",// The policy for handling NULL values.
        "skipNullColumn": [// The columns for which to skip NULL values.
          "id",
          "value"
        ],
        "preSql": [
          "delete from XXX;"// The SQL statements to run before the task.
        ]
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {// The maximum number of allowed dirty data records.
      "record": "0"
    },
    "speed": {
      "throttle": true,// Set to true to enable rate limiting. If false, rate limiting is disabled and the 'mbps' parameter is ignored.
      "concurrent": 1,// The number of concurrent threads.
      "mbps": "12"// The rate limit in MB/s to prevent excessive I/O pressure on the databases. 1 mbps = 1 MB/s.
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parámetros del escritor

Parámetro

Descripción

Obligatorio

Predeterminado

datasource

Nombre del origen de datos de destino. Debe coincidir con un origen de datos configurado en el editor de código.

Sí

Ninguna

table

Nombre de la tabla de destino.

Sí

Ninguna

writeMode

Modo de escritura. Las opciones compatibles corresponden a las instrucciones de MySQL INSERT INTO, ON DUPLICATE KEY UPDATE y REPLACE INTO:

  • insert: Si ocurre un conflicto de clave primaria o índice único, la tarea no escribe las filas en conflicto y las registra como datos sucios.

    Si configura la tarea en modo script, establezca writeMode en insert.

  • on duplicate key update: Si no hay conflicto de clave primaria o índice único, la instrucción se comporta igual que insert into. Si ocurre un conflicto, la instrucción actualiza los valores de los campos especificados con los valores de la nueva fila y escribe los datos en MySQL.

    Si configura la tarea en modo script, establezca writeMode en update.

  • replace into: Cuando no hay conflicto de clave primaria o índice único, se comporta igual que insert into. Si ocurre un conflicto, primero elimina la fila original y luego inserta la nueva. Esto significa que la nueva fila reemplaza todos los campos de la fila original.

    Si configura la tarea en modo script, establezca writeMode en replace.

No

insert

nullMode

Especifica la política para manejar valores NULL del origen. Valores válidos:

  • writeNull: Si un campo de origen es NULL, se escribe un valor NULL en el campo de destino.

  • skipNull: Si un campo de origen es NULL, el campo de destino se omite en la operación de escritura, lo que permite aplicar el valor predeterminado de la base de datos. Si no se define ningún valor predeterminado, el resultado suele ser NULL. Debe especificar las columnas aplicables en el parámetro skipNullColumn.

Importante

Cuando se configura como skipNull, la tarea construye dinámicamente instrucciones SQL para escribir datos y así admitir valores predeterminados en el destino. Esto aumenta el número de operaciones FLUSH y reduce la velocidad de sincronización. En el peor de los casos, la tarea ejecutará FLUSH una vez por cada registro de datos.

No

writeNull

skipNullColumn

Cuando nullMode se establece en skipNull, las columnas especificadas por este parámetro no se fuerzan a NULL. En su lugar, se utilizan sus respectivos valores predeterminados si están disponibles.

Formato: ["c1","c2",...]. Las columnas especificadas, como c1 y c2, deben ser un subconjunto de las columnas definidas en el parámetro column.

No

Todas las columnas configuradas para la tarea.

column

Las columnas de destino donde se escribirá, especificadas como un arreglo JSON de cadenas. Ejemplo: "column":["id","name","age"]. Para escribir en todas las columnas según su orden en el esquema, use un asterisco (). Ejemplo: "column":[""].

Sí

Ninguna

preSql

Una o más instrucciones SQL para ejecutar antes de que comience la tarea de sincronización. La interfaz sin código solo admite una instrucción, mientras que el editor de código admite varias. Por ejemplo, puede borrar los datos existentes de una tabla: TRUNCATE TABLE tablename.

Nota

No se admiten transacciones para múltiples instrucciones SQL.

No

Ninguna

postSql

Una o más instrucciones SQL para ejecutar después de que finalice la tarea de sincronización. La interfaz sin código solo admite una instrucción, mientras que el editor de código admite varias. Por ejemplo, puede agregar una columna de marca de tiempo mediante la siguiente instrucción: ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Nota

No se admiten transacciones para múltiples instrucciones SQL.

No

Ninguna

batchSize

Número de registros por lote de escritura. Valores más altos reducen los ciclos de ida y vuelta de red y pueden mejorar el rendimiento, pero establecer un valor demasiado alto puede provocar un error de memoria insuficiente (OOM).

No

256

updateColumn

Cuando writeMode se establece en update, este parámetro especifica qué columnas actualizar cuando ocurre un conflicto de clave primaria o índice único. Especifique las columnas en un arreglo JSON. Ejemplo: "updateColumn":["name","age"].

No

Ninguna