Tous les produits
Search
Centre de documentation

DataWorks:Configure a sharding batch synchronization task

Dernière mise à jour :Sep 21, 2026

DataWorks vous permet de configurer une tâche de synchronisation par lots en mode assistant ou en mode script pour synchroniser les données provenant de bases de données et de tables fragmentées vers une table de destination unique. Cette rubrique présente un exemple de synchronisation de données à partir de bases de données MySQL fragmentées.

Prérequis

Préparez les sources de données pour la synchronisation. Pour plus d'informations, consultez la section Sources de données prises en charge et plug-ins de lecture/écriture.

Vue d'ensemble

Plusieurs méthodes permettent de créer une tâche de synchronisation par lots pour les données fragmentées. Le tableau ci-dessous compare ces approches.

Élément

Source de données fragmentée et interface sans code (recommandé)

Source de données standard et interface sans code

Éditeur de code

Prise en charge de l'interface sans code

Oui

Oui

Non

Configuration des noms de table basée sur des règles

Permet de configurer les noms des tables source à l'aide d'expressions régulières. Lors de l'exécution, la tâche recherche et synchronise les tables correspondantes.

Non pris en charge.

Permet de configurer les noms de table à l'aide d'une plage numérique, par exemple tb_[1-10]. La plage doit être séquentielle et chaque table de la plage doit exister.

Schémas de table identiques requis

Vous pouvez configurer une politique de gestion des champs manquants pour autoriser l'absence de certains champs dans certaines tables. Ces champs sont alors exportés avec la valeur NULL.

Toutes les tables doivent avoir des schémas identiques.

Référence pour le mappage des colonnes

La première table correspondante dans la source de métadonnées de la source de données fragmentée.

La première table de la première source de données.

Rédigé manuellement en mode script.

Nombre de sources de données prises en charge

Une source de données fragmentée prend en charge jusqu'à 5 000 sources de données référencées.

Nous vous recommandons de ne pas configurer plus de 50 sources de données par nœud.

Nécessité de modifier et déployer le nœud lors de l'ajout d'une source de données

Aucune modification du nœud n'est requise. Après la modification de la source de données, le changement prend effet sur les nouvelles instances en cours d'exécution.

Vous devez modifier la tâche pour ajouter la source de données et configurer le nom de la table associée.

Types de sources de données pris en charge

MySQL, PolarDB, PolarDB-O, OceanBase

MySQL, PolarDB, AnalyticDB, OceanBase

MySQL, PolarDB, AnalyticDB, SQL Server, Oracle, PostgreSQL, DM, DB2, Oracle, OceanBase

Source de données fragmentée et interface sans code

  1. Connectez-vous à la console DataWorks. Dans la région cible, cliquez sur Data Integration > Data Integration dans le volet de navigation de gauche. Sélectionnez un espace de travail dans la liste déroulante et cliquez sur Go to Data Integration.

  2. Dans le volet de navigation de gauche, cliquez sur Data Source, puis sur Add Data Source et sélectionnez un type de source de données. Cette méthode prend en charge MySQL, PolarDB et PolarDB-O.

  3. Créez une source de données standard pour chaque base de données fragmentée. Cet exemple utilise MySQL. Pour obtenir la procédure détaillée, consultez la section Configurer une source de données MySQL.

    Une fois la création terminée, vous pouvez consulter la source de données MySQL correspondant à chaque base de données fragmentée sur la page Data Source List. Par exemple, le nom de la source de données est MySQL_20241114, ce qui correspond à la base de données user_info_20241114.

  4. Créez une Sharded Data Source afin de regrouper plusieurs sources de données standard en une seule source, qui servira de source pour la synchronisation des données.

    1. Cliquez sur Add Data Source et sélectionnez Sharded Data Source. Dans la boîte de dialogue Add Data Source, cliquez sur l'onglet Sharded Data Source. Les types de sources de données disponibles incluent MySQL (sharded), PolarDB-O (sharded) et PolarDB (sharded).

    2. Sélectionnez le type de source de données fragmentée souhaité et configurez les paramètres pertinents. Cet exemple utilise MySQL (sharded).

      Dans le champ Data Source Name, saisissez un nom tel que Database_and_Table_Sharding_of_MySQL. Une fois la configuration terminée, cliquez sur OK pour créer la source de données fragmentée.

      Description des principaux paramètres :

      • Personnalisez le Data Source Name.

      • Select Data Sources : Sélectionnez les sources de données standard que vous avez créées pour chaque base de données fragmentée.

      • Meta Data Source : Pour la synchronisation de données fragmentées, toutes les sources de données doivent avoir des schémas de table identiques. Sélectionnez l'une des sources de données comme modèle de métadonnées par défaut afin de récupérer le schéma de table par défaut lors de la configuration d'une tâche de synchronisation.

        Important

        Si les schémas de table diffèrent d'une source de données à l'autre, les tâches de synchronisation ultérieures échoueront.

  5. Créer un nœud de synchronisation par lots

  6. Configurez une tâche de synchronisation de données fragmentées.

    Configuration de la fragmentation en mode assistant : Pour Data Source , sélectionnez MySQL (sharded) , puis choisissez la source de données fragmentée que vous avez créée. Pour connaître la procédure complète de configuration de la tâche, consultez la section Configurer une tâche de synchronisation par lots en mode assistant.

    Remarque

    Cet exemple utilise MySQL (sharded). Sélectionnez le type approprié en fonction de vos besoins.

    Sur la page de test de connectivité réseau, le nom de la source de données source est Database_and_Table_Sharding_of_MySQL, le groupe de ressources est Serveless_Resource (Chine (Shanghai), paiement à l'utilisation, 0,5 CU) et la destination est MaxCompute(ODPS) avec le nom de source de données doc_test_project. Les résultats du test de connectivité réseau indiquent que les trois éléments sont connectés.

  7. Cliquez sur Next .

  8. Sélectionnez les tables à synchroniser, cliquez sur Save et Publish , puis effectuez les étapes restantes.

    Sur la page Configure Source and Destination, à l'étape 2 Configure Task, la section Source située à gauche est configurée comme suit : la source de données est MySQL (sharded), la méthode de sélection de table est Fixed Table, la table est user_info et la clé de partitionnement est id. (La fragmentation nécessite que toutes les tables aient des schémas identiques ; sinon, des erreurs d'exécution se produisent.) La section Destination située à droite est configurée comme suit : la source de données est MaxCompute(ODPS), la table est user_info, les informations de partition sont pt=${bizdate} , le mode d'écriture est Clear existing data before writing (Insert Overwrite) et la conversion des chaînes vides en NULL est définie sur No.

