全部产品
Search
文档中心

Lindorm:Migrasi data penuh dari TSDB ke LindormTSDB

更新时间:Jul 02, 2025

Topik ini menjelaskan cara memigrasikan data penuh dari instance Time Series Database (TSDB) ke mesin deret waktu Lindorm (LindormTSDB).

Prasyarat

  • Linux atau macOS telah diinstal pada klien, serta lingkungan berikut:

    • Java Development Kit (JDK) 1.8 atau yang lebih baru telah diinstal.

    • Python 2.x atau 3.x telah diinstal.

  • Versi instance TSDB adalah 2.7.4 atau yang lebih baru.

  • Instance Lindorm telah dibuat dan LindormTSDB telah diaktifkan untuk instance tersebut. Untuk informasi lebih lanjut, lihat Buat Instance.

Informasi latar belakang

LindormTSDB dikembangkan oleh Alibaba Cloud dan kompatibel dengan sebagian besar API dari TSDB. Dibandingkan dengan TSDB, LindormTSDB menawarkan performa yang lebih tinggi dengan biaya lebih rendah serta mendukung lebih banyak fitur. TSDB tidak lagi tersedia untuk dijual. Kami merekomendasikan agar Anda memigrasikan semua data dalam instance TSDB Anda ke LindormTSDB.

Proses

Berikut langkah-langkah untuk memigrasikan data penuh dari instance TSDB ke LindormTSDB:

  1. Gunakan alat migrasi yang disediakan oleh LindormTSDB untuk membaca semua data deret waktu dalam instance TSDB dan menyimpannya ke file lokal.

  2. Pisahkan tugas migrasi menjadi beberapa kelompok waktu berdasarkan konfigurasi tugas, termasuk waktu mulai, waktu akhir, dan interval. Pisahkan setiap kelompok waktu menjadi beberapa subtugas baca berdasarkan nilai parameter oidBatch dalam konfigurasi tugas migrasi. Setiap subtugas baca membaca data dalam beberapa deret waktu dengan rentang waktu yang ditentukan dan mengirimkan data tersebut ke komponen penulisan.

  3. Setelah semua subtugas baca dalam kelompok waktu selesai, catat ID kelompok waktu, ID tugas migrasi, dan status tugas dalam daftar dengan nama dalam format berikut: internal_datax_jobjobName.

    Catatan

    Alat migrasi yang disediakan oleh LindormTSDB mendukung beberapa tugas migrasi. ID setiap tugas migrasi dicatat dalam daftar ID tugas. Migrasi data dalam kelompok waktu tidak dimulai sampai semua subtugas baca dalam kelompok waktu sebelumnya selesai.

  4. Komponen penulisan menerima data yang dikirim oleh setiap subtugas baca dan menulis data tersebut ke LindormTSDB menggunakan model data multi-nilai.

