All Products
Search
Document Center

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

Last Updated:Sep 19, 2026

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

Batasan dan persyaratan konfigurasi

Sebelum memulai migrasi, tinjau persiapan, batasan tugas, dan persyaratan jaringan berikut.

Persiapan pra-migrasi (wajib)

  1. Kontrol status operasi

    Jenis kluster

    Persyaratan

    Deskripsi

    Kluster sumber

    Hentikan semua operasi modifikasi data

    Mencakup operasi write, delete, dan update. Kluster harus berada dalam status read-only untuk mencegah inkonsistensi data selama migrasi.

    Kluster tujuan

    Jeda semua operasi data

    Mencakup operasi query, write, delete, dan update. Kluster harus tidak tersedia untuk menghindari konflik data selama 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 dijalankan 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 berada dalam status loaded.

    • Persyaratan instans tujuan: Instans tujuan harus kosong tanpa data entitas yang sudah ada.

Persyaratan jaringan

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

Prosedur

Langkah 1: Pull gambar 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 menyarankan 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. Default-nya 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, hilangkan 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 (mesin tunggal)

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 cluster mode (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 dan 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 membuat koneksi selama pembangunan 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 mendapatkan

    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-nya 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 hanya memigrasikan 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.