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)
-
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.
-
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 dijalankan 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 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-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 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
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 (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
-Xmx8gAtur 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:
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)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 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 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.