Catatan penggunaan

  • Jika aplikasi Anda diterapkan pada instance ECS, kami sarankan Anda menerapkan instance ECS dan instance Lindorm dalam VPC yang sama dengan instance TSDB yang ingin Anda migrasikan untuk memastikan komunikasi antar instance.

  • Jika Anda memigrasikan data dari instance TSDB ke LindormTSDB melalui Internet, pastikan titik akhir publik instance Lindorm dan TSDB diaktifkan, dan alamat IP klien Anda ditambahkan ke daftar putih instance Lindorm dan TSDB. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.

  • Selama proses migrasi, data dibaca dari instance TSDB dan ditulis ke LindormTSDB. Oleh karena itu, periksa apakah bisnis Anda terpengaruh selama migrasi dari dimensi berikut sebelum Anda memigrasikan data:

    • Spesifikasi instance TSDB

    • Spesifikasi lingkungan (seperti instance ECS) tempat aplikasi diterapkan

    • Jumlah deret waktu dalam instance TSDB

    • Total ukuran data yang ingin Anda migrasikan

    • Frekuensi rata-rata pelaporan data dalam setiap deret waktu

    • Rentang waktu data yang ingin Anda migrasikan

    • Interval pemisahan setiap tugas migrasi

    Catatan

    Untuk informasi lebih lanjut tentang evaluasi performa, lihat Pengujian Performa.

  • Data yang ditulis menggunakan model data multi-nilai tidak dapat diquery menggunakan pernyataan SQL. Untuk menggunakan pernyataan SQL untuk menanyakan data yang dimigrasikan, buat tabel deret waktu sebelum Anda memigrasikan data ke LindormTSDB.

  • Secara default, timestamp yang digunakan dalam LindormTSDB memiliki panjang 13 bit, yang menunjukkan nilai waktu dalam milidetik. Timestamp yang digunakan dalam TSDB memiliki panjang 10 bit, yang menunjukkan nilai waktu dalam detik. Setelah data dimigrasikan dari instance TSDB ke LindormTSDB, timestamp data tersebut dikonversi menjadi panjang 13 bit.

  • Model nilai tunggal tidak direkomendasikan dalam LindormTSDB untuk penulisan data. Oleh karena itu, data yang telah ditulis ke instance TSDB menggunakan model nilai tunggal harus diquery menggunakan model data multi-nilai. Contoh kode berikut menunjukkan cara menanyakan data yang telah ditulis ke instance TSDB menggunakan model data nilai tunggal di TSDB dan LindormTSDB:

    // // Pernyataan yang digunakan untuk menanyakan data dalam TSDB.
    curl -u username:password ts-xxxxx:3242/api/query -XPOST -d '{
        "start": 1657004460,
        "queries": [
            {
                "aggregator": "none",
                "metric": "test_metric"
            }
        ]
    }'
    // Hasil query dalam TSDB.
    [
        {
            "aggregateTags": [],
            "dps": {
                "1657004460": 1.0
            },
            "fieldName": "",
            "metric": "test_metric",
            "tags": {
                "tagkey1": "1"
            }
        }
    ]
    
    // Pernyataan yang digunakan untuk menanyakan data dalam LindormTSDB.
    curl -u username:password ld-xxxxx:8242/api/mquery -XPOST -d '{
        "start":1657004460,
        "queries": [
            {
                "metric": "test_metric",
                "fields": [
                    {
                        "field": "*",
                        "aggregator": "none"
                    }
                ],
                "aggregator": "none"
            }
        ]
    }'
    // Hasil query dalam LindormTSDB.
    [
      {
        "aggregatedTags": [],
        "columns": [
          "timestamp",
          "value"
        ],
        "metric": "test_metric",
        "tags": {
          "tagkey1": "1"
        },
        "values": [
          [
            1657004460000,
            1.0
          ]
        ]
      }
    ]

Konfigurasikan tugas migrasi data

Konfigurasikan parameter yang dijelaskan dalam tiga tabel berikut dan simpan konfigurasi sebagai file JSON seperti job.json.

  • Konfigurasikan parameter yang terkait dengan tugas.

    Parameter

    Diperlukan

    Deskripsi

    channel

    Tidak

    Jumlah tugas bersamaan yang dapat dilakukan pada saat yang sama. Nilai default: 1.

    errorLimit

    Tidak

    Jumlah kesalahan tulis yang diizinkan selama tugas migrasi. Nilai default: 0.

  • Konfigurasikan parameter yang terkait dengan pembacaan data. Tentukan nilai parameter berdasarkan spesifikasi instance TSDB.

    Parameter

    Diperlukan

    Deskripsi

    sinkDbType

    Ya

    Tipe database tujuan. Atur parameter ini ke LINDORM-MIGRATION.

    endpoint

    Ya

    Titik akhir yang digunakan untuk terhubung ke instance TSDB. Untuk informasi lebih lanjut, lihat Koneksi jaringan.

    beginDateTime

    Ya

    Waktu ketika tugas migrasi dimulai.

    endDateTime

    Ya

    Waktu ketika tugas migrasi berakhir.

    splitIntervalMs

    Ya

    Interval pemisahan tugas migrasi. Nilainya dihitung berdasarkan durasi total tugas migrasi dan frekuensi rata-rata pelaporan data dalam setiap deret waktu. Contoh: 604800000 (7 hari).

    • Jika data dalam setiap deret waktu dilaporkan dengan frekuensi detik atau kurang, kami sarankan Anda mengatur interval ke nilai yang lebih pendek dari satu hari.

    • Jika data dalam setiap deret waktu dilaporkan dengan frekuensi jam, Anda dapat mengatur interval ke nilai yang lebih besar sesuai kebutuhan.

    selfId

    Ya

    ID tugas migrasi kustom.

    • Jika Anda menggunakan beberapa tugas bersamaan untuk memigrasikan data, tentukan ID semua tugas dalam nilai parameter jobIds.

    • Jika Anda hanya menggunakan satu tugas untuk memigrasikan data, tentukan ID tugas dalam nilai parameter jobIds.

    jobIds

    Ya

    ID tugas migrasi.

    jobName

    Ya

    Nama tugas migrasi. Nama tugas migrasi sama dengan akhiran tugas dalam daftar status tugas. Jika Anda menggunakan beberapa tugas bersamaan untuk memigrasikan data, nama tugas migrasi harus sama.

    oidPath

    Ya

    Path tempat semua deret waktu yang ingin Anda migrasikan disimpan dalam instance TSDB.

    oidBatch

    Ya

    Jumlah deret waktu yang dibaca oleh setiap subtugas baca setiap kali.

    oidCache

    Ya

    Menentukan apakah deret waktu yang dimigrasikan oleh tugas migrasi akan disimpan dalam memori. Jika Anda ingin memigrasikan puluhan miliar deret waktu, tidak semua deret waktu dapat disimpan dalam memori.

    metrics

    Tidak

    Tabel yang ingin Anda migrasikan. Parameter ini tidak memiliki nilai default. Contoh: ["METRIC_1","METRIC_2"...].

    Catatan

    Jumlah data yang dibaca setiap kali dalam tugas migrasi ditentukan oleh parameter splitIntervalMs dan oidBatch serta frekuensi rata-rata pelaporan data dalam setiap deret waktu. Sebagai contoh, jika nilai splitIntervalMs diatur ke 604800000 dan nilai oidBatch diatur ke 100, dan data dalam setiap deret waktu dilaporkan setiap jam, jumlah rekaman data yang dapat dibaca setiap kali dapat dihitung menggunakan rumus berikut: 100 × 604800000/3600000 = 16800.

  • Konfigurasikan parameter yang terkait dengan penulisan data.

    Parameter

    Diperlukan

    Deskripsi

    endpoint

    Ya

    Titik akhir yang digunakan untuk mengakses LindormTSDB. Untuk informasi lebih lanjut, lihat Lihat titik akhir.

    batchSize

    Ya

    Jumlah maksimum titik data yang dapat dikirim ke LindormTSDB sekaligus.

    multiField

    Ya

    Menentukan apakah model data multi-nilai digunakan untuk menulis data. Jika Anda menggunakan model data multi-nilai untuk menulis data ke LindormTSDB, atur parameter ini ke true.

Contoh berikut menunjukkan isi yang terkandung dalam file job.json:

{
    "job": {
        "setting": {
            "speed": {
                "channel": 1
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.00
            }
        },
        "content": [
            {
                "reader": {
                    "name": "tsdbreader",
                    "parameter": {
                        "sinkDbType": "LINDORM-MIGRATION",
                        "endpoint": "ts-xxxx:3242",
                        "beginDateTime": "2022-5-2 00:00:00",
                        "endDateTime": "2022-7-2 00:00:00",
                        "splitIntervalMs": 86400000,
                        "jobName":"myjob",
                        "selfId":1,
                        "jobIds":[1],
                        "oidPath":"{$myworkplace}/oidfile",
                        "oidBatch":100,
                        "oidCache":true
                    }
                },
                "writer": {
                    "name": "tsdbwriter",
                    "parameter": {
                        "endpoint": "ld-xxxx:8242",
                        "multiField":true,
                        "batchSize":500
                    }
                }
            }
        ]
    }
}
                

