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.
ImportantSi 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
|
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.
-
Facultatif : Créez un compte.
Pour obtenir des instructions détaillées, consultez la page Créer un compte MySQL.
-
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,DELETEetUPDATE) sur les tables que vous souhaitez synchroniser.
RemarqueSi 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
SELECTau compte. Les autorisationsINSERT,DELETEetUPDATEne 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 SLAVEetREPLICATION CLIENTsur la base de données.
Exécutez les commandes suivantes pour accorder les autorisations requises. Vous pouvez également accorder l'autorisation
SUPERau 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 tableuserde la base de donnéestest, exécutez la commande suivante :GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.RemarqueL'autorisation
REPLICATION SLAVEest 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.
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.
-
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 :
Pour MySQL open source, consultez la documentation officielle de MySQL pour obtenir des instructions sur l'activation du journal binaire.
Pour RDS for MySQL, consultez la rubrique Sauvegarder une instance ApsaraDB RDS for MySQL pour obtenir des instructions sur l'activation du journal binaire.
Pour PolarDB for MySQL, consultez la rubrique Activer ou désactiver la journalisation binaire pour obtenir des instructions sur l'activation du journal binaire.
-
-
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.
ImportantLa 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. -
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.
ImportantLa 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
Connectez-vous à la console Resource Access Management (RAM), accédez à la page Users et recherchez l'utilisateur RAM cible.
Dans la colonne Operations, cliquez sur Attach Policy.
-
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
-
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é.
-
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
-
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 |
|
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 :
|
|
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 :
|
|
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 |
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 |
|
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 :
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 :
|
|
Version |
Connectez-vous au serveur MySQL et exécutez la requête |
|
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 Valeur : Saisissez une valeur appropriée pour le paramètre sélectionné, par exemple L'URL JDBC est ensuite automatiquement mise à jour vers : 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 |
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
Consultez les rubriques Configuration en mode Assistant et Configuration en mode Script pour connaître la procédure.
Consultez la rubrique Annexe : Exemple de script MySQL et référence des paramètres pour obtenir tous les paramètres du mode script et un exemple de script.
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
Erreur lors de la synchronisation en temps réel depuis une source de données MySQL
Pourquoi la synchronisation en temps réel pour une source de données MySQL ralentit-elle ?
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.
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
RemarqueLe 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
Remarque
La tâche lit les colonnes spécifiées dans le paramètre |
Oui |
Aucune |
|
column |
Tableau JSON spécifiant les colonnes à lire depuis la table source. Pour sélectionner toutes les colonnes, utilisez
|
Oui |
Aucune |
|
splitPk |
Lorsque MySQL Reader extrait des données, la spécification du paramètre
|
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 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
|
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 Remarque
Le paramètre |
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 :
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
|
Non |
insert |
|
nullMode |
Spécifie la politique de gestion des valeurs NULL provenant de la source. Valeurs possibles :
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 à Format : |
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 : |
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 : 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 : 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 |
Non |
Aucune |