All Products
Search
Document Center

Vector Retrieval Service for Milvus:Migrasi data ke Alibaba Cloud Milvus dengan tool berbasis gambar

Last Updated:Apr 23, 2026

Jika instans Milvus sumber yang Anda kelola sendiri tidak dapat diakses secara publik, deploy kontainer tool migrasi data di mesin lokal atau di dalam VPC Alibaba Cloud untuk menyinkronkan data ke Alibaba Cloud Milvus secara aman. Proses ini menggunakan gambar kontainer taihao-executor, yang mendukung migrasi massal beberapa koleksi sekaligus menjamin konsistensi dan keandalan data.

Batasan dan persyaratan konfigurasi

Persiapan sebelum migrasi (wajib)

  1. Kontrol status operasi

    Tipe kluster

    Persyaratan

    Deskripsi

    Kluster sumber

    Hentikan semua operasi modifikasi data

    Ini mencakup operasi write, delete, dan update. Pastikan kluster berada dalam status read-only untuk mencegah inkonsistensi data selama migrasi.

    Kluster tujuan

    Jeda semua operasi data

    Ini mencakup operasi query, write, delete, dan update. Jaga agar kluster tidak tersedia guna menghindari konflik data dengan proses migrasi.

  2. Kompatibilitas versi

    Persyaratan

    Spesifikasi

    Versi kluster sumber

    Harus lebih baru dari 2.3.6 (≥ v2.3.7)

    Versi kluster tujuan

    Harus sama dengan atau lebih baru dari versi kluster sumber

Batasan tugas migrasi

  1. Manajemen tugas

    • Batas konkurensi: Hanya satu tugas migrasi yang dapat berjalan dalam satu waktu.

  2. Cakupan data

    • Batas database: Setiap tugas migrasi hanya dapat memigrasikan koleksi dari satu database.

    • Batas koleksi: Setiap tugas migrasi mendukung maksimal lima koleksi.

    • Ukuran total data: Jumlah total entitas di semua koleksi tidak boleh melebihi 500 juta.

  3. Status data

    • Persyaratan instans sumber: Koleksi yang akan dimigrasikan harus dalam status loaded.

    • Persyaratan instans tujuan: Instans tujuan harus kosong dan tidak boleh berisi data entitas apa pun.

Persyaratan jaringan

Kontainer harus memiliki akses jaringan ke instans Milvus sumber dan target Alibaba Cloud. Untuk performa optimal, deploy kontainer di VPC yang sama dengan instans target.

Prosedur

Langkah 1: Tarik image migrasi

docker pull registry.cn-hangzhou.aliyuncs.com/taihao-executor/taihao-executor:release_2.22.0-ali

Langkah 2: Mulai dan masuk ke kontainer

  1. Mulai kontainer dalam mode detached.

    docker run -d -it \
      --name milvus-migration \
      registry.cn-hangzhou.aliyuncs.com/taihao-executor/taihao-executor:release_2.22.0-ali \
      /bin/bash
  2. Cari ID kontainer dan masuk ke kontainer tersebut.

    # Cari kontainer
    docker ps
    
    # Masuk ke kontainer (ganti dengan ID kontainer aktual Anda)
    docker exec -it <container_id> bash

    Contoh:

    docker exec -it 55ac98f3b054 bash

Langkah 3: Buat file konfigurasi migration.conf

Di dalam kontainer, buat file konfigurasi:

vi migration.conf

Templat konfigurasi

env {
  parallelism = 1           # Tingkat konkurensi. Kami merekomendasikan mengatur nilai ini ke 1 pada awalnya.
  job.mode = "BATCH"        # Mode pemrosesan batch.
}

source {
  Milvus {
    url = "http://<source-instance-endpoint>:19530"       # Titik akhir internal didukung.
    token = "<username>:<password>"                 # Contoh: root:Test123456@
    database = "default"                    # Database yang akan dimigrasikan. Nilai default adalah `default`.
    collections = ["col_a", "col_b"]        # Daftar koleksi yang akan dimigrasikan.
    batch_size = 10000                      # Jumlah entitas yang dibaca per batch. Tingkatkan nilai ini untuk koleksi besar.
  }
}

sink {
  Milvus {
    url = "http://<target-Alibaba-Cloud-Milvus-endpoint>:19530"
    token = "<target-instance-token>"
    database = "default"
    batch_size = 1000
    enable_auto_id = false                 # Atur ke false untuk mempertahankan ID yang di-generate otomatis dari sumber. Jika tidak, atur ke true.
  }
}

