单机redis升级及数据迁移方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单机redis升级及数据迁移方案相关的知识,希望对你有一定的参考价值。

参考技术A 1、我们先装一个新的redis,最好不要在一台机器,windows下直接会被覆盖,要是用一台机器现进行备份
2、做数据迁移,使用最简单粗暴的方式了
redis-cli连上后运行

把dump.rdb复制到新redis的目录下,重启新redis

应用重新连接到新redis

这种方式太过于除暴,会丢掉中间这段时间的增量数据,最好是用户不用或少用的时段进行操作
如果只是当缓存,丢了也关系不大
如果不能忽略上面的问题则需要是用其他方式做数据迁移

redis 版本升级数据迁移使用Redis-Shake

RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。
本文以Linux系统环境为例,介绍如何使用Redis-Shake工具进行Cluster集群数据迁移


在线迁移
在线迁移主要适用于自建Redis Cluster集群迁移到DCS Cluster集群的场景,且两端集群实例能够网络连通,或者有一台中转服务器能够连通两端集群实例。
部署在其他云厂商Redis服务上的Cluster集群数据,由于SYNC、PSYNC命令被云厂商禁用,暂不支持在线迁移。

1,创建redis-cluster集群实例.详情见上一章。
注意集群的内存规格不能小于源端Cluster集群


2,准备迁移包
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.3-20200724/redis-shake-v2.0.3.tar.gz
tar xf redis-shake-v2.0.3.tar.gz
cd redis-shake-v2.0.3

 

 

 

3,修改配置
vim redis-shake.conf
# log file,日志文件,不配置将打印到stdout (e.g. /var/log/redis-shake.log )
log.file = /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log/redis-shake.log

# pid path,进程文件存储地址(e.g. /var/run/),不配置将默认输出到执行下面,
# 注意这个是目录,真正的pid是`{pid_path}/{id}.pid`
pid_path = /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log

# 源端redis的类型,支持standalone,sentinel,cluster和proxy四种模式,注意:目前proxy只用于rump模式。
source.type = cluster

# 架构,比如codis, twemproxy, aliyun proxy等需要配置所有master或者slave的db地址。
source.address = 10.10.202.190:7005;10.10.202.190:7006;10.10.202.190:7004
# password of db/proxy. even if type is sentinel.
source.password_raw = Lining123

# 目的redis的类型,支持standalone,sentinel,cluster和proxy四种模式。
target.type = cluster

target.address = 10.10.202.151:7001;10.10.202.151:7002;10.10.202.151:7003
# password of db/proxy. even if type is sentinel.
target.password_raw =

# rewrite表示源端覆盖目的端。
# none表示一旦发生进程直接退出。
# ignore表示保留目的端key,忽略源端的同步key。该值在rump模式下没有用。
key_exists = rewrite


4,执行同步 ,建议同步时停止业务
 ./redis-shake.linux -conf=redis-shake.conf -type=sync
 
 在打开一个窗口执行
 tailf -100 /home/ap/cloudapp/redis/dump/redis-shake-v2.0.3/log/redis-shake.log

DbSyncer[1] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0    # 代表同步完成

DbSyncer[1] sync:  +forwardCommands=3      +filterCommands=0      +writeBytes=158 #代表有数据写入

 

以上是关于单机redis升级及数据迁移方案的主要内容,如果未能解决你的问题,请参考以下文章

线上项目腾讯云平滑迁移方案及步骤

线上项目mysqlredis平滑迁移方案及步骤

Redis数据迁移方案

MINIO-Bucket数据迁移方案

redis数据迁移

Redis单实例数据迁移到集群