Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados MySQL

Última atualização: Jul 10, 2026

Uma fonte de dados MySQL fornece canais bidirecionais de leitura e escrita para sincronizar dados com bancos de dados MySQL por meio do Data Integration.

Versões suportadas do MySQL

  • Leitura e escrita offline:

    Compatível com MySQL 5.5.x, 5.6.x, 5.7.x e 8.0.x. Também oferece suporte a Amazon RDS for MySQL, Azure Database for MySQL e Amazon Aurora MySQL.

    A sincronização offline permite leitura a partir de views.

  • Leitura em tempo real:

    O Data Integration utiliza assinatura em tempo real para ler dados do MySQL. Há suporte à sincronização em tempo real nas versões 5.5.x, 5.6.x, 5.7.x e 8.0.x do MySQL, mas não há compatibilidade com novos recursos do MySQL 8.0, como o índice funcional. Esta funcionalidade também é compatível com Amazon RDS for MySQL, Azure Database for MySQL e Amazon Aurora MySQL.

    Importante

    Caso precise sincronizar dados do DRDS, não o configure como uma fonte de dados MySQL. Configure-o diretamente como uma fonte de dados DRDS. Para obter instruções, consulte Configurar uma fonte de dados DRDS.

Limitações

Sincronização em tempo real

  • Não é possível sincronizar dados de instâncias somente leitura do MySQL com versão anterior a 5.6.x.

  • Não há suporte para sincronização de tabelas que contenham índices funcionais.

  • XA ROLLBACK não é suportado.

    Para transações no estado XA PREPARE, a sincronização em tempo real grava os dados no destino. Se um comando XA ROLLBACK for emitido, a sincronização em tempo real não reverte os dados preparados. Para lidar com esse cenário, remova manualmente a tabela da tarefa de sincronização em tempo real e adicione-a novamente para ressincronizar.

  • O formato de binary log do servidor MySQL deve estar definido como ROW.

  • A sincronização em tempo real não replica exclusões em cascata em tabelas associadas.

  • Para bancos de dados Amazon Aurora MySQL, conecte-se à sua instância primária/gravação. Não é possível ativar o recurso Binlog em réplicas de leitura do Aurora MySQL, e as tarefas de sincronização em tempo real exigem Binlog para atualizações incrementais.

  • Para alterações DDL online em tabelas MySQL, a sincronização em tempo real suporta apenas a adição de colunas (Add Column) via Data Management Service (DMS).

  • Não há suporte para leitura de stored procedures do MySQL.

Sincronização offline

  • Ao usar o plugin MySQL Reader para sincronizar várias tabelas de um banco de dados fragmentado, defina a concorrência com um valor maior que o número de tabelas para habilitar a divisão de tabelas. Caso contrário, o sistema cria uma tarefa por tabela.

  • Não há suporte para leitura de stored procedures do MySQL.

Tipos de dados suportados

Para obter uma lista completa dos tipos de dados do MySQL em cada versão, consulte a documentação oficial do MySQL. A tabela a seguir lista o status de suporte dos principais tipos de dados, usando o MySQL 8.0.x como exemplo.

Tipo

Leitura offline (MySQL Reader)

Escrita offline (MySQL Writer)

Leitura em tempo real

Escrita em tempo real

TINYINT

Suportado

Suportado

Suportado

Suportado

SMALLINT

Suportado

Suportado

Suportado

Suportado

INTEGER

Suportado

Suportado

Suportado

Suportado

BIGINT

Suportado

Suportado

Suportado

Suportado

FLOAT

Suportado

Suportado

Suportado

Suportado

DOUBLE

Suportado

Suportado

Suportado

Suportado

DECIMAL/NUMERIC

Suportado

Suportado

Suportado

Suportado

REAL

Não suportado

Não suportado

Não suportado

Não suportado

VARCHAR

Suportado

Suportado

Suportado

Suportado

JSON

Suportado

Suportado

Suportado

Suportado

TEXT

Suportado

Suportado

Suportado

Suportado

MEDIUMTEXT

Suportado

Suportado

Suportado

Suportado

LONGTEXT

Suportado

Suportado

Suportado

Suportado

VARBINARY

Suportado

Suportado

Suportado

Suportado

