将集群 A 数据最终迁移到阿里云reids C 上
由于各种网络限制的原因,加了个中转的redis,当然这些ip都是假的
A (192.168.1.1)源集群
B (192.168.2.2) 中转数据
C (192.168.3.3) 目标集群
A只能与B通信 C也只能与B通信 ,C是个阿里云的pass服务,无法直接加载rdb文件
一、源集群A查看
-
连接redis集群
./redis-cli -c -h 192.168.1.1 -p 6379 -a '密码'
-
查看reids服务信息
info server
-
统计数据库键空间的信息
info keyspace
二、导出数据
2.1 导出rdb文件
bash
/opt/redis/bin/redis-cli -c -h 192.168.1.1 -p 6379 -a 'kn88213**27' --rdb /data/great/dumped_source.rdb
2.2. 通过scp传输到B
bash
scp -r -P 22 /data/great/dumped_source.rdb root@192.168.2.2:/data/great/
三、搭建中转的redis B,并替换rdb文件
3.1 临时安装了一个redis 中转数据,安装步骤省略
3.2 . 停止redis服务
bash
ps -ef|grep redis
kill -9 进程号
3.3. 将A导出的rdb文件,放到B下的数据目录
bash
mv /data/great/dumped_source.rdb /data/soft/redis/bin
3.4. 删除原来的dump.rdb,并替换
bash
rm -rf dump.rdb
mv dumped_source.rdb dump.rdb
3.5 然后启动 B redis
bash
./redis-server /etc/redis.conf
3.6. 登录查看数据是否恢复成功
bash
/data/soft/redis/bin/redis-cli -p 6319
info keyspace
四、通过 redis-shake 工具将数据同步到 C 192.168.3.3
4.1 清空目标库
bash
/data/soft/redis/bin/redis-cli -h 192.168.3.3 -p 6379 -a 'p8122295s9YtHUG3Yv7'
清空
bash
select 3
flushdb
4.2 下载redis-shake工具解压,修改配置文件shake.toml
https://github.com/tair-opensource/RedisShake/releases
bash
redis-shake-v4.5.0-linux-amd64.tar.gz
修改配置文件
bash
cd /data/soft/shake
vim shake.toml
bash
[sync_reader]
address = "127.0.0.1:6319"
sync_aof = false
[redis_writer]
address = "192.168.3.3:6379"
password = "122295s9YtHUG3Yv7"
[filter]
allow_db = [8]
function = """
if DB == 8 then
shake.log("Moving key '" .. KEYS[1] .. "' from DB8 to DB7")
shake.call(7, ARGV) -- 将命令的目标数据库改为 3
else
-- 理论上,由于 allow_db=[8],这里的代码不会被执行到
shake.log("Skipping DB " .. DB)
end
"""
4.3 启动redis-shake工具开始同步
bash
./redis-shake shake.toml