赞
踩
迁移背景:原阿里云账号下ECS服务器和云数据库快过期了,客户选择不续费,自行购买新账户,想把生产上的项目和数据全部由A阿里云账户迁移到B阿里云账户。迁移的过程是取用户访问较少的时间段挂维护页,进行停机迁移。项目的迁移比较简单,保持环境一致,将配置改为迁移完数据后的数据库地址。这里讲讲阿里云Redis迁移的过程。
阿里云文档里对于Redis迁移的选择描述的很清楚:
这是阿里云提供的最稳妥的迁移方式,能使用DTS还是使用DTS迁移。
没有选择的原因还是因为我们自己的公网ip下的redis拿来做测试库了
没有选择是因为相当于要导入两次,首先在云redis里的备份与恢复选项下下载RDB文件,再去一个ECS服务器里安装一个Redis,再将RDB文件导入进去。然后再用DTS传输。。。我觉得导入两次风险更高,有少导入的选项我会优先选择导入一次的操作
如果是Redis安装在自己的服务器上,可以进入服务器,将数据文件放在Redis目录下进行恢复操作。但是云Redis的话暂时不知道怎么进入安装Redis的主机,如果有清楚的小伙伴可以告知一下
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来校验迁移后的数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。