BINARY

Suportado

Suportado

Suportado

Suportado

TINYBLOB

Suportado

Suportado

Suportado

Suportado

MEDIUMBLOB

Suportado

Suportado

Suportado

Suportado

LONGBLOB

Suportado

Suportado

Suportado

Suportado

ENUM

Suportado

Suportado

Suportado

Suportado

SET

Suportado

Suportado

Suportado

Suportado

BOOLEAN

Suportado

Suportado

Suportado

Suportado

BIT

Suportado

Suportado

Suportado

Suportado

DATE

Suportado

Suportado

Suportado

Suportado

DATETIME

Suportado

Suportado

Suportado

Suportado

TIMESTAMP

Suportado

Suportado

Suportado

Suportado

TIME

Suportado

Suportado

Suportado

Suportado

YEAR

Suportado

Suportado

Suportado

Suportado

LINESTRING

Não suportado

Não suportado

Não suportado

Não suportado

POLYGON

Não suportado

Não suportado

Não suportado

Não suportado

MULTIPOINT

Não suportado

Não suportado

Não suportado

Não suportado

MULTILINESTRING

Não suportado

Não suportado

Não suportado

Não suportado

MULTIPOLYGON

Não suportado

Não suportado

Não suportado

Não suportado

GEOMETRYCOLLECTION

Não suportado

Não suportado

Não suportado

Não suportado

Pré-requisitos

Prepare seu ambiente MySQL antes de adicioná-lo como fonte de dados no DataWorks para garantir que as tarefas de sincronização de dados sejam executadas corretamente.

Conclua os seguintes pré-requisitos.

Verificar a versão do MySQL

O Data Integration suporta apenas versões específicas do MySQL. Para mais informações, consulte a seção Versões suportadas do MySQL. Verifique sua versão do MySQL executando o seguinte comando:

SELECT version();

Configurar permissões da conta

Recomendamos criar uma conta MySQL dedicada para acesso à fonte de dados do DataWorks.

  1. Opcional: Crie uma conta.

    Para instruções detalhadas, consulte Criar uma conta MySQL.

  2. Conceda permissões.

    • Em lote

      Em cenários de sincronização em lote:

      • Para ler dados do MySQL, a conta deve ter permissão de leitura (SELECT) nas tabelas que você deseja sincronizar.

      • Para gravar dados no MySQL, a conta deve ter permissões de escrita (INSERT, DELETE e UPDATE) nas tabelas que você deseja sincronizar.

      Nota

      Se você precisar apenas ler dados do MySQL para sincronização sem gravar dados de volta, basta conceder a permissão SELECT à conta. As permissões INSERT, DELETE e UPDATE não são necessárias para sincronização somente leitura.

    • Tempo real

      Em cenários de sincronização em tempo real, a conta deve ter as permissões SELECT, REPLICATION SLAVE e REPLICATION CLIENT no banco de dados.

    Execute os comandos a seguir para conceder as permissões necessárias. Alternativamente, conceda à conta a permissão SUPER. No comando abaixo, substitua 'sync_account' pelo nome da conta criada.

    -- 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'@'%';

    A sintaxe *.* concede as permissões em todas as tabelas de todos os bancos de dados. Também é possível conceder permissões em uma tabela específica dentro de um banco de dados específico. Por exemplo, para conceder permissões na tabela user do banco de dados test, execute o seguinte comando: GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.

    Nota

    A permissão REPLICATION SLAVE é global e não pode ser concedida para um banco de dados ou tabela específicos.

Ativar binlog do MySQL (apenas para sincronização em tempo real)

O Data Integration realiza sincronização incremental de dados em tempo real assinando binlogs do MySQL. É necessário ativar o binlog do MySQL antes de configurar uma tarefa de sincronização no DataWorks.

