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)
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.
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 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.
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-aliLangkah 2: Jalankan kontainer dan masuk ke lingkungannya
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/bashLihat ID kontainer dan akses kontainer tersebut.
# Cari kontainer docker ps # Masuk ke kontainer (ganti dengan ID kontainer Anda) docker exec -it <container_id> bashContoh:
docker exec -it 55ac98f3b054 bash
Langkah 3: Buat file konfigurasi migration.conf
Buat file konfigurasi di dalam kontainer:
vi migration.confTemplat 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
collectionsdari 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
-Xmx8gAtur 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:
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)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, contohnyaroot: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.