这还真是个大活,耗费了整整一天的时间。

究其原因根本就是无论AWS托管的Valkey还是社区的Redis.io,都是被魔改过的阉割版,真是无语他妈给无语开门,无语到家了!

说一下详细的过程:

接到这个任务,首先想到的是同步软件redis-Gunyu

https://github.com/mgtv-tech/redis-GunYu

结果是失败,原因很奇葩,因为aws valkey是必须带tls连接的,Gunyu不支持,放弃。

然后找到了redis-shake

https://tair-opensource.github.io/RedisShake

结果还是失败,理由是不支持PSync,用了scan_reader也失败

image-20250820141906654

然后就又想到了万能的ChatGPT和Google的Gemini,分别给了2个python程序,也是失败

原因是不支持Migrate命令,而且valkey是基于redis 7.2改的,而Redis.io是8.0,命令不兼容

走投无路之下想到了rdb-tools,先把valkey做个备份,放到S3桶里

valeky-20250819-0001.rdb
valeky-20250819-0002.rdb
valeky-20250819-0003.rdb
valeky-20250819-0004.rdb
valeky-20250819-0005.rdb
valeky-20250819-config.json

cat valeky-20250819-config.json 
{
  "valeky-20250819/valeky-20250819-0002.rdb" : {
    "Slots" : "0-5496",
    "rdbSize" : "5234516"
  },
  "valeky-20250819/valeky-20250819-0004.rdb" : {
    "Slots" : "5497-8375",
    "rdbSize" : "4340658"
  },
  "valeky-20250819/valeky-20250819-0003.rdb" : {
    "Slots" : "10082-16383",
    "rdbSize" : "5962581"
  },
  "valeky-20250819/valeky-20250819-0001.rdb" : {
    "Slots" : "8376",
    "rdbSize" : "2218"
  },
  "valeky-20250819/valeky-20250819-0005.rdb" : {
    "Slots" : "8377-10081",
    "rdbSize" : "1540505"
  }
}

看起来是5个rdb备份,每个文件对应redis不同的slots

用rdb来解析备份文件,结果失败,因为不认识valkey rdb的版本。

没办法了,又找到了这个软件

https://github.com/HDT3213/rdb

下载后,首先想处理成json文件,然后灌入到redis.io

./rdb-linux-amd64 -c json -o 0001.json valeky-20250819-0001.rdb

失败,因为json文件灌入的时候redis.io又被阉割了,命令不支持

走投无路,走投无路,走投无路啊!!!欲哭无泪,欲哭无泪,欲哭无泪啊!!!

没办法了,用redis-shake把rdb文件逐个灌进去

[rdb_reader]
filepath = "/root/redis/rdbs/valeky-20250819-0001.rdb"

[redis_writer]
cluster = false
address = "redis-22222.c1.ap-southeast-1-1.ec2.redns.redis-cloud.com:22222"
username = "default"              
password = "ABCDEFG"          
tls = false

执行了5次,就可以了。

后续啊:可以先去下个rdt

https://github.com/leonchen83/redis-rdb-cli/

把5个rdb合成一个,然后再灌入。

./rdt -m ../../valeky-20250819-0001.rdb ../../valeky-20250819-0002.rdb ../../valeky-20250819-0003.rdb ../../valeky-20250819-0004.rdb ../../valeky-20250819-0005.rdb -o all.rdb

真的是累死了。