Tous les produits
Search
Centre de documentation

DataWorks:Source de données MySQL

Dernière mise à jour :Aug 10, 2026

Une source de données MySQL fournit des canaux de lecture et d'écriture bidirectionnels pour synchroniser les données avec les bases de données MySQL via Data Integration.

Versions MySQL prises en charge

  • Lecture et écriture hors ligne :

    Prend en charge MySQL 5.5.x, 5.6.x, 5.7.x et 8.0.x. Compatible avec Amazon RDS for MySQL, Azure Database for MySQL et Amazon Aurora MySQL.

    La synchronisation hors ligne permet la lecture à partir de vues.

  • Lecture en temps réel :

    Data Integration utilise l'abonnement en temps réel pour lire les données depuis MySQL. Il prend en charge la synchronisation en temps réel des versions MySQL 5.5.x, 5.6.x, 5.7.x et 8.0.x, mais ne prend pas en charge les nouvelles fonctionnalités de MySQL 8.0, telles que l'index fonctionnel. Cette fonctionnalité est également compatible avec Amazon RDS for MySQL, Azure Database for MySQL et Amazon Aurora MySQL.

    Important

    Si vous devez synchroniser des données depuis DRDS, ne le configurez pas comme source de données MySQL. Configurez-le directement comme source de données DRDS. Pour obtenir des instructions, consultez la rubrique Configurer une source de données DRDS.

Limitations

Synchronisation en temps réel

  • Vous ne pouvez pas synchroniser les données depuis des instances en lecture seule MySQL exécutant une version antérieure à la 5.6.x.

  • La synchronisation des tables contenant des index fonctionnels n'est pas prise en charge.

  • XA ROLLBACK n'est pas pris en charge.

    Pour les transactions dans l'état XA PREPARE, la synchronisation en temps réel écrit les données dans la destination. Si une commande XA ROLLBACK est émise, la synchronisation en temps réel n'annule pas les données préparées. Pour gérer ce scénario, vous devez supprimer manuellement la table de la tâche de synchronisation en temps réel, puis l'ajouter à nouveau pour relancer la synchronisation.

  • Le format du journal binaire du serveur MySQL doit être défini sur ROW.

  • La synchronisation en temps réel ne synchronise pas les suppressions en cascade dans les tables associées.

  • Pour les bases de données Amazon Aurora MySQL, vous devez vous connecter à votre instance principale/rédacteur. Vous ne pouvez pas activer la fonctionnalité Binlog sur les réplicas de lecture Aurora MySQL, et les tâches de synchronisation en temps réel nécessitent Binlog pour les mises à jour incrémentielles.

  • Pour les modifications DDL en ligne des tables MySQL, la synchronisation en temps réel prend uniquement en charge l'ajout de colonnes (Add Column) via Data Management Service (DMS).

  • La lecture des procédures stockées depuis MySQL n'est pas prise en charge.

Synchronisation hors ligne

  • Lorsque vous utilisez le plug-in MySQL Reader pour synchroniser plusieurs tables depuis une base de données fragmentée, vous devez définir la concurrence sur une valeur supérieure au nombre de tables pour activer le fractionnement des tables. Sinon, le système crée une tâche par table.

  • La lecture des procédures stockées depuis MySQL n'est pas prise en charge.

Types de données pris en charge

Pour une liste complète des types de données MySQL dans chaque version, consultez la documentation officielle MySQL. Le tableau suivant répertorie le statut de prise en charge des principaux types de données, en prenant MySQL 8.0.x comme exemple.

