Cambiar entre RocksMQ y Woodpecker

En esta página se describe cómo cambiar la cola de mensajes (MQ) de una implementación de Milvus Standalone (Docker Compose) entre RocksMQ y Woodpecker (backend local o MinIO), en ambas direcciones. Para conocer el flujo de trabajo general y los requisitos previos, consulta Cambiar la cola de mensajes.

  • Requisito previo: la función «Cambiar MQ» está disponible en Milvus 3.0 y versiones posteriores. Actualiza tu instancia de Milvus a Milvus 3.0 o una versión posterior antes de comenzar; la función no está disponible en versiones anteriores.
  • El cambio de cola de mensajes requiere una implementación de Docker Compose (que habilita una fuente de configuración etcd). La implementación de Docker de un solo contenedor no admite el cambio.

Cambiar de RocksMQ a Woodpecker

Paso 1: Comprueba que la instancia de Milvus se esté ejecutando

Comprueba que tu instancia de Milvus Standalone con Docker Compose se está ejecutando correctamente; por ejemplo, creando una colección de prueba, insertando datos y ejecutando una consulta.

Paso 2: Configurar el almacenamiento de Woodpecker

Añade los ajustes de Woodpecker a la configuración de Milvus sin modificar el valor de « mqType ». Ejecuta « docker exec -it milvus-standalone bash » para acceder al contenedor y, a continuación, edita « /milvus/configs/user.yaml »:

woodpecker:
  storage:
    type: minio   # minio or local

Reinicia la instancia de Milvus para aplicar la configuración:

docker compose restart

Paso 3: Ejecutar el cambio a MQ

Si es la primera vez que cambia a Woodpecker, omita esta nota. De lo contrario, elimine los metadatos y datos residuales de Woodpecker antes de volver a cambiar; los datos residuales pueden provocar un comportamiento inesperado.

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

El puerto de MixCoord suele ser 9091.

Paso 4: Comprueba que el cambio se ha completado

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

Si el cambio se ha realizado correctamente, se registra en [mqTypeValue=woodpecker].

Paso 5: (Opcional) Limpia los datos de RocksMQ

Los datos de RocksMQ se encuentran en los directorios volumes/milvus/rdb_data y volumes/milvus/rdb_data_meta_kv, definidos en docker-compose.yaml. Si tiene previsto volver a RocksMQ más adelante, elimine primero estos archivos para evitar conflictos.

Cambiar de Woodpecker a RocksMQ

Paso 1: Comprueba que la instancia de Milvus esté en ejecución

Asegúrate de que tu instancia de Milvus Standalone Docker Compose se está ejecutando correctamente.

Paso 2: Ejecuta el cambio a MQ

Asegúrate de que la instancia no contenga datos residuales de RocksMQ de una ejecución anterior. Si es la primera vez que cambias a RocksMQ, omite esta nota; de lo contrario, elimina primero los metadatos y datos relacionados con RocksMQ.

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

Paso 3: Comprueba que el cambio se ha completado

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

Si la migración se ha realizado correctamente, se registrará en el archivo de registro « [mqTypeValue=rocksmq] ».

Paso 4: (Opcional) Limpia los datos de Woodpecker

  • Metadatos (etcd): el prefijo de la clave de Woodpecker suele ser woodpecker/.... Consúltalo con etcdctl get woodpecker --prefix y, a continuación, elimínalo.
  • Datos de almacenamiento: en modo MinIO, elimina los datos de registro que se encuentran en <rootPath>/wp/... (normalmente files/wp/...) dentro del bucket; en modo local, los datos se encuentran en el disco local en volumes/milvus/data/wp/....

Si tiene previsto volver a Woodpecker más adelante, elimine primero estos archivos para evitar conflictos.

Escenarios compatibles

MQ de origenMQ de destinoEstadoNotas
RocksMQWoodpecker (MinIO/local)Compatible
Woodpecker (MinIO/local)RocksMQCompatible
Woodpecker MinIOWoodpecker localNo compatibleEl cambio entre los modos de almacenamiento de Woodpecker requiere una gestión adicional de metadatos, que aún no es compatible.
Woodpecker localWoodpecker MinIONo compatibleLo mismo que arriba.
RocksMQ / WoodpeckerPulsar externo / KafkaCompatible, pero no recomendadoMantén las instancias independientes lo más sencillas posible.