Tous les produits
Search
Centre de documentation

Lindorm:Importer des données RDS à l'aide de DataX

Dernière mise à jour :Aug 11, 2026

DataX est un outil open source de synchronisation de données hors ligne développé par Alibaba. Utilisez-le pour migrer par lots les données d'une base de données MySQL vers LindormTSDB.

La migration s'appuie sur deux plugins DataX :

  • MySQL Reader : lit les lignes de MySQL via JDBC (Java Database Connectivity).

  • TSDB Writer : écrit les points de données dans LindormTSDB via les API HTTP /api/mput et /api/put.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Une machine Linux pour exécuter DataX.

  • JDK 1.8 ou version ultérieure — téléchargez-le depuis Oracle.

  • Python 2.6.x (recommandé) — téléchargez-le depuis python.org.

  • Une base de données MySQL compatible avec la version 5.x.

  • Une instance LindormTSDB en cours d'exécution.

  • Une connectivité réseau entre l'hôte DataX et MySQL (port JDBC) ainsi qu'entre l'hôte DataX et LindormTSDB (port HTTP). L'absence de connectivité entraîne une erreur Connect Exception.

Configurer DataX

Télécharger et extraire

Téléchargez le package DataX avec les plugins préconfigurés pour cette migration :

wget https://tsdbtools.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
tar -xzf datax.tar.gz

Définissez DATAX_HOME sur le répertoire extrait :

export DATAX_HOME=$(pwd)/datax

Vérifier l'installation

Exécutez le job de test intégré Stream Reader vers Stream Writer pour confirmer que DataX fonctionne correctement. Ces plugins n'ont aucune dépendance externe : Stream Reader génère des chaînes aléatoires et Stream Writer les affiche dans la console.

cd ${DATAX_HOME}
python bin/datax.py job/job.json

Une exécution réussie se termine par un résumé similaire à celui-ci :

Task start time           : 2019-04-26 11:18:07
Task end time             : 2019-04-26 11:18:17
Total time                :                 10s
Average traffic           :          253.91KB/s
Record write speed        :          10000rec/s
Total records read        :              100000
Total read/write failures :                   0

La mention Total read/write failures: 0 confirme que le job s'est terminé sans erreur. La vitesse d'écriture reflète le débit de Stream Writer, et non celui de LindormTSDB.

Configurer le job de migration

Créez un fichier de configuration nommé mysql2tsdb.json. Ce fichier définit un lecteur (MySQL Reader) et un rédacteur (TSDB Writer).

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price",
              "description",
              "available"
            ],
            "connection": [
              {
                "jdbcUrl": [
                  "jdbc:mysql://127.0.0.1:3306/datax"
                ],
                "table": [
                  "book"
                ]
              }
            ],
            "password": "xxx",
            "splitPk": "id",
            "username": "root"
          }
        },
        "writer": {
          "name": "tsdbwriter",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price",
              "description",
              "available"
            ],
            "columnType": [
              "tag",
              "tag",
              "timestamp",
              "field_double",
              "field_string",
              "field_bool"
            ],
            "sourceDbType": "RDB",
            "endpoint": "http://localhost:8242",
            "table": "my_book",
            "multiField": "true",
            "username": "xxx",
            "password": "xxx",
            "ignoreWriteError": "false",
            "database": "default"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}
Important

Le tableau column du MySQL Reader et le tableau column du TSDB Writer doivent lister les colonnes dans le même ordre. DataX effectue un mappage positionnel ; un ordre incorrect corrompt les données.

Paramètres du MySQL Reader

Paramètre Type Obligatoire Description Par défaut Exemple
jdbcUrl String Oui Chaîne de connexion JDBC pour la base de données MySQL — jdbc:mysql://127.0.0.1:3306/datax
username String Oui Nom d'utilisateur MySQL — root
password String Oui Mot de passe associé au nom d'utilisateur spécifié — root
table String Oui Table à lire — book
column Array Oui Colonnes à lire, dans l'ordre. Doit correspondre à l'ordre de column dans le TSDB Writer. [] ["name","type","create_time"]
splitPk String Non Colonne utilisée pour partitionner les lectures afin d'exécuter les tâches en parallèle (vide) id

Paramètres du TSDB Writer

Paramètre Type Obligatoire Description Par défaut Exemple
sourceDbType String Non Type de système source. Utilisez RDB pour les bases de données relationnelles (MySQL, Oracle, PostgreSQL, DRDS) et TSDB pour les bases de données séries temporelles (OpenTSDB, InfluxDB, Prometheus, TimeScale). TSDB RDB
column Array Oui Colonnes à écrire, dans le même ordre que le paramètre column du MySQL Reader. DataX effectue un mappage positionnel des colonnes. [] ["name","type","create_time","price"]
columnType Array Oui Type de champ LindormTSDB correspondant à chaque colonne du tableau column. Valeurs prises en charge : timestamp, tag, metric_num, metric_string. Consultez le tableau de mappage ci-dessous. [] ["tag","tag","timestamp","metric_num"]
endpoint String Oui Adresse et port de l'endpoint LindormTSDB — ld-xxxx:8242
multiField Bool Oui Définissez ce paramètre sur true pour écrire les données en mode multi-champs. false true
table String Oui Nom de la table cible dans LindormTSDB — my_book
username String Non Nom d'utilisateur LindormTSDB — tsdbuser
password String Non Mot de passe LindormTSDB — tsdbpsw
ignoreWriteError Bool Oui Si la valeur est true, les lignes dont l'écriture échoue sont ignorées au lieu d'arrêter le job. false false
database String Non Nom de la base de données cible dans LindormTSDB default default

Mappage des types de colonnes

Le tableau columnType mappe chaque colonne MySQL à un type de champ LindormTSDB. Les valeurs prises en charge sont les suivantes :

**Valeur de columnType** Description Type de colonne MySQL typique
timestamp Champ d'horodatage DATETIME, BIGINT (epoch en ms)
tag Champ de dimension utilisé pour filtrer et grouper les requêtes VARCHAR, CHAR
metric_num Valeur de métrique numérique INT, FLOAT, DOUBLE, DECIMAL
metric_string Valeur de métrique sous forme de chaîne TEXT, VARCHAR

Exécuter la migration

Placez le fichier mysql2tsdb.json dans le répertoire parent du dossier datax/, puis exécutez la commande suivante :

cd ${DATAX_HOME}/..
python datax/bin/datax.py mysql2tsdb.json

Votre structure de répertoires doit ressembler à ceci avant l'exécution :

datax/
datax.tar.gz
mysql2tsdb.json

Vérifier la migration

Une migration réussie se termine par un résumé indiquant Total read/write failures égal à 0 :

Task start time           : 2019-05-21 18:25:16
Task end time             : 2019-05-21 18:25:27
Total time                :                 11s
Average traffic           :                3B/s
Record write speed        :              0rec/s
Total records read        :                   3
Total read/write failures :                   0

Si Total read/write failures est supérieur à 0 et que ignoreWriteError est défini sur false, le job s'arrête et signale l'erreur. Consultez la sortie de la console pour identifier la ligne spécifique et le message d'erreur.

FAQ

Puis-je augmenter la mémoire JVM allouée au processus de migration ?

Transmettez les indicateurs JVM avec l'option -j :

python datax/bin/datax.py mysql2tsdb.json -j "-Xms4096m -Xmx4096m"

Comment ajouter l'hôte DataX à la liste d'autorisation de LindormTSDB ?

Consultez la rubrique Configurer une liste d'autorisation.

La migration échoue avec une Connect Exception. Que dois-je vérifier ?