一、redis集群迁移的几种方式
- 离线迁移:通过rdb或者aof文件的方式,实现离线迁移
缺点:版本限制,不同版本启动时,可能会出现覆盖数据文件的情况(也可能是集群模式的限制);需要停机,会造成数据不一致问题。 - 使用shell脚本,单库对单库,性能极低,生产环境不能使用。
- 主从同步:成为从节点slaveof ip port,然后再断开slavof no one
缺点:需要停止写入数据,否则也会造成数据不一致;集群模式下,操作复杂。 - 使用阿里开源redis-shake工具,推荐,下面重点讲解。
二、redis-shake官方百科
官方wiki文档:https://github.com/alibaba/RedisShake/wiki/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E9%85%8D%E7%BD%AE%EF%BC%9F
本次迁移重点关注章节3.2、章节4、章节5。
本次集群版cluster到集群版cluster配置说明
修改redis-shake.conf内容如下:
# 日志输出配置 log.file = /weblogic/var/redis-shake.log # 源集群配置 source.type = cluster source.address = 127.0.0.1:20441;127.0.0.1:20441;127.0.0.1:20441 source.password_raw = # 目标集群配置 target.type = cluster target.address = 127.0.0.1:6379;127.0.0.1:6379;127.0.0.1:6379 target.password_raw = # 当源目的有重复 key 时是否进行覆写 key_exists = rewrite
执行命令:
./redis-shake.linux -conf=redis-shake.conf -type=sync & tail -f redis-shake.log
三、全能宝redis集群本次迁移中遇到的一些问题和经验
1.部署redis-shake的机器,要对源集群和目标集群都有网络权限
2.内存、读写io及内网带宽占用:
redis-shake的sync模式同步效率默认为32线程,效率非常高,但是非常占用源集群的内存以及内网带宽,一方面是因为,sync同步模式分为以下三步:
a. 等待源端save rdb完毕
b. 全量同步阶段,显示百分比
c. 增量同步,出现字样sync rdb done后,当前dbSyncer进入增量同步
本次全能宝迁移的数据体量如下图:
可以看出,内存占用平均在1gb左右,所以执行bgsave至少需要1gb的空闲内存。
rdb文件的大小,大约在300-400mb左右,所以同步rdb文件的读写io占用也很高。
所以,生产环境尽量选择夜深人静的时候迁移。
3.集群模式下,尽量使用源集群的从节点进行数据同步,减少对源集群的性能影响
4.redis-shake截至2022.8.17最新版本为3.0.0,但是3版本为重构版,目前功能不全,所以本次使用的2.1.1版本。
标签:127.0,在线,0.1,Redis,redis,集群,shake,迁移 From: https://www.cnblogs.com/wmy666/p/18036907