Importante
  • Enquanto um binlog estiver sendo consumido, o banco de dados não poderá excluí-lo. Alta latência em uma tarefa de sincronização em tempo real pode atrasar a exclusão do binlog, o que pode esgotar o espaço em disco. Recomendamos configurar alertas de latência para sua tarefa e monitorar o espaço em disco do banco de dados.

  • Mantenha os binlogs por pelo menos 72 horas. Se uma tarefa falhar e os binlogs não estiverem mais disponíveis, não será possível redefinir o checkpoint para uma posição anterior à falha, o que pode causar perda de dados. Nesse caso, use a sincronização em lote para repor os dados.

  1. Verifique se o binlog está ativado.

    • Execute a instrução a seguir para verificar se o binlog está ativado.

      SHOW variables LIKE "log_bin";

      Se o valor retornado for ON, o binlog está ativado.

    • Para verificar o status do binlog em um banco de dados réplica, execute a seguinte instrução.

      SHOW variables LIKE "log_slave_updates";

      Se o valor retornado for ON, o binlog está ativado no banco de dados réplica.

    Se o valor retornado não for o esperado:

  2. Verifique o formato do binlog.

    Execute a instrução a seguir para verificar o formato do binlog.

    SHOW variables LIKE "binlog_format";

    Valores possíveis de retorno:

    • Um valor de retorno ROW indica que o formato de binlog ativado é ROW.

    • STATEMENT: O formato do binlog é STATEMENT.

    • MIXED: O formato do binlog é MIXED.

    Importante

    A sincronização em tempo real do DataWorks suporta apenas o formato ROW. Se o valor retornado não for ROW, altere a configuração binlog_format.

  3. Verifique se imagens completas de linha estão registradas.

    Execute a instrução a seguir para verificar a configuração de imagem de linha.

    SHOW variables LIKE "binlog_row_image";

    Valores possíveis de retorno:

    • FULL: Imagens completas de linha são registradas.

    • MINIMAL: Imagens mínimas de linha são registradas em vez de imagens completas.

    Importante

    A sincronização em tempo real do DataWorks suporta apenas servidores MySQL com imagens completas de linha ativadas para binlog. Se o valor retornado não for FULL, modifique a configuração binlog_row_image.

Configurar permissões de leitura de binlog do OSS

Ao adicionar uma fonte de dados MySQL, se você definir o Configuration Mode como ApsaraDB for RDS e sua instância RDS for MySQL estiver na mesma região do seu workspace do DataWorks, será possível ativar Read binlogs from OSS. O DataWorks então buscará binlogs no OSS caso o acesso direto aos binlogs do RDS for MySQL falhe, evitando interrupções nas tarefas de sincronização em tempo real.

Se você usar um Alibaba Cloud RAM User ou uma Alibaba Cloud RAM Role como OSS binlog access identity, também deverá conceder as permissões necessárias.

  • Usuário RAM

    1. Faça login no console Resource Access Management (RAM), acesse a página Users e localize o usuário RAM desejado.

    2. Na coluna Operations, clique em Add Permissions.

    3. Configure os parâmetros a seguir e clique em OK.

      • Scope: Alibaba Cloud account

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

      image

  • Função RAM

    1. Faça login no console Resource Access Management (RAM) e crie uma função RAM. Para mais informações, consulte Criar uma função RAM para uma conta confiável da Alibaba Cloud.

      Parâmetros principais:

      • Select trusted entity: Alibaba Cloud account

      • Select account: Other Alibaba Cloud account. Insira o ID da conta da Alibaba Cloud proprietária do workspace do DataWorks.

      • Role name: Insira um nome personalizado.

    2. Conceda permissões à função RAM. Para mais informações, consulte Conceder permissões a uma função RAM.

      Parâmetros principais:

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

    3. Modifique a política de confiança da função RAM. Para mais informações, consulte Editar a política de confiança de uma função RAM.

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

Adicionar uma fonte de dados

Modo de instância da Alibaba Cloud

Se seu banco de dados MySQL for executado em uma instância RDS da Alibaba Cloud, recomendamos criar a fonte de dados no modo de instância da Alibaba Cloud. Configure os parâmetros conforme descrito abaixo:

Parâmetro

Descrição

Data Source Name

O nome da fonte de dados deve ser exclusivo dentro do workspace. Recomendamos usar um nome que identifique claramente o negócio e o ambiente, por exemplo, rds_mysql_order_dev.

Configuration Mode

Selecione o modo de instância da Alibaba Cloud. Para mais informações sobre modos de configuração, consulte Cenário 1: Modo de Instância (Conta Cloud Atual) e Cenário 2: Modo de Instância (Outra Conta Cloud).