|
**Type**
|
**Lecture hors ligne (MySQL Reader)**
|
**Écriture hors ligne (MySQL Writer)**
|
**Lecture en temps réel**
|
**Écriture en temps réel**
| | --- | --- | --- | --- | --- | |
TINYINT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
SMALLINT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
INTEGER
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
BIGINT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
FLOAT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
DOUBLE
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
DECIMAL/NUMERIC
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
REAL
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
VARCHAR
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
JSON
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
TEXT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
MEDIUMTEXT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
LONGTEXT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
VARBINARY
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
BINARY
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
TINYBLOB
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
MEDIUMBLOB
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
LONGBLOB
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
ENUM
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
SET
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
BOOLEAN
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
BIT
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
DATE
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
DATETIME
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
TIMESTAMP
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
TIME
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
YEAR
|
Pris en charge
|
Pris en charge
|
Pris en charge
|
Pris en charge
| |
LINESTRING
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
POLYGON
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
MULTIPOINT
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
MULTILINESTRING
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
MULTIPOLYGON
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
| |
GEOMETRYCOLLECTION
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Non pris en charge
|
Remarque

Lorsque les données sont stockées dans une colonne DATE MySQL, MySQL normalise automatiquement la valeur de date au format yyyy-mm-dd. Par exemple, une valeur de date source au format yyyymmdd, telle que 20260423, est convertie en 2026-04-23. Il s'agit d'un mécanisme intégré à MySQL et il ne dépend pas des configurations des tâches de synchronisation DataWorks. Si vous devez conserver le format d'origine, modifiez le type de champ en VARCHAR dans la table de destination.





















































































































































































































































































































































Prérequis

Préparez votre environnement MySQL avant de l'ajouter en tant que source de données dans DataWorks afin de garantir le bon fonctionnement des tâches de synchronisation des données.

Respectez les prérequis suivants.

Vérifier la version MySQL

Data Integration prend uniquement en charge certaines versions MySQL. Pour plus d'informations, consultez la section Versions MySQL prises en charge. Vérifiez votre version MySQL en exécutant la commande suivante :

SELECT version();

Configurer les autorisations du compte

Nous vous recommandons de créer un compte MySQL dédié pour l'accès aux sources de données DataWorks.

  1. Facultatif : Créez un compte.

    Pour obtenir des instructions détaillées, consultez la page Créer un compte MySQL.

  2. Accordez les autorisations.

    • Synchronisation par lots

      Dans les scénarios de synchronisation par lots :

      • Pour lire les données depuis MySQL, le compte doit disposer de l'autorisation de lecture (SELECT) sur les tables que vous souhaitez synchroniser.

      • Pour écrire des données dans MySQL, le compte doit disposer des autorisations d'écriture (INSERT, DELETE et UPDATE) sur les tables que vous souhaitez synchroniser.

      Remarque

      Si vous devez uniquement lire les données de MySQL pour la synchronisation sans écrire de données en retour, il suffit d'accorder l'autorisation SELECT au compte. Les autorisations INSERT, DELETE et UPDATE ne sont pas requises pour une synchronisation en lecture seule.

    • Temps réel

      Dans les scénarios de synchronisation en temps réel, le compte doit disposer des autorisations SELECT, REPLICATION SLAVE et REPLICATION CLIENT sur la base de données.

    Exécutez les commandes suivantes pour accorder les autorisations requises. Vous pouvez également accorder l'autorisation SUPER au compte. Dans la commande ci-dessous, remplacez 'sync_account' par le nom du compte que vous avez créé.

    -- 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 syntaxe *.* accorde les autorisations sur toutes les tables de toutes les bases de données. Vous pouvez également accorder les autorisations sur une table spécifique dans une base de données donnée. Par exemple, pour accorder des autorisations sur la table user de la base de données test, exécutez la commande suivante : GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.

    Remarque

    L'autorisation REPLICATION SLAVE est une autorisation globale et ne peut pas être accordée pour une base de données ou une table spécifique.

Activer le journal binaire MySQL (pour la synchronisation en temps réel uniquement)

Data Integration effectue une synchronisation incrémentielle des données en temps réel en s'abonnant aux journaux binaires MySQL. Vous devez activer le journal binaire MySQL avant de configurer une tâche de synchronisation dans DataWorks.

