aws-redis数据非实时迁移

本文详细介绍了如何使用RedisShake工具解决从自建数据库到AWS Redis集群迁移过程中的问题,包括大文件同步失败、实时同步需求、配置详解和常见错误及其解决方案。

一、背景

因为一套环境要迁移到aws redis上,原本打算采用rdb上传到s3中,然后在创建新集群的时候使用s3种子的方式将rdb文件加载到新的集群中,这样比较方便快捷,但是遇到了两个问题,
问题一是在大的rdb文件应用时会出现创建失败,
这是因为我从单点迁移到集群的时候,单点中不只db0有数据,而其他库也有数据,但集群只有db0,所以出现了问题
问题二是这种方法没有办法实时同步,无法达到想要的平滑切换的效果

二、使用工具

工具名:redis-shake

1.下载

下载地址:https://github.com/alibaba/RedisShake/tags

 wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz

2.解压

tar xzf redis-shake-v2.0.3.tar.gz

3.编辑配置文件

cd redis-shake-v2.0.3
vim redis-shake.conf

4.配置文件详解

参数名 解释
source.type 根据源库(自建数据库)的架构选择,取值:standalone:主从架构。cluster:集群架构。
source.address 源库的连接地址和端口号,连接地址和端口号之间使用英文冒号(:)分隔。
source.password_raw 源库的密码,如果源库未设置密码,无需填写
target.type 同source.type
target.address 同source.address
target.password_raw 同source.password_raw
target.db 将源库中所有库的数据都迁移至目标库的指定库中,取值范围为0~15。说明 默认值为-1,表示不启用该功能。
key_exists 当源库中的Key与目标库中的Key相同时,采取的数据写入策略,取值:rewrite:覆盖写入至目标库。none:默认值,停止运行Redis-shake程序并提示冲突的Key。ignore:直接跳过当前迁移的Key,保留目标库的数据,继续执行数据迁移
filter.db.whitelist 需要迁移的库名,多个库名间用英文分号(;)分隔,默认为空,即迁移所有库。例:0;1
filter.db.blacklist 不需要迁移的库名(即黑名单),多个库名间用英文分号(;)分隔。默认为空,即不设置黑名单。例:0;1
parallel Redis-shake执行迁移的并发线程数,适当调大该值可提高同步性能

5.配置文件示例

# 单点
source.type = standalone
source.address = redis_ip:redis_port
# password of db/proxy. even if type is sentinel.
source.password_raw = password
# 集群
target.type = cluster
target.address = redis_ip:redis_port;redis_ip:redis_port;redis_ip:redis_port
# 如果没有密码则可以不用填
target.password_raw =
key_exists = rewrite

5.1.启动

5.1.1 普通启动方式

 nohup ./
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值