Alibaba Cloud Account

Selecione a conta cloud à qual a instância pertence. Se selecionar Another Alibaba Cloud Account, configure as permissões entre contas. Para mais informações, consulte Autorização Entre Contas (RDS, Hive ou Kafka).

Se selecionar outra conta cloud, forneça as seguintes informações:

  • ID da conta principal: O ID da conta principal proprietária da instância.

  • Nome da função RAM: A função RAM fornecida pela outra conta cloud. Essa função deve ter as permissões necessárias para acessar a instância de destino.

Region

A região da instância.

Instance

Selecione o nome da instância à qual se conectar.

Standby library settings

Se sua instância RDS possuir uma instância somente leitura (instância standby), configure as tarefas para ler dados dela. Isso evita que operações de leitura interfiram no desempenho da instância primária.

Instance Address

Após selecionar a instância correta, clique em Get Latest Address para visualizar informações como endereço público/privado, VPC e vSwitch.

Database

O nome do banco de dados ao qual a fonte de dados se conecta. Certifique-se de que o usuário especificado tenha as permissões necessárias para acessar este banco de dados.

Access identity

Selecione a origem da credencial que o DataWorks usa para acessar o MySQL. As seguintes opções são suportadas:

  • Username and password: Insira o username e a password do banco de dados MySQL. O DataWorks armazena essas informações com criptografia simétrica. Se utilizar uma instância RDS, crie e gerencie-as na seção de account management da instância.

  • Key Management Service: Utilize um segredo genérico hospedado no Alibaba Cloud Key Management Service (KMS). Primeiro, crie um segredo genérico no KMS. Para mais informações, consulte Gerenciar e usar segredos genéricos. Em seguida, na fonte de dados, selecione a Kms Region onde reside o segredo genérico do KMS e escolha o segredo genérico alvo na KMS List. O conteúdo de um segredo genérico do KMS suporta os dois formatos JSON a seguir:

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

    Após a alteração do conteúdo de um segredo genérico do KMS, o DataWorks mantém o segredo em cache por até 5 minutos. O novo segredo entra em vigor em, no máximo, 5 minutos.

Support OSS binlog reading

Se ativado, o DataWorks tenta buscar binlogs no OSS quando os binlogs do RDS estiverem inacessíveis. Isso evita interrupções nas tarefas de sincronização em tempo real. Para mais informações, consulte Configurar autorização para leitura de binlogs do OSS. Com base na sua configuração de autorização, defina a OSS binlog access identity.

Authentication Method

Selecione sem autenticação ou autenticação SSL. Se optar pela autenticação SSL, certifique-se de que ela também esteja ativada na instância. Prepare o arquivo de certificado e faça upload dele em Authentication File Management.

Version

Faça login no servidor MySQL e execute a consulta SELECT VERSION() para verificar o número da versão.

Modo string de conexão

Também é possível usar o modo string de conexão para criar uma fonte de dados com maior flexibilidade. Configure os parâmetros conforme descrito abaixo:

Parâmetro

Descrição

Data Source Name

O nome da fonte de dados deve ser exclusivo dentro do workspace. Recomendamos usar um nome que identifique claramente o negócio e o ambiente, por exemplo, rds_mysql_order_dev.

Configuration Mode

Selecione User-created Data Store with Public IP Addresses. Neste modo, uma URL JDBC é usada para conectar-se ao banco de dados.

Connection string preview

Após inserir o endereço de conexão e o nome do banco de dados, o DataWorks gera automaticamente uma prévia da URL JDBC.

Connection Address

Endereço do host: Insira o endereço de acesso real do servidor de banco de dados. Certifique-se de que o endereço seja acessível via rede pelo grupo de recursos do DataWorks. Cenários comuns incluem:

  • Acesso dentro da mesma VPC: Insira o endereço IP interno (privado).

  • Acesso pela Internet ou através de um gateway NAT: Insira o endereço IP público ou endereços IP NAT.

Se o banco de dados for uma instância Alibaba Cloud RDS, encontre o endereço na página Database Connection nos detalhes da instância.

Número da porta: A porta do banco de dados. O valor padrão é 3306.

Database Name