Important
  • Tant qu'un journal binaire est consommé, la base de données ne peut pas le supprimer. Une latence élevée dans une tâche de synchronisation en temps réel peut retarder la suppression des journaux binaires, ce qui risque de saturer l'espace disque. Nous vous recommandons de configurer des alertes de latence pour votre tâche et de surveiller l'espace disque de la base de données.

  • Conservez les journaux binaires pendant au moins 72 heures. Si une tâche échoue et que les journaux binaires ne sont plus disponibles, vous ne pourrez pas réinitialiser le point de contrôle à une position antérieure à l'échec, ce qui entraînera une perte de données. Dans ce cas, vous devrez utiliser la synchronisation par lots pour remplir les données manquantes.

  1. Vérifiez si le journal binaire est activé.

    • Exécutez l'instruction suivante pour vérifier si le journal binaire est activé.

      SHOW variables LIKE "log_bin";

      Si la valeur renvoyée est ON, le journal binaire est activé.

    • Pour vérifier l'état du journal binaire sur une base de données réplica, exécutez l'instruction suivante.

      SHOW variables LIKE "log_slave_updates";

      Si la valeur renvoyée est ON, le journal binaire est activé sur la base de données réplica.

    Si la valeur renvoyée n'est pas celle attendue :

  2. Vérifiez le format du journal binaire.

    Exécutez l'instruction suivante pour vérifier le format du journal binaire.

    SHOW variables LIKE "binlog_format";

    Valeurs de retour possibles :

    • Une valeur de retour ROW indique que le format du journal binaire activé est ROW.

    • STATEMENT : Le format du journal binaire est STATEMENT.

    • MIXED : Le format du journal binaire est MIXED.

    Important

    La synchronisation en temps réel de DataWorks prend uniquement en charge le format ROW. Si la valeur renvoyée n'est pas ROW, vous devez modifier le paramètre binlog_format.

  3. Vérifiez si les images de ligne complètes sont journalisées.

    Exécutez l'instruction suivante pour vérifier le paramètre d'image de ligne.

    SHOW variables LIKE "binlog_row_image";

    Valeurs de retour possibles :

    • FULL : Les images de ligne complètes sont journalisées.

    • MINIMAL : Seules les images de ligne minimales sont journalisées, et non les images de ligne complètes.

    Important

    La synchronisation en temps réel de DataWorks prend uniquement en charge les serveurs MySQL pour lesquels les images de ligne complètes sont activées dans le journal binaire. Si la valeur renvoyée n'est pas FULL, vous devez modifier le paramètre binlog_row_image.

Configurer les autorisations de lecture des journaux binaires OSS

Lorsque vous ajoutez une source de données MySQL, si vous définissez le paramètre Configuration Mode sur ApsaraDB for RDS et que votre instance RDS for MySQL se trouve dans la même région que votre espace de travail DataWorks, vous pouvez activer l'option Read binlogs from OSS. DataWorks récupère alors les journaux binaires depuis OSS si l'accès direct aux journaux binaires RDS for MySQL échoue, évitant ainsi les interruptions des tâches de synchronisation en temps réel.

Si vous utilisez un Alibaba Cloud RAM User ou un Alibaba Cloud RAM Role comme OSS binlog access identity, vous devez également accorder les autorisations requises.

  • Utilisateur RAM

    1. Connectez-vous à la console Resource Access Management (RAM), accédez à la page Users et recherchez l'utilisateur RAM cible.

    2. Dans la colonne Operations, cliquez sur Attach Policy.

    3. Configurez les paramètres suivants et cliquez sur OK.

      • Scope : Alibaba Cloud account

      • Permission Policy : stratégie système

      • Policy Name : AliyunDataWorksAccessingRdsOSSBinlogPolicy

  • Rôle RAM

    1. Connectez-vous à la console Resource Access Management (RAM) et créez un rôle RAM. Pour plus d'informations, consultez la rubrique Créer un rôle RAM pour un compte Alibaba Cloud approuvé.

      Paramètres clés :

      • Select trusted entity : Alibaba Cloud account

      • Select account : Other Alibaba Cloud account. Saisissez l'ID du compte Alibaba Cloud propriétaire de l'espace de travail DataWorks.

      • Role name : Saisissez un nom personnalisé.

    2. Accordez des autorisations au rôle RAM. Pour plus d'informations, consultez la rubrique Accorder des autorisations à un rôle RAM.

      Paramètres clés :

      • Permission Policy : stratégie système

      • Policy Name : AliyunDataWorksAccessingRdsOSSBinlogPolicy

    3. Modifiez la stratégie d'approbation du rôle RAM. Pour plus d'informations, consultez la rubrique Modifier la stratégie d'approbation d'un rôle RAM.

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