Mulai tugas migrasi data

  1. Unduh alat migrasi untuk data deret waktu.

  2. Jalankan perintah berikut untuk mengekstrak paket alat migrasi yang diunduh:

    tar -zxvf tsdb2lindorm.tar.gz
  3. Jalankan perintah berikut untuk memulai tugas migrasi data:

    python datax/bin/datax.py  --jvm="-Xms8G -Xmx8G" job.json > job.result
    Catatan

    Ganti job dalam perintah di atas dengan nama file konfigurasi untuk tugas migrasi aktual.

    Setelah perintah dijalankan, periksa apakah informasi kesalahan dicatat dalam file job.result. Jika tidak ada informasi kesalahan yang dikembalikan, tugas migrasi berhasil.

  4. (Opsional)Jika tugas migrasi gagal, Anda dapat menjalankan pernyataan multi-nilai berikut untuk menanyakan daftar status tugas instance TSDB:

    curl -u username:password ts-****:3242/api/mquery -XPOST -d '{
        "start": 1,
        "queries": [
            {
                "metric": "internal_datax_jobjobName",
                "fields": [
                    {
                        "field": "*",
                        "aggregator": "none"
                    }
                ]
            }
        ]
    }'
    Catatan
    • username:password: Ganti nilai ini dengan akun dan kata sandi yang Anda gunakan untuk mengakses instance TSDB. Untuk informasi lebih lanjut, lihat Kelola Akun.

    • ts-****: Ganti nilai ini dengan ID instance TSDB.

    • jobName: Ganti nilai ini dengan nama tugas migrasi aktual. Contoh: internal_datax_jobmyjob.

    Tabel berikut menjelaskan daftar status tugas yang dikembalikan.

    Timestamp (endtime)

    jobId (Tag)

    state(field)

    1651795199999 (2022-05-05 23:59:59.999)

    3

    ok

    1651795199999 (2022-05-05 23:59:59.999)

    2

    ok

    1651795199999 (2022-05-05 23:59:59.999)

    1

    ok

    1651881599999 (2022-05-06 23:59:59.999)

    2

    ok

    Untuk mencegah tugas migrasi yang telah dieksekusi dieksekusi lagi, ubah nilai beginDateTime dalam file job.json sebelum Anda memulai tugas. Dalam contoh ini, nilai beginDateTime diubah menjadi 2022-05-06 00:00:00.

Pengujian performa

Sebelum Anda memigrasikan data dari instance TSDB, Anda harus mengevaluasi performa instance TSDB. Tabel berikut menunjukkan hasil pengujian performa instance TSDB Basic Edition dan instance TSDB Standard Edition sebagai referensi.

  • Hasil pengujian dua instance TSDB Basic Edition II masing-masing dengan 4 core CPU dan 8 GB memori

    Pengujian

    Jumlah data

    Jumlah proses dalam tugas

    Konfigurasi

    Ukuran file deret waktu

    Jumlah titik data yang dimigrasikan per detik

    Durasi migrasi

    Pemanfaatan sumber daya TSDB

    1

    • Total jumlah deret waktu: 30.000

    • Total jumlah titik data: 86.400.000

    1

    • channel:2

    • oidCache:true

    • oidBatch:100

    • splitInterval:6h

    • mem:-Xms6G -Xmx6G

    1,5 MB

    230.000

    12 menit 30 detik

    Pemanfaatan CPU: 30%

    2

    • Total jumlah deret waktu: 6.000.000

    • Total jumlah titik data: 2.592.000.000

    1

    • channel:10

    • oidCache:true

    • oidBatch:100

    • splitInterval:6h

    • mem:-Xms8G -Xmx8G

    292 MB

    200.000

    2 jam 55 menit 30 detik

    Pemanfaatan CPU: 70% hingga 90%

    3

    • Total jumlah deret waktu: 30.000.000

    • Total jumlah titik data: 4.320.000.000

    1

    • channel:10

    • oidCache:false

    • oidBatch:100

    • splitInterval:6h

    • mem:-Xms28G -Xmx28G

    1,5 GB

    140.000

    9 jam

    Pemanfaatan CPU: 40% hingga 80%

    4

    • Total jumlah deret waktu: 30.000.000

    • Total jumlah titik data: 4.320.000.000

    3

    • channel:10

    • oidCache:false

    • oidBatch:100

    • splitInterval:6h

    • mem:-Xms8G -Xmx8G

    1,5 GB

    250.000

    5 jam

    Pemanfaatan CPU: 90%

  • Hasil pengujian dua instance TSDB Standard Edition I masing-masing dengan 8 core CPU dan 16 GB memori

    Jumlah data

    Jumlah proses dalam tugas

    Konfigurasi

    Ukuran file deret waktu

    Jumlah titik data yang dimigrasikan per detik

    Durasi migrasi

    Pemanfaatan sumber daya TSDB

    • Total jumlah deret waktu: 40.000.000

    • Total jumlah titik data: 5.760.000.000

    3

    • channel:10

    • oidCache:false

    • oidBatch:100

    • splitInterval:6h

    • mem:-Xms8G -Xmx8G

    2 GB

    150.000~200.000

    9 jam

    Pemanfaatan CPU: 10% hingga 20%