Skip to content

v0.6.0

Choose a tag to compare

@zhuwenxing zhuwenxing released this 16 Sep 11:42
· 101 commits to main since this release
6e52dff

0.6.0 is a feature release built against Milvus 3.0. Its three headline themes are a new snapshot-based backup format, a redesigned v2 configuration, and a much stricter secondary (cross-cluster) restore. It also requires Go 1.26 to build from source.

Highlights

Snapshot backup format for Milvus 3.0

Backups can now be produced as snapshot bundles: instead of copying binlogs file by file, milvus-backup asks the Milvus server to export a snapshot of each collection and records a pointer to the exported bundle in the backup meta. Restoring replays the bundle through the server's import path, keeping the server authoritative over segment layout. The snapshot path works with the MinIO/S3, GCP/gcpnative, Azure, and local-storage backends, and supports skip_params, collection description overrides, and non-binding max_shard_num on restore. (#1120, #1131, #1132, #1133, #1134, #1139, #1140, #1141, #1142, #1147, #1160, #1164, #1173, #1179, #1181, #1214)

v2 configuration

A new configVersion: v2 schema replaces the flat v1 yaml. v1 configs keep working — they are translated to v2 at load time — and milvus-backup config migrate prints the translated v2 file for you to keep. Sample configs now ship as v2, unknown v2 keys produce warnings instead of hard failures, and config show prints the effective configuration, superseding check config. (#1095, #1096, #1097, #1102, #1104, #1105, #1106, #1118, #1154, #1212, #1215)

Safer secondary restores

Restoring a backup into a different cluster is now guarded end to end: the restore refuses backups taken without --backup_index_extra or without full cluster meta, stages binlogs through Milvus storage so cross-bucket restores work, waits for each created collection to exist before importing into it, and tracks every import job from the moment it is submitted. Struct-array sub-fields and struct-level nullable flags survive the round trip. (#1077, #1168, #1175, #1177, #1185, #1188, #1192, #1193, #1195)

Breaking changes and behavior changes

  • Flags deprecated in 0.5 are now rejected. Commands that printed a deprecation warning in 0.5.x now fail; remove the flags or switch to their replacements. (#1109)
  • auto backup format defaults to snapshot on Milvus 3.0 servers. Pass --format binlog to create to keep the 0.5 behavior. (#1135, #1137)
  • External collections are skipped during backup instead of failing or being half-copied. (#1123)
  • check config is deprecated in favor of config show. (#1098)
  • Building from source now requires Go 1.26. (#1081)

Other features and fixes

  • Add the l0compact command to fold backup L0 segments into per-segment deltalogs (#1074, #1128)
  • create --for purpose presets: secondary, archive, clone (#1222)
  • Make the segments merged into one import job configurable (#1117)
  • Print the effective config before connecting in check, and log the resolved transfer mode when a task starts (#1060, #1108)
  • Record async backup initialization failures instead of losing them (#1189)
  • Detect the server version from every string milvus reports (#1116)
  • Say which collections a skipped dynamic field task leaves incomplete (#1190)
  • Probe etcd at task start and bound every etcd read (#1218)
  • Read azure objects via download stream, stop goroutines spawned by prefix operations on exit, and abort multipart uploads on a detached context (#1093, #1150, #1151)
  • Treat an empty CopyObject ETag as a failed copy (#1220)
  • Write the bootstrap logger to stderr and drop the unused log rate limiter (#1111, #1112)

Internal refactoring, test, CI, and dependency changes are omitted here — see the full changelog below.

New Contributors

Full Changelog: v0.5.16...v0.6.0