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)
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.
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
Manajemen tugas
Batas konkurensi: Hanya satu tugas migrasi yang dapat berjalan dalam satu waktu.
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.
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-aliLangkah 2: Mulai dan masuk ke kontainer
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/bashCari 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> bashContoh:
docker exec -it 55ac98f3b054 bash
Langkah 3: Buat file konfigurasi migration.conf
Di dalam kontainer, buat file konfigurasi:
vi migration.confTemplat 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
collectionsdari 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
-Xmx8gAtur 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:
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)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 APIlist_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.