Beralih antara RocksMQ dan Woodpecker
Halaman ini menjelaskan cara beralih antrian pesan (MQ) pada deployment Milvus Standalone (Docker Compose) antara RocksMQ dan Woodpecker (backend lokal atau MinIO), baik ke arah mana pun. Untuk alur kerja umum dan prasyarat, lihat Beralih Antrian Pesan.
- Prasyarat: Fitur Beralih MQ tersedia di Milvus 3.0 dan versi yang lebih baru. Tingkatkan instance Milvus Anda ke Milvus 3.0 atau versi yang lebih baru sebelum memulai — fitur ini tidak tersedia pada versi sebelumnya.
- Pengalihan MQ memerlukan penyebaran Docker Compose (yang mengaktifkan sumber konfigurasi etcd). Penyebaran Docker satu kontainer tidak mendukung pengalihan.
Beralih dari RocksMQ ke Woodpecker
Langkah 1: Pastikan instance Milvus sedang berjalan
Pastikan instance Milvus Standalone Docker Compose Anda berjalan dengan baik — misalnya, dengan membuat koleksi uji, memasukkan data, dan menjalankan kueri.
Langkah 2: Konfigurasikan penyimpanan Woodpecker
Tambahkan pengaturan Woodpecker ke konfigurasi Milvus tanpa mengubah nilai ` mqType `. Jalankan perintah ` docker exec -it milvus-standalone bash ` untuk masuk ke dalam kontainer, lalu edit berkas ` /milvus/configs/user.yaml`:
woodpecker:
storage:
type: minio # minio or local
Mulai ulang instance Milvus untuk menerapkan konfigurasi:
docker compose restart
Langkah 3: Jalankan peralihan MQ
Jika ini adalah pertama kalinya Anda beralih ke Woodpecker, abaikan catatan ini. Jika tidak, bersihkan sisa meta dan data Woodpecker sebelum beralih kembali — data sisa dapat menyebabkan perilaku yang tidak terduga.
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
Port MixCoord biasanya 9091.
Langkah 4: Verifikasi bahwa peralihan telah selesai
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
Peralihan yang berhasil akan mencatat [mqTypeValue=woodpecker].
Langkah 5: (Opsional) Bersihkan data RocksMQ
Data RocksMQ berada di direktori volumes/milvus/rdb_data dan volumes/milvus/rdb_data_meta_kv yang didefinisikan di docker-compose.yaml. Jika Anda berencana untuk beralih kembali ke RocksMQ nanti, bersihkan file-file ini terlebih dahulu untuk menghindari konflik.
Beralih dari Woodpecker ke RocksMQ
Langkah 1: Pastikan instance Milvus sedang berjalan
Pastikan instance Milvus Standalone Docker Compose Anda berjalan dengan baik.
Langkah 2: Jalankan proses peralihan MQ
Pastikan instance tidak memiliki sisa data RocksMQ dari eksekusi sebelumnya. Jika ini adalah pertama kalinya Anda beralih ke RocksMQ, abaikan catatan ini; jika tidak, bersihkan terlebih dahulu meta dan data RocksMQ yang terkait.
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "rocksmq"}'
Langkah 3: Pastikan proses peralihan telah selesai
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
Peralihan yang berhasil akan mencatat log " [mqTypeValue=rocksmq]".
Langkah 4: (Opsional) Bersihkan data Woodpecker
- Metadata (etcd): awalan kunci Woodpecker biasanya adalah
woodpecker/.... Lihat dengan perintah `etcdctl get woodpecker --prefix`, lalu hapus. - Data penyimpanan: dalam mode MinIO, hapus data log di bawah
<rootPath>/wp/...(biasanyafiles/wp/...) di bucket; dalam mode lokal, data tersebut berada di disk lokal divolumes/milvus/data/wp/....
Jika Anda berencana untuk kembali ke Woodpecker nanti, bersihkan file-file ini terlebih dahulu untuk menghindari konflik.
Skenario yang didukung
| MQ Sumber | MQ Tujuan | Status | Catatan |
|---|---|---|---|
| RocksMQ | Woodpecker (MinIO/lokal) | Didukung | |
| Woodpecker (MinIO/lokal) | RocksMQ | Didukung | |
| Woodpecker MinIO | Woodpecker lokal | Tidak didukung | Beralih di antara mode penyimpanan Woodpecker memerlukan penanganan metadata tambahan, yang belum didukung. |
| Woodpecker lokal | Woodpecker MinIO | Tidak didukung | Sama seperti di atas. |
| RocksMQ / Woodpecker | Pulsar Eksternal / Kafka | Didukung tetapi tidak direkomendasikan | Jaga agar instance mandiri tetap sesederhana mungkin. |