全部产品
Search
文档中心

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

更新时间:Jan 17, 2026

Jika instans Milvus sumber Anda dikelola sendiri dan tidak dapat diakses melalui jaringan publik, Anda dapat melakukan migrasi data secara aman ke Alibaba Cloud Milvus dengan men-deploy kontainer tool migrasi data baik secara lokal maupun di dalam Alibaba Cloud Virtual Private Cloud (VPC). Proses ini menggunakan gambar kontainer taihao-executor, yang mendukung migrasi massal untuk beberapa koleksi sekaligus memastikan konsistensi data dan keandalan tinggi.

Batasan dan persyaratan konfigurasi

Persiapan pra-migrasi (wajib)

  1. Kontrol status operasi

    Jenis 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 dijalankan dalam satu waktu.

  2. Cakupan data

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

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

    • Ukuran total data: Jumlah total entitas di seluruh 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 dan tidak mengandung data entitas apa pun.

Persyaratan jaringan

Jaringan tempat kontainer dideploy harus menyediakan akses ke instans Milvus sumber dan instans Alibaba Cloud Milvus tujuan. Untuk performa optimal, deploy kontainer di VPC yang sama dengan instans tujuan.

Langkah-langkah

Langkah 1: Pull gambar VTS

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

Langkah 2: Jalankan kontainer dan masuk ke lingkungannya

  1. Jalankan kontainer di latar belakang.

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

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

    Contoh:

    docker exec -it 55ac98f3b054 bash

Langkah 3: Buat file konfigurasi migration.conf

Buat file konfigurasi di dalam kontainer:

vi migration.conf

Templat konfigurasi

hoconenv {
  parallelism = 1           # Konkurensi. Atur nilai awal ke 1.
  job.mode = "BATCH"        # Mode batch.
}

source {
  Milvus {
    url = "http://<source_instance_address>:19530"       # Alamat jaringan internal didukung.
    token = "<username>:<password>"                 # Contoh: root:Test123456@
    database = "default"                    # Default-nya adalah "default". Anda dapat menjalankan list_databases untuk mencari database lain.
    collections = ["col_a", "col_b"]        # Daftar koleksi yang akan dimigrasikan.
    batch_size = 10000                      # Jumlah entri yang dibaca sekaligus. Anda dapat menaikkan nilai ini untuk tabel besar.
  }
}

sink {
  Milvus {
    url = "http://<destination_alibaba_cloud_milvus_address>:19530"
    token = "<destination_instance_token>"
    database = "default"
    batch_size = 1000
    enable_auto_id = false                 # Jika koleksi sumber memiliki ID auto-increment, atur ke false. Jika tidak, atur ke true.
  }
}

Catatan

  • Load koleksi sumber: Anda harus memuat semua koleksi yang ingin dimigrasikan menggunakan metode load(). Jika tidak, terjadi error.

  • Untuk memigrasikan semua koleksi: Hapus baris collections dari file konfigurasi agar semua koleksi yang telah diload disinkronkan secara otomatis.

  • Gunakan alamat jaringan internal: Jika kontainer dan instans tujuan berada di wilayah yang sama, gunakan titik akhir jaringan internal instans tujuan untuk meningkatkan kecepatan transfer data.


Langkah 4: Jalankan tugas migrasi

Metode 1: Mode lokal (operasi 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 yang tersedia pada mesin Anda.

Metode 2: Mode kluster (Direkomendasikan untuk performa tinggi)

Cocok untuk memigrasikan volume data besar:

# Buat direktori log
mkdir -p ./logs

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

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

Langkah 5: Bangun dan muat indeks pada instans tujuan (Opsional)

Setelah migrasi selesai, login ke Attu atau gunakan SDK untuk melakukan operasi berikut pada koleksi tujuan:

  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 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 dalam memori.

    milvus_client.load_collection()

    Buat indeks sebelum memuat koleksi. Jika tidak, pengambilan data yang dipercepat tidak dapat diaktifkan. Parameter utama:

    Parameter

    Cara memperoleh

    url

    Login ke Konsol Alibaba Cloud Milvus. Pada tab Security Configuration, lihat alamat jaringan publik atau internal. Kami merekomendasikan penggunaan alamat jaringan internal untuk performa lebih baik.

    token

    Formatnya adalah username:password, contohnya root:YourPassword123@. Login ke Konsol Alibaba Cloud Milvus. Pada tab Security Configuration, lihat password untuk akun root.

    database

    Default-nya adalah `default`. Jika Anda menggunakan fitur multi-database, Anda dapat mencari database lain menggunakan API list_databases().

    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: Terjadi error "Collection not loaded" selama migrasi. Apa yang harus saya lakukan?

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

Q2: Apakah saya bisa hanya memigrasikan bidang tertentu?

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

Q3: Bagaimana cara memantau progres migrasi?

A: Anda dapat memeriksa output di file migration.log. Anda juga dapat memantau perubahan jumlah baris di koleksi tujuan menggunakan Attu.