Redis单实例数据迁移到集群

296 字
1 分钟
Redis单实例数据迁移到集群

Redis单机搭建#

Redis集群搭建#

在使用redis4前,可以使用redis-migrate-tool工具做redis在线数据迁移(参考https://wxy0327.blog.csdn.net/article/details/84138537)。但是我们现在使用的redis server已经升级到5.0.8版本,再用redis-migrate-tool做迁移会报错:

Terminal window
[2019-04-19 13:26:35.847] rmt_redis.c:6446 ERROR: Can't handle RDB format version 455180296
[2019-04-19 13:26:36.484] rmt_redis.c:6715 ERROR: Rdb file for node[140.210.73.38:20003] parsed failed
  • 查看集群状态

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-cli --cluster check 172.16.10.68:9001 -a 123456

    1590637979702
    1590637979702

  • 将所有master上的slot重新分配到一个master(9001)上

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-cli -a 123456 --cluster reshard --cluster-from 2ece1101b759edbefcd320335d8740cccb9c68e3 --cluster-to 60316a4ef20569e1fe9279305c7f9afeb02f57ac --cluster-slots 5461 --cluster-yes 172.16.10.68:9001
    /opt/redis-cluster/redis9001/bin/redis-cli -a 123456 --cluster reshard --cluster-from 5e7a45a3393bb890ef11e37aa7d34939105535bb --cluster-to 60316a4ef20569e1fe9279305c7f9afeb02f57ac --cluster-slots 5462 --cluster-yes 172.16.10.68:9001
  • 停止上一步唯一持有slots的master

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-cli -h 172.16.10.68 -p 9001 -a 123456
    172.16.10.68:9001> shutdown
    not connected>
  • 将单实例持久化的rdb文件或aof文件拷贝到唯一持有slots的master的数据目录下

    同时有rdb和aof会优先加载aof 持久化文件的拷贝和上传这里不做描述

    使用XFTP等工具或者在本机直接复制(cp命令)

  • 启动唯一持有slots的master

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-server /opt/redis-cluster/redis9001/bin/redis.conf

    1590643312466
    1590643312466

  • 检查redis集群状态

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-cli --cluster check 172.16.10.68:9001 -a 123456
  • 在集群master间重新分配slots

    Terminal window
    /opt/redis-cluster/redis9001/bin/redis-cli -a 123456 --cluster reshard --cluster-from 60316a4ef20569e1fe9279305c7f9afeb02f57ac --cluster-to 5e7a45a3393bb890ef11e37aa7d34939105535bb --cluster-slots 5462 --cluster-yes 172.16.10.68:9001
    /opt/redis-cluster/redis9001/bin/redis-cli -a 123456 --cluster reshard --cluster-from 60316a4ef20569e1fe9279305c7f9afeb02f57ac --cluster-to 2ece1101b759edbefcd320335d8740cccb9c68e3 --cluster-slots 5461 --cluster-yes 172.16.10.68:9001

    参考

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Redis单实例数据迁移到集群
https://tianch.com.cn/posts/tutorials/redis-dan-shi-li-shu-ju-qian-yi-dao-ji-qun/
作者
田小晖
发布于
2020-05-28
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
田小晖
记录技术成长,分享运维与开发经验。
公告
分类
标签
站点统计
文章
134
分类
9
标签
29
总字数
203,962
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.15.6
文章许可
CC BY-NC-SA 4.0