Catatan

  • Untuk mencegah kegagalan tugas, semua koleksi yang akan dimigrasikan harus dimuat ke memori menggunakan metode load().

  • Untuk memigrasikan semua koleksi yang telah dimuat, hapus parameter collections dari file konfigurasi.

  • Jika kontainer dan instans target berada di wilayah yang sama, gunakan titik akhir internal untuk meningkatkan kecepatan transfer.


Langkah 4: Mulai tugas migrasi

Opsi 1: Jalankan dalam mode lokal (single machine)

nohup ./bin/seatunnel.sh --config ./migration.conf -m local > migration.log 2>&1 &
Sesuaikan parameter memori (Opsional)

Edit file config/jvm_client_options:

-Xms4g
-Xmx8g

Atur ukuran heap memory sesuai dengan sumber daya mesin Anda untuk mencegah error Out-of-Memory (OOM).

Opsi 2: Jalankan dalam mode kluster (Direkomendasikan untuk performa tinggi)

Mode ini direkomendasikan untuk memigrasikan volume data besar.

# Buat direktori log
mkdir -p ./logs

# Mulai layanan kluster
./bin/seatunnel-cluster.sh -d

# Kirim tugas
nohup ./bin/seatunnel.sh --config ./migration.conf > migration.log 2>&1 &

Langkah 5: Buat indeks dan muat koleksi (Opsional)

Setelah migrasi selesai, hubungkan ke kluster target menggunakan Attu atau SDK, lalu lakukan langkah-langkah berikut untuk setiap koleksi target:

  1. Buat indeks.

    milvus_client = milvus.prepare_index_params()
    index_params.add_index(
            field_name="vector",  # Nama bidang vektor yang akan diindeks
            index_type="HNSW",  # Jenis indeks yang akan dibuat
            index_name="vector_index",  # Nama indeks yang akan dibuat
            metric_type="L2",  # Jenis metrik yang digunakan untuk mengukur kemiripan
            params={
                "M": 64,  # Jumlah maksimum tetangga yang dapat dihubungkan oleh setiap node dalam graf
                "efConstruction": 100  # Jumlah tetangga kandidat yang dipertimbangkan saat pembuatan indeks
            }  # Parameter pembuatan indeks
        )
    milvus_client.create_index("collectionName", index_params)
  2. Muat koleksi ke memori.

    milvus_client.load_collection()

    Anda harus membuat indeks sebelum memuat koleksi agar pencarian dipercepat. Parameter utama dijelaskan di bawah ini:

    Parameter

    Cara memperoleh

    url

    Login ke Konsol Alibaba Cloud Milvus. Di tab Security Configuration, lihat titik akhir publik atau internal. Untuk performa lebih baik, gunakan titik akhir internal.

    token

    Format token adalah username:password (misalnya, root:YourPassword123@). Login ke Konsol Alibaba Cloud Milvus. Di tab Security Configuration, lihat password yang sesuai dengan akun root.

    database

    Nilai default adalah default. Jika Anda menggunakan fitur multi-database, temukan nama database lain dengan memanggil API list_databases().

    Contoh konfigurasi lengkap:

    env {
      parallelism = 1
      job.mode = "BATCH"
    }
    
    source {
      Milvus {
        url = "http://xx.xx.xx.xx:19530"
        token = "root:SourcePass123@"
        database = "default"
        collections = ["medium_articles"]
        batch_size = 10000
      }
    }
    
    sink {
      Milvus {
        url = "http://proxy-bj.vpc.milvus.aliyuncs.com:19530"
        token = "root:TargetPass123@"
        database = "default"
        batch_size = 10000
        enable_auto_id = false
      }
    }

FAQ

Q1: Mengapa saya melihat error "Collection not loaded" selama migrasi?

A: Pastikan semua koleksi sumber telah dimuat ke memori dengan menggunakan metode .load().

Q2: Apakah saya bisa memigrasikan hanya bidang tertentu?

A: Tidak. Versi saat ini hanya mendukung migrasi seluruh koleksi. Pemfilteran bidang tertentu tidak didukung.

Q3: Bagaimana cara memantau progres migrasi?

A: Anda dapat memantau migrasi dengan dua cara: periksa output di file migration.log, atau gunakan Attu untuk mengamati jumlah baris di koleksi target.