mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-03 01:48:32 +02:00
* 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>
4.7 KiB
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-workersbetween runs, the saved offsets are invalidated and the migration restarts from scratch. Use--migration.restartexplicitly 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.