Alternar entre o RocksMQ e o Woodpecker

Esta página descreve como alternar a fila de mensagens (MQ) de uma implementação do Milvus Standalone (Docker Compose) entre o RocksMQ e o Woodpecker (backend local ou MinIO), em ambos os sentidos. Para conhecer o fluxo de trabalho geral e os pré-requisitos, consulte Alternar fila de mensagens.

  • Pré-requisito: A funcionalidade «Alternar MQ» está disponível no Milvus 3.0 e versões posteriores. Atualize a sua instância do Milvus para o Milvus 3.0 ou posterior antes de começar — a funcionalidade não está disponível em versões anteriores.
  • A troca de MQ requer a implementação do Docker Compose (que permite uma fonte de configuração etcd). A implementação do Docker com um único contentor não suporta a troca.

Mudar do RocksMQ para o Woodpecker

Passo 1: Verifique se a instância do Milvus está a funcionar

Verifique se a sua instância do Milvus Standalone Docker Compose está a funcionar corretamente — por exemplo, criando uma coleção de teste, inserindo dados e executando uma consulta.

Passo 2: Configurar o armazenamento do Woodpecker

Adicione as definições do Woodpecker à configuração do Milvus sem alterar o valor de « mqType ». Execute « docker exec -it milvus-standalone bash » para aceder ao contentor e, em seguida, edite « /milvus/configs/user.yaml »:

woodpecker:
  storage:
    type: minio   # minio or local

Reinicie a instância do Milvus para aplicar a configuração:

docker compose restart

Passo 3: Executar a mudança para o MQ

Se for a primeira vez que muda para o Woodpecker, ignore esta nota. Caso contrário, elimine os metadados e dados residuais do Woodpecker antes de mudar novamente — os dados residuais podem causar um comportamento inesperado.

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

A porta do MixCoord é normalmente 9091.

Passo 4: Verifique se a mudança foi concluída

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

Uma mudança bem-sucedida regista [mqTypeValue=woodpecker].

Passo 5: (Opcional) Limpar os dados do RocksMQ

Os dados do RocksMQ encontram-se nos diretórios volumes/milvus/rdb_data e volumes/milvus/rdb_data_meta_kv, definidos em docker-compose.yaml. Se pretender voltar a utilizar o RocksMQ mais tarde, elimine primeiro estes ficheiros para evitar conflitos.

Mudar do Woodpecker para o RocksMQ

Passo 1: Verifique se a instância do Milvus está a funcionar

Certifique-se de que a sua instância do Milvus Standalone Docker Compose está a funcionar corretamente.

Passo 2: Executar a mudança para o MQ

Certifique-se de que a instância não contém dados residuais do RocksMQ de uma execução anterior. Se esta for a primeira vez que muda para o RocksMQ, ignore esta nota; caso contrário, limpe primeiro os metadados e dados relacionados com o RocksMQ.

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

Passo 3: Verifique se a mudança foi concluída

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

Uma transição bem-sucedida regista a mensagem « [mqTypeValue=rocksmq] ».

Passo 4: (Opcional) Limpar os dados do Woodpecker

  • Metadados (etcd): o prefixo da chave do Woodpecker é normalmente woodpecker/.... Visualize-o com etcdctl get woodpecker --prefix e, em seguida, elimine-o.
  • Dados de armazenamento: no modo MinIO, elimine os dados de registo em <rootPath>/wp/... (normalmente files/wp/...) no bucket; no modo local, os dados encontram-se no disco local em volumes/milvus/data/wp/....

Se pretender voltar a utilizar o Woodpecker mais tarde, elimine primeiro estes ficheiros para evitar conflitos.

Cenários suportados

MQ de origemMQ de destinoEstadoNotas
RocksMQWoodpecker (MinIO/local)Compatível
Woodpecker (MinIO/local)RocksMQCompatível
Woodpecker MinIOWoodpecker localNão suportadoA alternância entre os modos de armazenamento do Woodpecker requer o tratamento de metadados adicionais, o que ainda não é suportado.
Woodpecker localWoodpecker MinIONão suportadoTal como acima.
RocksMQ / WoodpeckerPulsar / Kafka externoCompatível, mas não recomendadoMantenha as instâncias autónomas o mais simples possível.