Redis 8.6 RDB format 13 → Valkey 9.1 migration without data loss #4848
|
Hi Valkey community, We are migrating an existing deployment from Redis 8.6 to Valkey 9.1 and are looking for the recommended way to safely migrate the persisted data. Current setup
The persisted database is therefore: During a normal restart, Redis loads this RDB from the PV and restores the dataset. During the Redis → Valkey upgrade, Valkey sees the same persisted RDB but fails during startup with: We understand that Redis CE 7.4+ persistence files are not directly compatible with Valkey. Important constraintWe cannot package or ship the Redis 8.6 server binary together with the Valkey image due to security/compliance restrictions. Therefore, an approach where Valkey starts a temporary Redis 8.6 server to read the old RDB is not suitable for us. We need to preserve the existing data with effectively zero data loss during the upgrade. QuestionsWhat is the recommended migration strategy for this scenario? In particular:
Conceptually:
Our main requirement is to perform the upgrade without silently losing or modifying persisted customer data. Any recommended migration procedure, existing tooling, or examples would be very helpful. |
Replies: 1 comment
|
i checked the valkey 9.1 source on this: rdb versions 12 to 79 are reserved as foreign formats, redis 8.6 writes 13, and the version check is strict with no toggle. so the rdb file path is fully dead, and since you cant ship the 8.6 binary either, logical export is the only way through. your proposed flow is the right shape: export everything logically while 8.6 is still running, stash it on the pv, upgrade the image, import into valkey. redis-shake in scan mode does this over the wire without touching the rdb file. a dump/restore loop per key also works and keeps ttls and binary values intact. two things to watch with your dataset: streams and hash field expirations need a tool that understands them, naive get/set copies will silently drop that metadata. and search module indexes wont transfer at all, plan to rebuild those after the import. verify with key counts plus spot checks on each data type before you cut over. |
i checked the valkey 9.1 source on this: rdb versions 12 to 79 are reserved as foreign formats, redis 8.6 writes 13, and the version check is strict with no toggle. so the rdb file path is fully dead, and since you cant ship the 8.6 binary either, logical export is the only way through.
your proposed flow is the right shape: export everything logically while 8.6 is still running, stash it on the pv, upgrade the image, import into valkey. redis-shake in scan mode does this over the wire without touching the rdb file. a dump/restore loop per key also works and keeps ttls and binary values intact.
two things to watch with your dataset: streams and hash field expirations need a tool that unde…