Ajouter une source de données

Mode instance Alibaba Cloud

Si votre base de données MySQL s'exécute sur une instance RDS Alibaba Cloud, nous vous recommandons de créer la source de données en mode instance Alibaba Cloud. Configurez les paramètres comme suit :

Parameter

Description

Data Source Name

Le nom de la source de données doit être unique au sein de l'espace de travail. Nous vous recommandons d'utiliser un nom qui identifie clairement l'activité et l'environnement, par exemple rds_mysql_order_dev.

Connection Mode

Sélectionnez le mode instance Alibaba Cloud. Pour plus d'informations sur les modes de connexion, consultez les rubriques Scénario 1 : Mode instance (compte cloud actuel) et Scénario 2 : Mode instance (autre compte cloud).

Alibaba Cloud Account

Sélectionnez le compte cloud auquel appartient l'instance. Si vous choisissez Another Alibaba Cloud Account, vous devez configurer les autorisations inter-comptes. Pour plus d'informations, consultez la rubrique Autorisation inter-comptes (RDS, Hive ou Kafka).

Si vous sélectionnez un autre compte cloud, fournissez les informations suivantes :

  • ID du compte principal : ID du compte principal propriétaire de l'instance.

  • Nom du rôle RAM : Nom du rôle RAM fourni par l'autre compte cloud. Ce rôle doit disposer des autorisations nécessaires pour accéder à l'instance cible.

Region

Région de l'instance.

Instance

Sélectionnez le nom de l'instance à laquelle se connecter.

Standby library settings

Si votre instance RDS dispose d'une instance en lecture seule (instance de secours), vous pouvez configurer les tâches afin qu'elles lisent les données depuis celle-ci. Cela permet d'éviter que les opérations de lecture n'affectent les performances de l'instance principale.

Instance Address

Après avoir sélectionné l'instance appropriée, cliquez sur Get Latest Address pour afficher des informations telles que son adresse publique/privée, son VPC et son vSwitch.

Database

Nom de la base de données à laquelle la source de données se connecte. Assurez-vous que l'utilisateur spécifié dispose des autorisations requises pour accéder à cette base de données.

Corresponding access identity

Sélectionnez la source d'identifiants que DataWorks utilise pour accéder à MySQL. Les options suivantes sont prises en charge :

  • Nom d'utilisateur et mot de passe : Saisissez le nom d'utilisateur et le mot de passe de la base de données MySQL. DataWorks les stocke avec un chiffrement symétrique. Si vous utilisez une instance RDS, vous pouvez les créer et les gérer dans la section account management de l'instance.

  • Key Management Service : Utilisez un secret générique hébergé dans Alibaba Cloud Key Management Service (KMS). Vous devez d'abord créer un secret générique dans KMS. Pour plus d'informations, consultez la rubrique Gérer et utiliser des secrets génériques. Ensuite, dans la source de données, sélectionnez la Région KMS où réside le secret générique KMS, puis sélectionnez le secret générique cible dans la Liste KMS. Le contenu d'un secret générique KMS prend en charge les deux formats JSON suivants :

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

    Après modification du contenu d'un secret générique KMS, DataWorks met en cache le secret pendant 5 minutes maximum. Le nouveau secret devient effectif au bout de 5 minutes au plus tard.

Prise en charge de la lecture des binlogs OSS

