Basculer entre RocksMQ et Woodpecker

Cette page décrit comment basculer la file d’attente de messages (MQ) d’un déploiement Milvus Standalone (Docker Compose) entre RocksMQ et Woodpecker (backend local ou MinIO), dans les deux sens. Pour connaître le déroulement général et les prérequis, consultez la section Basculer la file d’attente de messages.

  • Prérequis : la fonctionnalité de basculement de la file d’attente de messages est disponible à partir de Milvus 3.0. Mettez à niveau votre instance Milvus vers la version 3.0 ou une version ultérieure avant de commencer — cette fonctionnalité n’est pas disponible sur les versions antérieures.
  • Le changement de file d’attente de messages nécessite un déploiement Docker Compose (qui active une source de configuration etcd). Le déploiement Docker à conteneur unique ne prend pas en charge ce changement.

Passer de RocksMQ à Woodpecker

Étape 1 : Vérifiez que l’instance Milvus est en cours d’exécution

Vérifiez que votre instance Milvus Standalone Docker Compose fonctionne correctement — par exemple, en créant une collection de test, en y insérant des données et en exécutant une requête.

Étape 2 : Configurer le stockage Woodpecker

Ajoutez les paramètres Woodpecker à la configuration Milvus sans modifier la valeur « mqType ». Exécutez la commande « docker exec -it milvus-standalone bash » pour accéder au conteneur, puis modifiez le fichier « /milvus/configs/user.yaml » :

woodpecker:
  storage:
    type: minio   # minio or local

Redémarrez l’instance Milvus pour appliquer la configuration :

docker compose restart

Étape 3 : Effectuer la bascule vers MQ

Si c’est la première fois que vous basculez vers Woodpecker, ignorez cette remarque. Sinon, nettoyez les métadonnées et données résiduelles de Woodpecker avant de basculer à nouveau — les données résiduelles peuvent entraîner un comportement inattendu.

curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "woodpecker"}'

Le port MixCoord est généralement 9091.

Étape 4 : Vérifiez que la bascule est terminée

docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"

Une migration réussie génère l'entrée suivante dans le journal : [mqTypeValue=woodpecker].

Étape 5 : (Facultatif) Nettoyage des données RocksMQ

Les données RocksMQ se trouvent dans les répertoires volumes/milvus/rdb_data et volumes/milvus/rdb_data_meta_kv définis dans docker-compose.yaml. Si vous prévoyez de revenir à RocksMQ ultérieurement, supprimez d’abord ces fichiers pour éviter tout conflit.

Passer de Woodpecker à RocksMQ

Étape 1 : Vérifiez que l’instance Milvus est en cours d’exécution

Assurez-vous que votre instance Milvus Standalone Docker Compose fonctionne correctement.

Étape 2 : Effectuez la transition vers MQ

Assurez-vous que l’instance ne contient aucune donnée RocksMQ résiduelle issue d’une exécution précédente. S’il s’agit de votre premier passage à RocksMQ, ignorez cette remarque ; sinon, nettoyez d’abord les métadonnées et les données RocksMQ associées.

curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
  -H "Content-Type: application/json" \
  -d '{"target_wal_name": "rocksmq"}'

Étape 3 : Vérifier que la migration est terminée

docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"

Une migration réussie génère l'entrée suivante dans le journal : [mqTypeValue=rocksmq].

Étape 4 : (Facultatif) Nettoyage des données Woodpecker

  • Métadonnées (etcd) : le préfixe de la clé Woodpecker est généralement woodpecker/.... Affichez-le à l’aide de la commande etcdctl get woodpecker --prefix, puis supprimez-le.
  • Données de stockage : en mode MinIO, supprimez les données de journalisation situées sous <rootPath>/wp/... (généralement files/wp/...) dans le bucket ; en mode local, les données se trouvent sur le disque local à l'emplacement volumes/milvus/data/wp/....

Si vous prévoyez de revenir à Woodpecker ultérieurement, nettoyez d’abord ces fichiers pour éviter tout conflit.

Scénarios pris en charge

MQ sourceMQ cibleÉtatRemarques
RocksMQWoodpecker (MinIO/local)Pris en charge
Woodpecker (MinIO/local)RocksMQPris en charge
Woodpecker MinIOWoodpecker localNon pris en chargeLe passage d'un mode de stockage Woodpecker à un autre nécessite un traitement supplémentaire des métadonnées, qui n'est pas encore pris en charge.
Woodpecker localWoodpecker MinIONon pris en chargeIdem que ci-dessus.
RocksMQ / WoodpeckerPulsar / Kafka externesPris en charge mais non recommandéVeillez à ce que les instances autonomes restent aussi simples que possible.