Redis-shake工具 [ 自建redis集群->云redis主从 ]

redis-shake工具是阿里用go写的开源工具

开始前准备

1. 确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)
2. 获取ECS实例的内网IP地址,即执行操作的机器IP
3. 将ECS实例的内网IP地址添加至Redis实例的白名单中

安装Redis-shake

1. 安装Redis-shake的设备,例如ECS实例
2. 使用下述命令下载工具
   # wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
3. 解压Redis-shake文件
   # tar xzf redis-shake-v2.0.3.tar.gz

迁移Redis

在安装Redis-shake的设备上,执行数据迁移

修改配置文件

1. 执行下述命令进入解压后的目录并修改配置文件:
# cd redis-shake-v2.0.3/ && vim redis-shake.conf
conf.version = 1
id = redis-shake
log.file = /data/software/redis-shake-v2.0.3/redis-shake.log
log.level = info
parallel = 8
source.type = cluster
source.address = 172.18.0.232:7001;172.18.0.233:7001;172.18.0.234:7001
source.password_raw = username:password     //用户名:密码
source.auth_type = auth
target.type = standalone
target.address = r-wz9xxxgi3xxxxxgj:6379    //云redis地址和端口
target.password_raw = r-wz9xxxgi3xx:xxxSO0  //用户名:密码
target.auth_type = auth
target.db = -1                              //是否迁移到同一个db中去
key_exists = rewrite
filter.db.whitelist = 0;70;71;72;73

启动Redis-shake,开始执行数据迁移

./redis-shake.linux -type=sync -conf=redis-shake.conf

Redis-shake将在屏幕上打印运行的日志信息。

迁移日志观察

1. 当打印的日志出现sync rdb done,表示完成全量数据迁移,接下来进入增量数据迁移阶段。
2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB -       4.00MB [100%]  entry=97531
2020/12/16 21:02:36 [INFO] DbSyncer[0] sync rdb done
2. 增量迁移日志 2020/12/16 21:03:10 [INFO] DbSyncer[0] sync: +forwardCommands=645 +filterCommands=0 +writeBytes=657255 2020/12/16 21:03:11 [INFO] DbSyncer[0] sync: +forwardCommands=28 +filterCommands=0 +writeBytes=28532 2020/12/16 21:03:12 [INFO] DbSyncer[0] sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0
  • forwardCommands:源库发送过来的命令数。
  • filterCommands:被过滤的命令数,例如在Redis-shake配置文件中设置了过滤某些库。
  • writeBytes:源库发送过来的字节数。

 暂停向源库写入数据,等待返回日志中writeBytes对应值连续多次为0时,使用Ctrl+C组合键停止运行Redis-shake。

1. 当多次+writeBytes为0,则可终止同步
2020/12/16 21:03:12 [INFO] DbSyncer[0] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
2020/12/16 21:03:12 [INFO] receive signal interrupt

 

参考:  https://help.aliyun.com/document_detail/111066.html?spm=a2c4g.11186623.6.646.4bd72074q7LKOV

          https://www.cnblogs.com/xingxia/p/redis_migration_tool.html

 

posted @ 2021-07-19 11:33  江曹  阅读(429)  评论(0)    收藏  举报