Si cette option est activée, DataWorks tente de récupérer les binlogs depuis OSS lorsque les binlogs RDS sont inaccessibles. Cela permet d'éviter les interruptions des tâches de synchronisation en temps réel. Pour plus d'informations, consultez la rubrique Configurer l'autorisation de lecture des binlogs OSS. Définissez l'Identité d'accès aux binlogs OSS en fonction de votre configuration d'autorisation.

Authentication Method

Sélectionnez « Aucune authentification » ou l'authentification SSL. Si vous optez pour l'authentification SSL, assurez-vous qu'elle est également activée sur l'instance. Préparez le fichier de certificat et téléchargez-le dans la section Authentication File Management.

Version

Connectez-vous au serveur MySQL et exécutez la requête SELECT VERSION() pour vérifier le numéro de version.

Mode chaîne de connexion

Vous pouvez également utiliser le mode chaîne de connexion pour créer une source de données afin de bénéficier d'une plus grande flexibilité. Configurez les paramètres comme suit :

Parameter

Description

Data Source Name

Le nom de la source de données doit être unique au sein de l'espace de travail. Nous vous recommandons d'utiliser un nom qui identifie clairement l'activité et l'environnement, par exemple rds_mysql_order_dev.

Connection Mode

Sélectionnez User-created Data Store with Public IP Addresses. Dans ce mode, une URL JDBC est utilisée pour se connecter à la base de données.

Aperçu de la chaîne de connexion

Après avoir saisi l'adresse de connexion et le nom de la base de données, DataWorks génère automatiquement un aperçu de l'URL JDBC.

Connection Address

Adresse hôte : Saisissez l'adresse d'accès réelle du serveur de base de données. Assurez-vous que l'adresse est accessible depuis le groupe de ressources DataWorks. Voici quelques scénarios courants :

  • Accès au sein du même VPC : Saisissez l'adresse IP interne (privée).

  • Accès via Internet ou via une passerelle NAT : Saisissez l'adresse IP publique ou les adresses IP NAT.

Si la base de données est une instance RDS Alibaba Cloud, vous trouverez l'adresse sur la page Database Connection dans les détails de l'instance.

Numéro de port : Port de la base de données. La valeur par défaut est 3306.

Database Name

Nom de la base de données à laquelle la source de données se connecte. Assurez-vous que l'utilisateur spécifié dispose des autorisations requises pour accéder à cette base de données.

Corresponding access identity

Sélectionnez la source d'identifiants que DataWorks utilise pour accéder à MySQL. Les options suivantes sont prises en charge :

  • Nom d'utilisateur et mot de passe : Saisissez le nom d'utilisateur et le mot de passe de la base de données MySQL. DataWorks les stocke avec un chiffrement symétrique. Si vous utilisez une instance RDS, vous pouvez les créer et les gérer dans la section account management de l'instance.

  • Key Management Service : Utilisez un secret générique hébergé dans Alibaba Cloud Key Management Service (KMS). Vous devez d'abord créer un secret générique dans KMS. Pour plus d'informations, consultez la rubrique Gérer et utiliser des secrets génériques. Ensuite, dans la source de données, sélectionnez la Région KMS où réside le secret générique KMS, puis sélectionnez le secret générique cible dans la Liste KMS. Le contenu d'un secret générique KMS prend en charge les deux formats JSON suivants :

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

    Après modification du contenu d'un secret générique KMS, DataWorks met en cache le secret pendant 5 minutes maximum. Le nouveau secret devient effectif au bout de 5 minutes au plus tard.

Version

Connectez-vous au serveur MySQL et exécutez la requête SELECT VERSION() pour vérifier le numéro de version.

Authentication Method

Sélectionnez « Aucune authentification » ou l'authentification SSL. Si vous optez pour l'authentification SSL, assurez-vous qu'elle est également activée sur l'instance. Préparez le fichier de certificat et téléchargez-le dans la section Authentication File Management.

Advanced Parameters

Paramètre : Sélectionnez un paramètre pris en charge dans la liste déroulante, par exemple connectTimeout.

Valeur : Saisissez une valeur appropriée pour le paramètre sélectionné, par exemple 3000.