O nome do banco de dados ao qual a fonte de dados se conecta. Certifique-se de que o usuário especificado tenha as permissões necessárias para acessar este banco de dados.

Access identity

Selecione a origem da credencial que o DataWorks usa para acessar o MySQL. As seguintes opções são suportadas:

  • Username and password: Insira o username e a password do banco de dados MySQL. O DataWorks armazena essas informações com criptografia simétrica. Se utilizar uma instância RDS, crie e gerencie-as na seção de account management da instância.

  • Key Management Service: Utilize um segredo genérico hospedado no Alibaba Cloud Key Management Service (KMS). Primeiro, crie um segredo genérico no KMS. Para mais informações, consulte Gerenciar e usar segredos genéricos. Em seguida, na fonte de dados, selecione a Kms Region onde reside o segredo genérico do KMS e escolha o segredo genérico alvo na KMS List. O conteúdo de um segredo genérico do KMS suporta os dois formatos JSON a seguir:

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

    Após a alteração do conteúdo de um segredo genérico do KMS, o DataWorks mantém o segredo em cache por até 5 minutos. O novo segredo entra em vigor em, no máximo, 5 minutos.

Version

Faça login no servidor MySQL e execute a consulta SELECT VERSION() para verificar o número da versão.

Authentication Method

Selecione sem autenticação ou autenticação SSL. Se optar pela autenticação SSL, certifique-se de que ela também esteja ativada na instância. Prepare o arquivo de certificado e faça upload dele em Authentication File Management.

Advanced Parameters

Parameter: Selecione um parâmetro suportado na lista suspensa, por exemplo, connectTimeout.

Value: Insira um valor apropriado para o parâmetro selecionado, por exemplo, 3000.

A URL JDBC será então atualizada automaticamente para: jdbc:mysql://192.168.90.28:3306/test?connectTimeout=3000.

Por exemplo, se encontrar erros relacionados a fuso horário ou precisar especificar um fuso horário, clique em Add Property, selecione serverTimezone como parâmetro e insira o fuso horário desejado, como Asia/Shanghai. Salve a configuração da fonte de dados e execute a tarefa novamente.

Importante

Certifique-se de que o grupo de recursos do DataWorks possa se conectar ao banco de dados. Caso contrário, as tarefas subsequentes falharão. A configuração de rede depende do ambiente do banco de dados e do modo de conexão da fonte de dados. Para mais informações, consulte Testar conectividade.

Fluxo de trabalho de sincronização MySQL

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

Configurar sincronização offline de tabela única

Configurar sincronização em tempo real de tabela única

Consulte Configuração de tarefa de sincronização em tempo real (Legado) para ver o procedimento.

Configurar sincronização de banco de dados completo

Consulte Configuração de tarefa de sincronização em tempo real de banco de dados completo para ver o procedimento.

Perguntas frequentes

Para outros problemas comuns do Data Integration, consulte Perguntas frequentes do Data Integration.

Apêndice: Exemplos de scripts MySQL e parâmetros

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

Para configurar uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script de acordo com os requisitos unificados de formato de script. Para mais informações, consulte Configuração no modo script. As informações a seguir descrevem os parâmetros que devem ser configurados para fontes de dados ao utilizar o editor de código para uma tarefa de sincronização em lote.

Exemplos de script do Reader

Os exemplos a seguir mostram configurações para uma única tabela em um único banco de dados e para tabelas fragmentadas.

Nota

