Files
landing_page/qdrant-landing/content/documentation/migrate-to-qdrant/from-qdrant.md
T
Abdon PijpelinkandClaude Sonnet 4.6 8dce906b74 Migration and recovery options guide (#2426)
* Add migration and recovery options comparison page

Adds a new deploy-section page comparing the three data movement
options (migration tool, snapshots, cloud backups) across use case,
performance, operations, infrastructure limits, and resource
requirements — including the 2× RAM/disk headroom rule.

Closes #47

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Added 2× RAM and disk headroom warning for migration scenarios to other docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Edits

* Review feedback

* Review feedback

* Review feedback

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 12:59:13 +02:00

4.7 KiB

title, short_description, description, weight
title short_description description weight
From Qdrant Copy collections between Qdrant instances or within one cluster, preserving vector config, indexes, and quantization. Replicate collections between Qdrant instances or within the same cluster, automatically recreating vector config, HNSW settings, quantization, and sharding. 110

Migrate Between Qdrant Instances

Use the qdrant subcommand to copy a collection from one Qdrant instance to another or copy data between collections within the same instance.

If the target collection does not exist, the tool automatically creates it using the source collection's configuration (vector config, HNSW settings, quantization, sharding). To change the target collection's configuration, create the target collection manually before running the migration.

What You Need

  • Source Qdrant URL — gRPC endpoint of the source instance
  • Target Qdrant URL — gRPC endpoint of the target instance
  • Source collection name
  • Target collection name (must be different from source if using the same instance)
  • API keys — for each instance, if authentication is enabled

Concept Mapping

Source Qdrant Target Qdrant Notes
Collection Collection Recreated with exact schema
Named vectors Named vectors All vector types preserved
Sparse vectors Sparse vectors Direct mapping
Payload Payload Direct mapping
Payload indexes Payload indexes Recreated if --target.ensure-payload-indexes is true
Shard keys Shard keys Recreated automatically

Run the Migration

Between Two Instances

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://source-instance:6334' \
    --source.api-key 'source-api-key' \
    --source.collection 'your-collection' \
    --target.url 'https://your-instance.cloud.qdrant.io:6334' \
    --target.api-key 'your-qdrant-api-key' \
    --target.collection 'your-collection'

Within the Same Instance

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://localhost:6334' \
    --source.collection 'original-collection' \
    --target.url 'http://localhost:6334' \
    --target.collection 'new-collection'

With Parallel Workers

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant \
    --source.url 'http://source-instance:6334' \
    --source.api-key 'source-api-key' \
    --source.collection 'your-collection' \
    --target.url 'https://your-instance.cloud.qdrant.io:6334' \
    --target.api-key 'your-qdrant-api-key' \
    --target.collection 'your-collection' \
    --migration.num-workers 4

All Source Flags

Flag Required Description
--source.collection Yes Source collection name
--source.url No Source gRPC URL (default: http://localhost:6334)
--source.api-key No API key for the source instance
--source.max-message-size No Maximum gRPC message size in bytes (default: 33554432 = 32 MB)

All Target Flags

Flag Required Description
--target.collection Yes Target collection name
--target.url No Target gRPC URL (default: http://localhost:6334)
--target.api-key No API key for the target instance
--target.ensure-payload-indexes No Recreate payload indexes from source (default: true)

Parallel Worker Option

Flag Default Description
--migration.num-workers Number of CPU cores Number of parallel workers for migration

Gotchas

  • Source and target must differ: You cannot migrate a collection to itself.
  • Parallel workers and resume: Migration progress is tracked per worker. If you change --migration.num-workers between runs, the saved offsets are invalidated and the migration restarts from scratch. Use --migration.restart explicitly if you intentionally want to change the worker count.
  • Large messages: If you encounter gRPC message size errors, increase --source.max-message-size.
  • Existing target collection: If the target collection already exists, the tool uses it as-is without modifying the schema.

Next Steps

After migration, verify your data arrived correctly with the Migration Verification Guide.