L'URL JDBC est ensuite automatiquement mise à jour vers : jdbc:mysql://192.168.90.28:3306/test?connectTimeout=3000.

Par exemple, si vous rencontrez des erreurs liées au fuseau horaire ou si vous devez spécifier un fuseau horaire, cliquez sur Add Property, sélectionnez serverTimezone comme paramètre et saisissez le fuseau horaire cible, tel que Asia/Shanghai. Enregistrez la configuration de la source de données et relancez la tâche.

Important

Assurez-vous que le groupe de ressources DataWorks peut se connecter à la base de données. Sinon, les tâches ultérieures échoueront. La configuration réseau dépend de l'environnement de la base de données et du mode de connexion de la source de données. Pour plus d'informations, consultez Tester la connectivité.

Flux de travail de synchronisation MySQL

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Configurer la synchronisation hors ligne d'une table unique

Configurer la synchronisation en temps réel d'une table unique

Consultez la rubrique Configuration des tâches de synchronisation en temps réel (héritage) pour connaître la procédure.

Configurer la synchronisation de base de données complète

Consultez la rubrique Configuration des tâches de synchronisation en temps réel de base de données complète pour connaître la procédure.

FAQ

Pour d'autres problèmes courants liés à Data Integration, consultez la rubrique FAQ Data Integration.

Annexe : Exemples de scripts MySQL et paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez configurer les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, consultez la rubrique Configuration en mode Script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemples de scripts Reader

Les exemples suivants montrent des configurations pour une table unique dans une base de données unique et pour des tables fragmentées.

Remarque

Les commentaires dans les exemples JSON suivants sont fournis à titre d'illustration uniquement. Supprimez les commentaires avant d'exécuter le script.

  • Table unique dans une base de données unique

    {
      "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"
          }
        ]
      }
    }
  • Tables fragmentées

    Remarque

    Le composant MySQL Reader peut lire des données provenant de plusieurs tables MySQL ayant le même schéma. Dans ce contexte, le terme « tables fragmentées » fait référence à un scénario où les données de plusieurs tables sources sont écrites dans une seule table de destination. Pour synchroniser des tables fragmentées au niveau de la base de données, créez une tâche dans Data Integration et sélectionnez la fonctionnalité de fragmentation de base de données complète.

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

Paramètres du lecteur

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données à lire. Ce nom doit correspondre à une source de données configurée dans l'éditeur de code.

Oui

Aucune

table

Nom de la table source à synchroniser. Une tâche Data Integration ne peut lire les données que d'une seule table logique.

Les exemples suivants illustrent l'utilisation de motifs avancés pour le paramètre table :

  • Vous pouvez lire des tables partitionnées en spécifiant une plage. Par exemple, 'table_[0-99]' lit les données des tables 'table_0', 'table_1', 'table_2', jusqu'à 'table_99'.

  • Si les suffixes numériques de vos noms de table ont une longueur constante, par exemple 'table_000', 'table_001' et 'table_002' jusqu'à 'table_999', vous pouvez configurer le paramètre comme suit : '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]'.

Remarque

La tâche lit les colonnes spécifiées dans le paramètre column depuis toutes les tables correspondant au motif. La tâche échoue si une table correspondante ou une colonne spécifiée n'existe pas.

Oui

Aucune

column

Tableau JSON spécifiant les colonnes à lire depuis la table source. Pour sélectionner toutes les colonnes, utilisez ["*"].

  • Élagage des colonnes : Vous pouvez exporter un sous-ensemble de colonnes.

  • Réorganisation des colonnes : Vous pouvez exporter les colonnes dans un ordre différent de celui du schéma de la table.

  • Valeurs constantes : Vous pouvez configurer des valeurs constantes. Ces valeurs doivent respecter la syntaxe SQL MySQL. Exemple : ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3",true].

    • id est un nom de colonne standard.

    • table est un nom de colonne qui correspond à un mot-clé réservé.

    • 1 est une constante entière.

    • 'mingya.wmy' est une constante de type chaîne. Elle doit être entourée de guillemets simples.

    • Gestion des valeurs null :

      • " " représente une chaîne contenant un seul espace.

      • null représente une valeur NULL.

      • 'null' représente la chaîne littérale « null ».

    • to_char(a+1) est une fonction de conversion de chaîne.

    • 2.3 est un nombre à virgule flottante.

    • true est une valeur booléenne.

  • Vous devez spécifier explicitement les colonnes dans le paramètre column. Ce paramètre ne peut pas être vide.