Os comentários nos exemplos JSON a seguir servem apenas para fins de demonstração. Remova-os antes de executar o script.

  • Tabela única em banco de dados único

    {
      "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"
          }
        ]
      }
    }
  • Tabelas fragmentadas

    Nota

    O MySQL Reader pode ler dados de várias tabelas MySQL com o mesmo esquema. Neste contexto, "tabelas fragmentadas" refere-se a um cenário onde dados de múltiplas tabelas de origem são gravados em uma única tabela de destino. Para sincronizar tabelas fragmentadas no nível do banco de dados, crie uma tarefa no Data Integration e selecione o recurso de fragmentação de banco de dados completo.

    {
      "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 do Reader

Parâmetro

Descrição

Obrigatório

Padrão

datasource

Nome da fonte de dados de leitura. Deve corresponder a uma fonte de dados configurada no editor de código.

Sim

Nenhum

table

Nome da tabela de origem a ser sincronizada. Uma tarefa do Data Integration só pode ler dados de uma tabela lógica por vez.

Os exemplos a seguir mostram como usar padrões avançados para o parâmetro table:

  • É possível ler de tabelas fragmentadas especificando um intervalo. Por exemplo, 'table_[0-99]' lê de 'table_0', 'table_1', 'table_2', até 'table_99'.

  • Se os sufixos numéricos nos nomes das suas tabelas tiverem comprimento consistente, por exemplo, 'table_000', 'table_001' e 'table_002' até 'table_999', configure como '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]'.

Nota

A tarefa lê as colunas especificadas no parâmetro column de todas as tabelas que correspondem ao padrão. A tarefa falhará se uma tabela correspondente ou uma coluna especificada não existir.

Sim

Nenhum

column

Array JSON que especifica as colunas a serem lidas da tabela de origem. Para selecionar todas as colunas, use ["*"].

  • Seleção de colunas: Exporte um subconjunto de colunas.

  • Reordenação de colunas: Exporte colunas em uma ordem diferente do esquema da tabela.

  • Valores constantes: Configure valores constantes seguindo a sintaxe SQL do MySQL. Exemplo: ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3",true].

    • id é um nome de coluna comum.

    • table é um nome de coluna que é uma palavra-chave reservada.

    • 1 é uma constante inteira.

    • 'mingya.wmy' é uma constante string. Deve estar entre aspas simples.

    • Tratamento de valores null:

      • " " representa uma string contendo um único espaço.

      • null representa um valor NULL.

      • 'null' representa a string literal "null".

    • to_char(a+1) é uma função de conversão de string.

    • 2.3 é um número de ponto flutuante.

    • true é um valor booleano.

  • Especifique explicitamente as colunas no parâmetro column. Ele não pode estar vazio.

Sim

Nenhum

splitPk

Quando o MySQL Reader extrai dados, especificar o parâmetro splitPk habilita a fragmentação de dados no campo especificado. O Data Integration então inicia tarefas concorrentes para melhorar a eficiência da sincronização.

  • Para melhor desempenho, use a chave primária da tabela como splitPk.

  • Atualmente, splitPk suporta divisão de dados apenas para tipos inteiros. Não há suporte para outros tipos, como string, ponto flutuante ou data. Se especificar um tipo de dados não suportado, o recurso splitPk será ignorado e um único canal será usado para sincronização.

  • Se splitPk não for especificado ou seu valor estiver vazio, a tabela será sincronizada através de um único canal.

Não

Nenhum

splitFactor

Fator de fragmentação. Controla quantos shards são criados. Se a concorrência estiver ativada, os dados serã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 simultâneas.

Nota

Intervalo recomendado: 1 a 100. Um valor muito alto pode causar erro de falta de memória (OOM).

Não

5

where

Condição de filtro. Em um cenário típico, para sincronizar apenas os dados do dia atual, defina a condição where como gmt_create > $bizdate.

  • A cláusula where permite realizar sincronização incremental de forma eficaz. Se não especificar a instrução where, incluindo não fornecer chave ou valor para where, a sincronização será tratada como sincronização completa de dados.

  • Não utilize cláusulas como LIMIT 10, pois elas não são válidas em uma cláusula WHERE do MySQL.

Não

Nenhum

querySql (Disponível apenas no editor de código; não suportado na interface visual.)

Em alguns casos, o parâmetro where é insuficiente para a filtragem necessária. Use este parâmetro para definir uma consulta SQL personalizada. Quando configurado, o sistema ignora os parâmetros tables, columns e splitPk e usa esta consulta diretamente. Por exemplo, para sincronizar dados de um join de múltiplas tabelas, use select a,b from table_a join table_b on table_a.id = table_b.id. O parâmetro querySql tem prioridade sobre table, column, where e splitPk. O datasource é usado para analisar informações como nome de usuário e senha.

Nota

O parâmetro querySql diferencia maiúsculas de minúsculas. Por exemplo, querysql (minúsculas) não terá efeito.

Não

Nenhum

useSpecialSecret

Especifica se deve usar a senha individual de cada fonte de dados quando múltiplas fontes forem configuradas. Valores válidos:

  • true

  • false

Se múltiplas fontes de dados tiverem nomes de usuário e senhas diferentes, defina este parâmetro como true para usar as credenciais de cada respectiva fonte de dados.

Não

false

Exemplo de script do 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 do Writer

Parâmetro

Descrição

Obrigatório

Padrão

datasource

Nome da fonte de dados de destino. Deve corresponder a uma fonte de dados configurada no editor de código.

Sim

Nenhum

table

Nome da tabela de destino.

Sim

Nenhum

writeMode

Modo de escrita. As opções suportadas correspondem às instruções MySQL INSERT INTO, ON DUPLICATE KEY UPDATE e REPLACE INTO:

  • insert: Se ocorrer conflito de chave primária ou índice único, a tarefa não grava as linhas conflitantes e as registra como dados incorretos.

    Se configurar a tarefa no modo script, defina writeMode como insert.

  • on duplicate key update: Se não houver conflito de chave primária ou índice único, comporta-se igual a insert into. Se houver conflito, atualiza os valores dos campos especificados com os valores da nova linha e grava os dados no MySQL.

    Se configurar a tarefa no modo script, defina writeMode como update.

  • replace into: Quando não há conflito de chave primária ou índice único, comporta-se igual a insert into. Se houver conflito, primeiro exclui a linha original e depois insere a nova linha. Isso significa que a nova linha substitui todos os campos da linha original.

    Se configurar a tarefa no modo script, defina writeMode como replace.

Não

insert

nullMode

Especifica a política para tratar valores NULL da origem. Valores válidos:

  • writeNull: Se um campo de origem for NULL, um valor NULL será gravado no campo de destino.

  • skipNull: Se um campo de origem for NULL, o campo de destino é omitido na operação de escrita, permitindo que o valor padrão do banco de dados seja aplicado. Se nenhum valor padrão estiver definido, o resultado geralmente será NULL. Especifique as colunas aplicáveis no parâmetro skipNullColumn.

Importante

Quando configurado como skipNull, a tarefa constrói dinamicamente instruções SQL para escrita de dados visando suportar valores padrão no destino. Isso aumenta o número de operações FLUSH e reduz a velocidade de sincronização. No pior cenário, a tarefa executará FLUSH uma vez para cada registro de dados.

Não

writeNull

skipNullColumn

Quando nullMode está definido como skipNull, as colunas especificadas por este parâmetro não são forçadas a NULL. Em vez disso, seus respectivos valores padrão são usados, se disponíveis.

Formato: ["c1","c2",...]. As colunas especificadas, como c1 e c2, devem ser um subconjunto das colunas definidas no parâmetro column.

Não

Todas as colunas configuradas para a tarefa.

column

Colunas de destino para escrita, especificadas como um array JSON de strings. Exemplo: "column":["id","name","age"]. Para gravar em todas as colunas na ordem do esquema, use um asterisco (). Exemplo: "column":[""].

Sim

Nenhum

preSql

Uma ou mais instruções SQL a serem executadas antes do início da tarefa de sincronização. A interface visual suporta apenas uma instrução, enquanto o editor de código suporta várias. Por exemplo, limpe dados existentes de uma tabela: TRUNCATE TABLE tablename.

Nota

Não há suporte para transações em múltiplas instruções SQL.

Não

Nenhum

postSql

Uma ou mais instruções SQL a serem executadas após a conclusão da tarefa de sincronização. A interface visual suporta apenas uma instrução, enquanto o editor de código suporta várias. Por exemplo, adicione uma coluna de timestamp usando a seguinte instrução: ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Nota

Não há suporte para transações em múltiplas instruções SQL.

Não

Nenhum

batchSize

Número de registros por lote de escrita. Valores maiores reduzem idas e vindas na rede e podem melhorar o throughput, mas definir um valor muito alto pode causar erro de falta de memória (OOM).

Não

256

updateColumn

Quando writeMode está definido como update, este parâmetro especifica quais colunas atualizar quando ocorrer conflito de chave primária ou índice único. Especifique as colunas em um array JSON. Exemplo: "updateColumn":["name","age"].

Não

Nenhum