一般来讲,如果我们要从自建的redia迁移到阿里的redis,可以采用aof文件的办法,通过:
1 |
CONFIG SET appendonly yes |
创建一个aof文件,也可能你的配置下本来就有这个文件,然后通过:
1 |
tail -n $big_number -f appendonly.aof |redis-cli target_host target_port |
其中 $big_number 是一个足够大的数,保证tail是从文件的第一行开始的,如此,则可以保证源redis和目标redis的数据是一致的,代码上修改完配置后,源redis不再有写入,即可废掉源redis
由于阿里云的redis没有一个可以供我们tail的aof文件,所以,没法通过上述办法将阿里云redis数据平滑迁移到本地(抑或是阿里云其他)redis实例,不过也可以有不太平滑的办法的。
阿里云redis的备份其实就是一个rdb文件,只需要:
方案一:
- 停掉redis
- 创建redis备份 (这个在阿里云控制台是支持的)
- 下载备份
- 根据备份启动redis实例
- 生成一个aof文件
- cat aof | redis-cli target_host target_port 即可
- 如果需要在迁移的同时修改db号,即: 将db 1 中的数据迁移到db 2中,可参考: https://phpor.net/blog/post/5614
- 该方案需要暂停服务的
方案二:
- 使用工具 https://github.com/vipshop/redis-migrate-tool https://q.cnblogs.com/q/93181/
- 该方案没法将源db修改成目标的其他db
方案三: