Tüm Ürünler
Search
Belge Merkezi

Lindorm:DataX kullanarak RDS verilerini içeri aktarma

Son Güncelleme:Oct 07, 2026

DataX, Alibaba tarafından geliştirilen açık kaynaklı bir çevrimdışı veri senkronizasyon aracıdır. Bu aracı kullanarak MySQL veritabanından LindormTSDB'ye toplu veri geçişi yapabilirsiniz.

Geçiş işlemi aşağıdaki iki DataX eklentisini kullanır:

  • MySQL Reader — Java Database Connectivity (JDBC) üzerinden MySQL'den satırları okur

  • TSDB Writer — /api/mput ve /api/put HTTP API'leri üzerinden LindormTSDB'ye veri noktaları yazar

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • DataX'i çalıştırmak için bir Linux makinesi

  • JDK 1.8 veya sonraki sürüm — Oracle adresinden indirin

  • Python 2.6.x (önerilir) — python.org adresinden indirin

  • 5.x sürümüyle uyumlu bir MySQL

  • Çalışan bir LindormTSDB örneği

  • DataX ana bilgisayarından hem MySQL'e (JDBC bağlantı noktası) hem de LindormTSDB'ye (HTTP bağlantı noktası) ağ bağlantısı. Bağlantı eksikliği bir Connect Exception hatasına neden olur.

DataX'i kurma

İndirme ve çıkarma

Bu geçiş için önceden yapılandırılmış eklentileri içeren DataX paketini indirin:

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

DATAX_HOME değişkenini çıkarılan dizine ayarlayın:

export DATAX_HOME=$(pwd)/datax

Kurulumu doğrulama

DataX'in düzgün çalıştığını onaylamak için yerleşik Stream Reader'dan Stream Writer'a test işini çalıştırın. Bu eklentilerin harici bağımlılıkları yoktur; Stream Reader rastgele dizeler oluşturur ve Stream Writer bunları konsola yazdırır.

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

Başarılı bir çalıştırma, aşağıdakine benzer bir özetle sona erer:

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

Total read/write failures: 0 ifadesi, işin hatasız tamamlandığını gösterir. Yazma hızı, LindormTSDB aktarım hızını değil Stream Writer aktarım hızını yansıtır.

Geçiş işini yapılandırma

mysql2tsdb.json adında bir yapılandırma dosyası oluşturun. Bu dosya bir okuyucu (MySQL Reader) ve bir yazıcı (TSDB Writer) tanımlar.

{
  "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
      }
    }
  }
}
Önemli

MySQL Reader'daki column dizisi ile TSDB Writer'daki column dizisi sütunları aynı sırayla listelemelidir. DataX bunları konumsal olarak eşler; sıranın uyuşmaması verilerin bozulmasına neden olur.

MySQL Reader parametreleri

Parametre Tür Zorunlu Açıklama Varsayılan Örnek
jdbcUrl String Evet MySQL veritabanı için JDBC bağlantı dizesi — jdbc:mysql://127.0.0.1:3306/datax
username String Evet MySQL kullanıcı adı — root
password String Evet Belirtilen kullanıcı adı için parola — root
table String Evet Okunacak tablo — book
column Array Evet Sırasıyla okunacak sütunlar. TSDB Writer'daki column sırasıyla eşleşmelidir. [] ["name","type","create_time"]
splitPk String Hayır Paralel çalıştırma için okumaları bölmek üzere kullanılan sütun (boş) id

TSDB Writer parametreleri

Parametre Tür Zorunlu Açıklama Varsayılan Örnek
sourceDbType String Hayır Kaynak sistem türü. İlişkisel veritabanları (MySQL, Oracle, PostgreSQL, DRDS) için RDB; zaman serisi veritabanları (OpenTSDB, InfluxDB, Prometheus, TimeScale) için TSDB TSDB RDB
column Array Evet Yazılacak sütunlar, MySQL Reader column ile aynı sırada olmalıdır. DataX sütunları konumsal olarak eşler. [] ["name","type","create_time","price"]
columnType Array Evet column içindeki her sütun için LindormTSDB alan türü. Desteklenen değerler: timestamp, tag, metric_num, metric_string. Aşağıdaki eşleme tablosuna bakın. [] ["tag","tag","timestamp","metric_num"]
endpoint String Evet LindormTSDB uç nokta adresi ve bağlantı noktası — ld-xxxx:8242
multiField Bool Evet Verileri çok alanlı modda yazmak için true olarak ayarlayın false true
table String Evet LindormTSDB'deki hedef tablo adı — my_book
username String Hayır LindormTSDB kullanıcı adı — tsdbuser
password String Hayır LindormTSDB parolası — tsdbpsw
ignoreWriteError Bool Evet true olduğunda, işi durdurmak yerine yazılamayan satırları atlar false false
database String Hayır LindormTSDB'deki hedef veritabanı adı default default

Sütun türü eşlemesi

columnType dizisi, her MySQL sütununu bir LindormTSDB alan türüne eşler. Desteklenen değerler şunlardır:

**columnType değeri** Açıklama Tipik MySQL sütun türü
timestamp Zaman damgası alanı DATETIME, BIGINT (epoch ms)
tag Sorguları filtrelemek ve gruplamak için kullanılan boyut alanı VARCHAR, CHAR
metric_num Sayısal ölçüm değeri INT, FLOAT, DOUBLE, DECIMAL
metric_string Dize ölçüm değeri TEXT, VARCHAR

Geçişi çalıştırma

mysql2tsdb.json dosyasını datax/ klasörünün üst dizinine yerleştirin ve ardından şunu çalıştırın:

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

Çalıştırmadan önce dizin düzeniniz şu şekilde görünmelidir:

datax/
datax.tar.gz
mysql2tsdb.json

Geçişi doğrulama

Başarılı bir geçiş, Total read/write failures değerinin 0 olduğu bir özetle sona erer:

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

Eğer Total read/write failures değeri 0 değerinden büyükse ve ignoreWriteError değeri false ise, iş durur ve hata raporlanır. Belirli satırı ve hata mesajını kontrol etmek için konsol çıktısını inceleyin.

SSS

Geçiş sürecine ayrılan JVM belleğini artırabilir miyim?

JVM bayraklarını -j seçeneği ile iletin:

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

DataX ana bilgisayarını LindormTSDB izin listesine nasıl eklerim?

Bkz. İzin listesi yapılandırma.

Geçiş Connect Exception hatasıyla başarısız oluyor. Neyi kontrol etmeliyim?

  • LindormTSDB için: DataX ana bilgisayarının, endpoint içinde belirtilen HTTP bağlantı noktasındaki LindormTSDB uç noktasına ulaşabildiğini onaylayın.

  • MySQL için: DataX ana bilgisayarının MySQL JDBC bağlantı noktasına ulaşabildiğini onaylayın.

  • DataX'i bir ECS örneğinde çalıştırıyorsanız, ECS güvenlik grubu yapılandırması kullanım örnekleri ve VPC SSS konularını inceleyin.