Limits and gotchas: migrate from Aiven to KiviDB

ERR key must be valid UTF-8, and both copy tools stop at the first one. Find them before you start, for example with a SCAN script that checks each name…

  • Key names that are not valid UTF-8. KiviDB refuses them with ERR key must be valid UTF-8, and both copy tools stop at the first one. Find them before you start, for example with a SCAN script that checks each name, and rename them on the source.
  • Valkey 9 formats: see Valkey 9.
  • HyperLogLogs. KiviDB's HyperLogLog layout is not Redis's. After the copy, compare PFCOUNT on a few HyperLogLog keys on both sides; if they differ, rebuild them with PFADD from your source data.
  • Search indexes. Valkey search indexes are not copied by any of these tools. Run FT.CREATE on KiviDB; it indexes the keys already there.
  • Function libraries (FUNCTION LOAD) are not keys, so the copy tools don't move them. Load them again on KiviDB (the lua or full build, or the Lua add-on on Cloud).
  • Users are not copied. Recreate them on KiviDB.
  • Keyspace notifications. If you turned them on for the cutover and your application doesn't need them, turn them off on KiviDB afterwards; they cost a little on every write.
  • Free-plan services can be powered off by Aiven when idle. Check the service is running before you start a long copy.
  • Aiven closes TLS connections after 12 hours. Plan a long-running copy (a very large service, or a live copy left running for days) with that in mind, and check the tool's log for reconnects.