Oui

Aucune

splitPk

Lorsque MySQL Reader extrait des données, la spécification du paramètre splitPk active le partitionnement des données sur le champ indiqué. Data Integration lance ensuite des tâches concurrentes pour améliorer l'efficacité de la synchronisation.

  • Pour des performances optimales, utilisez la clé primaire de la table comme splitPk.

  • Actuellement, splitPk prend uniquement en charge le fractionnement des données pour les types entiers. Il ne prend pas en charge les autres types tels que les chaînes, les nombres à virgule flottante ou les dates. Si vous spécifiez un type de données non pris en charge, la fonctionnalité splitPk est ignorée et un seul canal est utilisé pour la synchronisation.

  • Si splitPk n'est pas spécifié ou si sa valeur est vide, la table est synchronisée via un seul canal.

Non

Aucune

splitFactor

Facteur de partitionnement. Ce paramètre contrôle le nombre de partitions créées. Si la concurrence est activée, les données sont divisées en concurrency × splitFactor partitions. Par exemple, si la concurrence est de 5 et que splitFactor est de 5, les données sont divisées en 25 partitions traitées par 5 threads simultanés.

Remarque

Plage recommandée : 1 à 100. Une valeur trop élevée peut provoquer une erreur de mémoire insuffisante (OOM).

Non

5

where

Condition de filtrage. Dans un scénario typique, pour synchroniser uniquement les données du jour en cours, vous pouvez définir la condition where sur gmt_create > $bizdate.

  • La clause where vous permet d'effectuer efficacement une synchronisation incrémentielle. Si vous ne spécifiez pas l'instruction where, y compris en omettant de fournir une clé ou une valeur pour where, la synchronisation des données est traitée comme une synchronisation complète.

  • N'utilisez pas de clauses telles que LIMIT 10, car elles ne sont pas valides dans une clause WHERE MySQL.

Non

Aucune

querySql (Disponible uniquement dans l'éditeur de code ; non pris en charge dans l'interface sans code.)

Dans certains cas d'utilisation, le paramètre where est insuffisant pour le filtrage requis. Utilisez ce paramètre pour définir une requête SQL personnalisée. Lorsqu'il est configuré, le système ignore les paramètres tables, columns et splitPk et utilise directement cette requête. Par exemple, pour synchroniser des données issues d'une jointure entre plusieurs tables, utilisez select a,b from table_a join table_b on table_a.id = table_b.id. Le paramètre querySql est prioritaire sur table, column, where et splitPk. La datasource est utilisée pour analyser les informations telles que le nom d'utilisateur et le mot de passe.

Remarque

Le paramètre querySql est sensible à la casse. Par exemple, querysql (en minuscules) ne prendra pas effet.

Non

Aucune

useSpecialSecret

Indique s'il faut utiliser le mot de passe de chaque source de données individuelle lorsque plusieurs sources de données sont configurées. Valeurs possibles :

  • true

  • false

Si plusieurs sources de données possèdent des noms d'utilisateur et des mots de passe différents, définissez ce paramètre sur true pour utiliser les identifiants de chaque source de données respective.

Non

false

Exemple de script 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"
      }
    ]
  }
}

Paramètres du Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Nom de la source de données de destination. Ce nom doit correspondre à une source de données configurée dans l'éditeur de code.

Oui

Aucune

table

Nom de la table de destination.

Oui

Aucune

writeMode