Source de données standard et interface sans code

  1. Créez une source de données standard pour chaque base de données fragmentée. Cet exemple utilise MySQL. Pour obtenir la procédure détaillée, consultez la section Configurer une source de données MySQL.

  2. Créer un nœud de synchronisation par lots

  3. Configurez une tâche de synchronisation de données fragmentées.

    Configuration de la fragmentation en mode assistant : Dans la section Data Source , cliquez sur + Edit Source . Dans le panneau de sélection de source de données qui s'affiche, sélectionnez et ajoutez les sources de données correspondant aux différentes bases de données fragmentées. Pour connaître la procédure complète de configuration de la tâche, consultez la section Configurer une tâche de synchronisation par lots en mode assistant.

  4. Ajoutez plusieurs sources de données standard à la section Selected Data Sources et cliquez sur Confirm .

  5. Cliquez sur Next .

  6. Sélectionnez les tables à synchroniser depuis chaque source de données, cliquez sur Save et Publish , puis effectuez les étapes restantes.

    Important

    Dans cette configuration, l'option Data Sources for Sharded Databases Use Same Account and Password est sélectionnée par défaut. Cela signifie que toutes les sources de données fragmentées utiliseront le compte et le mot de passe configurés dans la première source de données pour accéder aux bases de données. Si vos bases de données fragmentées utilisent des comptes et mots de passe différents, désactivez cette option afin que chaque source de données utilise ses propres identifiants.

    Sur la page Configure Source and Destination, la section Source située à gauche comporte trois sources de données MySQL fragmentées configurées (telles que MySQL_20241112, MySQL_20241114 et MySQL_20241113), et chaque source de données sélectionne la table user_info. La page affiche un avertissement : « La fragmentation nécessite que toutes les tables aient des schémas identiques ; sinon, des erreurs d'exécution se produisent. » La section Destination située à droite sélectionne la source de données MaxCompute(ODPS), la table est user_info, les informations de partition sont définies sur pt=${bizdate} et le mode d'écriture est Clear existing data before writing (Insert Overwrite).

Éditeur de code

  1. Créer un nœud de synchronisation par lots

  2. Configurez une tâche de synchronisation de données fragmentées.

    Configuration de la fragmentation en mode script : Voici un exemple de script. Pour connaître la procédure complète de configuration de la tâche, consultez la section Configurer une tâche de synchronisation par lots en mode script.

    Important

    Avant d'exécuter la tâche, supprimez les commentaires du code suivant.

    {
        "type":"job",
        "version":"2.0",
        "steps":[
            {
                "stepType":"mysql",
                "parameter":{
                    "envType":0,
                    "column":[
                        "id",
                        "name"
                    ],
                    "socketTimeout":3600000,
                    "tableComment":"",
                    "connection":[    //Configure connections based on the number of sharded databases
                        {
                            "datasource":"datasourceName1",  //Data source 1 for sharded databases and tables
                            "table":[           //Table list 1 for sharded databases and tables
                                "tb1"
                            ]
                        },
                        {
                            "datasource":"datasourceName2", //Data source 2 for sharded databases and tables
                            "table":[          //Table list 2 for sharded databases and tables
                                "tb2",
                                "tb3"
                            ]
                        }
                    ],
                    "useSpecialSecret":true,//Each data source uses its own password
                    "where":"",
                    "splitPk":"id",
                    "encoding":"UTF-8"
                    },
                "name":"Reader",
                "category":"reader"
                },
            {
                "stepType":"odps",
                "parameter":{
                    "partition":"pt=${bizdate}",
                    "truncate":true,
                    "datasource":"odpsname",
                    "envType":0,
                    "isSupportThreeModel":false,
                    "column":[
                        "id",
                        "name"
                    ],
                    "emptyAsNull":false,
                    "tableComment":"",
                    "table":"t1",
                    "consistencyCommit":false
                    },
                "name":"Writer",
                "category":"writer"
                }
        ],
        "setting":{
            "executeMode":null,
            "errorLimit":{
                "record":""
                },
            "speed":{
                "concurrent":2,
                "throttle":false
                }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                    }
            ]
        }
    }