记录一次阿里云Redis生产数据迁移

迁移背景:原阿里云账号下ECS服务器和云数据库快过期了,客户选择不续费,自行购买新账户,想把生产上的项目和数据全部由A阿里云账户迁移到B阿里云账户。迁移的过程是取用户访问较少的时间段挂维护页,进行停机迁移。项目的迁移比较简单,保持环境一致,将配置改为迁移完数据后的数据库地址。这里讲讲阿里云Redis迁移的过程。

阿里云文档里对于Redis迁移的选择描述的很清楚:

迁移方案概览

一.DTS数据迁移:

这是阿里云提供的最稳妥的迁移方式,能使用DTS还是使用DTS迁移。

在这里插入图片描述

(1)用公网ip自建数据库

没有选择的原因还是因为我们自己的公网ip下的redis拿来做测试库了

(2)ECS上的自建数据库

没有选择是因为相当于要导入两次,首先在云redis里的备份与恢复选项下下载RDB文件,再去一个ECS服务器里安装一个Redis,再将RDB文件导入进去。然后再用DTS传输。。。我觉得导入两次风险更高,有少导入的选项我会优先选择导入一次的操作

二.官方提供本身提供的RDB/AOF数据文件导入

如果是Redis安装在自己的服务器上,可以进入服务器,将数据文件放在Redis目录下进行恢复操作。但是云Redis的话暂时不知道怎么进入安装Redis的主机,如果有清楚的小伙伴可以告知一下

三.使用redis-shake迁移RDB文件内的数据

redis-shake是阿里云自研的开源工具,支持对Redis数据进行解析(decode)、恢复(restore)、备份(dump)、同步(sync/rump)。

没有使用同步的原因是因为要求同一个阿里云账号下的不同云redis才能进行同步。

备份已经在阿里云redis控制台备份好了,直接下载RDB文件就行了。

已有RDB文件所以只需要利用redis-shake进行恢复操作就可以了。

恢复操作文档

(1)在github上下载最新的redis-shake并上传到ECS上,解压后修改redis-shake.conf(配置文件所有属性都有中文备注作用,很详细,好评)

(2)因为我们的项目使用的是redis上的db0,所以配置了filter.db.whitelist,其他人请根据项目实际情况进行配置

source.rdb.input = rdb文件路径

target.address = 目的Redis的连接地址:端口号

target.password_raw = 目的Redis的连接密码

# how to solve when destination restore has the same key.
# rewrite: overwrite. 
# none: panic directly.
# ignore: skip this key. not used in rump mode.
# used in `restore`, `sync` and `rump`.
# 当源目的有重复key,是否进行覆写
# rewrite表示源端覆盖目的端。
# none表示一旦发生进程直接退出。
# ignore表示保留目的端key,忽略源端的同步key。该值在rump模式下没有用。
key_exists = ignore


# 指定的db被通过,比如0;5;10将会使db0, db5, db10通过, 其他的被过滤
filter.db.whitelist = 0

(3)./redis-shake.linux -conf=redis-shake.conf -type=restore(请注意:官网的命令应该是之前版本的操作语句,没有及时更新,如果按阿里云文档里的./redis-shake -type=restore -conf=redis-shake.conf 操作方式是无法启动的,请记得加上.linux进行操作)

最后附恢复完成后的截图

在这里插入图片描述

最后可以用redis-full-check来校验迁移后的数据

校验迁移后的数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值