Mode d'écriture. Les options prises en charge correspondent aux instructions MySQL INSERT INTO, ON DUPLICATE KEY UPDATE et REPLACE INTO :

  • insert : En cas de conflit avec une clé primaire ou un index unique, la tâche n'écrit pas les lignes concernées et les enregistre en tant que données erronées.

    Si vous configurez la tâche en mode script, définissez writeMode sur insert.

  • on duplicate key update : En l'absence de conflit avec une clé primaire ou un index unique, l'instruction se comporte comme insert into. En cas de conflit, l'instruction met à jour les valeurs des champs spécifiés avec celles de la nouvelle ligne et écrit les données dans MySQL.

    Si vous configurez la tâche en mode script, définissez writeMode sur update.

  • replace into : En l'absence de conflit avec une clé primaire ou un index unique, le comportement est identique à insert into. En cas de conflit, la ligne originale est d'abord supprimée, puis la nouvelle ligne est insérée. Cela signifie que la nouvelle ligne remplace tous les champs de la ligne originale.

    Si vous configurez la tâche en mode script, définissez writeMode sur replace.

Non

insert

nullMode

Spécifie la politique de gestion des valeurs NULL provenant de la source. Valeurs possibles :

  • writeNull : Si un champ source est NULL, une valeur NULL est écrite dans le champ de destination.

  • skipNull : Si un champ source est NULL, le champ de destination est omis lors de l'opération d'écriture, permettant l'application de la valeur par défaut de la base de données. Si aucune valeur par défaut n'est définie, le résultat est généralement NULL. Vous devez spécifier les colonnes applicables dans le paramètre skipNullColumn.

Important

Lorsqu'il est configuré sur skipNull, la tâche construit dynamiquement des instructions SQL pour l'écriture des données afin de prendre en charge les valeurs par défaut à destination. Cela augmente le nombre d'opérations FLUSH et réduit la vitesse de synchronisation. Dans le pire des cas, la tâche effectuera une opération FLUSH pour chaque enregistrement de données.

Non

writeNull

skipNullColumn

Lorsque nullMode est défini sur skipNull, les colonnes spécifiées par ce paramètre ne sont pas forcées à NULL. Leurs valeurs par défaut respectives sont utilisées si elles sont disponibles.

Format : ["c1","c2",...]. Les colonnes spécifiées, telles que c1 et c2, doivent constituer un sous-ensemble des colonnes définies dans le paramètre column.

Non

Toutes les colonnes configurées pour la tâche.

column

Colonnes de destination vers lesquelles écrire, spécifiées sous forme de tableau JSON de chaînes. Exemple : "column":["id","name","age"]. Pour écrire dans toutes les colonnes selon l'ordre du schéma, utilisez un astérisque (). Exemple : "column":[""].

Oui

Aucune

preSql

Une ou plusieurs instructions SQL à exécuter avant le début de la tâche de synchronisation. L'interface sans code ne prend en charge qu'une seule instruction, tandis que l'éditeur de code en prend en charge plusieurs. Par exemple, vous pouvez effacer les données existantes d'une table : TRUNCATE TABLE tablename.

Remarque

Les transactions ne sont pas prises en charge pour plusieurs instructions SQL.

Non

Aucune

postSql

Une ou plusieurs instructions SQL à exécuter après l'achèvement de la tâche de synchronisation. L'interface sans code ne prend en charge qu'une seule instruction, tandis que l'éditeur de code en prend en charge plusieurs. Par exemple, vous pouvez ajouter une colonne d'horodatage à l'aide de l'instruction suivante : ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Remarque

Les transactions ne sont pas prises en charge pour plusieurs instructions SQL.

Non

Aucune

batchSize

Nombre d'enregistrements par lot d'écriture. Des valeurs plus élevées réduisent les allers-retours réseau et peuvent améliorer le débit, mais une valeur trop élevée peut provoquer une erreur de mémoire insuffisante (OOM).

Non

256

updateColumn

Lorsque writeMode est défini sur update, ce paramètre spécifie les colonnes à mettre à jour en cas de conflit avec une clé primaire ou un index unique. Spécifiez les colonnes dans un tableau JSON. Exemple : "updateColumn":["name","age"].

Non

Aucune