Переключение между RocksMQ и Woodpecker
На этой странице описано, как переключить очередь сообщений (MQ) автономного развертывания Milvus (Docker Compose) между RocksMQ и Woodpecker (локальный бэкэнд или бэкэнд MinIO) в обоих направлениях. Общий порядок действий и необходимые условия см. в разделе «Переключение очереди сообщений».
- Необходимое условие: функция «Переключение MQ» доступна в Milvus 3.0 и более поздних версиях. Перед началом обновите свой экземпляр Milvus до версии 3.0 или более поздней — эта функция недоступна в более ранних версиях.
- Для переключения MQ требуется развертывание с использованием Docker Compose (которое включает источник конфигурации etcd). Развертывание Docker с одним контейнером не поддерживает переключение.
Переключение с RocksMQ на Woodpecker
Шаг 1: Убедитесь, что экземпляр Milvus работает
Убедитесь, что ваш автономный экземпляр Milvus с Docker Compose работает корректно — например, создав тестовую коллекцию, вставив данные и выполнив запрос.
Шаг 2: Настройте хранилище Woodpecker
Добавьте настройки Woodpecker в конфигурацию Milvus, не изменяя значение параметра ` mqType `. Запустите команду ` docker exec -it milvus-standalone bash `, чтобы войти в контейнер, затем отредактируйте файл ` /milvus/configs/user.yaml`:
woodpecker:
storage:
type: minio # minio or local
Перезапустите экземпляр Milvus, чтобы применить настройки:
docker compose restart
Шаг 3: Выполните переключение MQ
Если вы впервые переключаетесь на Woodpecker, пропустите это примечание. В противном случае перед повторным переключением удалите остаточные метаданные и данные Woodpecker — остаточные данные могут привести к непредвиденному поведению.
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
Порт MixCoord обычно имеет значение 9091.
Шаг 4: Убедитесь, что переключение завершено
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
При успешном переключении в журнале регистрируется сообщение [mqTypeValue=woodpecker].
Шаг 5: (Необязательно) Очистка данных RocksMQ
Данные RocksMQ находятся в каталогах volumes/milvus/rdb_data и volumes/milvus/rdb_data_meta_kv, определённых в файле docker-compose.yaml. Если вы планируете позже вернуться к RocksMQ, сначала удалите эти файлы, чтобы избежать конфликтов.
Переход с Woodpecker на RocksMQ
Шаг 1: Убедитесь, что экземпляр Milvus запущен
Убедитесь, что ваш автономный экземпляр Milvus, развернутый с помощью Docker Compose, работает корректно.
Шаг 2: Выполните переключение MQ
Убедитесь, что в экземпляре нет остаточных данных RocksMQ от предыдущего запуска. Если вы переходите на RocksMQ впервые, пропустите это примечание; в противном случае сначала удалите соответствующие метаданные и данные RocksMQ.
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "rocksmq"}'
Шаг 3: Убедитесь, что переход завершён
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
При успешном переключении в журнале появляется запись « [mqTypeValue=rocksmq] ».
Шаг 4: (Необязательно) Очистка данных Woodpecker
- Метаданные (etcd): префикс ключа Woodpecker обычно имеет вид
woodpecker/.... Просмотрите его с помощью командыetcdctl get woodpecker --prefix, а затем удалите. - Данные хранилища: в режиме MinIO удалите данные журнала, расположенные в корзине по пути
<rootPath>/wp/...(обычноfiles/wp/...); в локальном режиме данные находятся на локальном диске по путиvolumes/milvus/data/wp/....
Если вы планируете позже вернуться к Woodpecker, сначала удалите эти файлы, чтобы избежать конфликтов.
Поддерживаемые сценарии
| Источник MQ | Целевой MQ | Состояние | Примечания |
|---|---|---|---|
| RocksMQ | Woodpecker (MinIO/локальный) | Поддерживается | |
| Woodpecker (MinIO/local) | RocksMQ | Поддерживается | |
| Woodpecker MinIO | Woodpecker локальный | Не поддерживается | Переключение между режимами хранения Woodpecker требует дополнительной обработки метаданных, которая пока не поддерживается. |
| Локальный режим Woodpecker | Woodpecker MinIO | Не поддерживается | То же, что и выше. |
| RocksMQ / Woodpecker | Внешний Pulsar / Kafka | Поддерживается, но не рекомендуется | Сделайте автономные экземпляры как можно более простыми. |