Redis单实例数据迁移到集群

迁移步骤:

(1)停掉项目,停止对redis单实例的数据写入。

(2)登录单实例redis客户端通过命令keys *查看当前单实例缓存的所有数据条数,记录下来。

(3)假如单实例redis同时开启了RDB和AOF,只要AOF文件就可以了,因为当AOF和RDB同时存在的时候,Redis还是会先加载AOF文件的,在单实例redis上执行BGREWRITEAOF保存数据,如果没有开启AOF只开了RDB则执行SAVE,SAVE 命令执行完之后会返回OK。

本项目的Redis只开了RDB,故执行save

 

(4)先把集群的所有slot分配到一个主节点

查看集群当前卡槽分配情况

# /opt/redis-4.0.10/src/redis-trib.rb check 192.168.8.238:6381

>>> Performing Cluster Check (using node 192.168.8.238:6381)

M: bb3536e32589f063563b2dfb8572151a05615e5d 192.168.8.238:6381

   slots:10923-16383 (5461 slots) master

   1 additional replica(s)

M: 603335a86d29cadbd5823b046be09594d115f16a 192.168.8.238:6383

   slots:5461-10922 (5462 slots) master

   1 additional replica(s)

S: 9fec5d7d62ee564e2f4ee1e293891a86ea21b05b 192.168.8.238:6385

   slots: (0 slots) slave

   replicates 603335a86d29cadbd5823b046be09594d115f16a

M: a5a1858f829423dc42703f6340dcdc48f9381d55 192.168.8.238:6382

   slots:0-5460 (5461 slots) master

   1 additional replica(s)

S: b2da0f647af50dadc93ddf08093a36507cc2ec29 192.168.8.238:6384

   slots: (0 slots) slave

   replicates bb3536e32589f063563b2dfb8572151a05615e5d

S: 5302abfb43ca2efe12dc04903b3c8225f119d0e2 192.168.8.238:6386

   slots: (0 slots) slave

   replicates a5a1858f829423dc42703f6340dcdc48f9381d55

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

可以看到192.168.8.238:6381分配的卡槽是10923-16383

192.168.8.238:6383分配的卡槽是5461-10922

192.168.8.238:6382分配的卡槽是0-5460

我们现在要将192.168.8.238:6383和192.168.8.238:6381的卡槽迁移到192.168.8.238:6382上面去

先将192.168.8.238:6383的卡槽迁移到192.168.8.238:6382

# /opt/redis-4.0.10/src/redis-trib.rb reshard 192.168.8.238:6381

该过程会先让你输入迁出多少个卡槽,然后输入迁到哪个卡槽再输入从哪迁

 

 

同上将192.168.8.238:6381的卡槽迁移到192.168.8.238:6382

都迁移完成后所有的槽位都会在192.168.8.238:6382上

可以用一下命令查看

# /opt/redis-4.0.10/src/redis-trib.rb check 192.168.8.238:6381

(5)因为本项目Redis采用的是RDB持久化,所以把单实例的数据备份dump.rdb文件拷贝到192.168.8.238:6381的数据目录里,重启192.168.8.238:6381,然后登录该节点客户端通过keys *查看总条数跟之前记录的总条数对比看是否全部迁移过来,如果有全部迁移即可。

(6)参照步骤(4)把迁移出来的slot都按原路迁移回去,数据迁移就完成了。

三、参考资料:

单实例redis数据迁移到集群参考

https://www.cnblogs.com/zphqq/p/11315852.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Redis持久化RDB和AOF实现原理

Redis持久化RDB和AOF为什么Redis需要持久化?因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。Redis中都有哪些持久化机制?Redis早

Redis 集群演进探讨和总结

Redis为什么需要集群?首先Redis单实例主要有单点,容量有限,流量压力上限的问题。Redis单点故障,可以通过主从复制replication,和自动故障转移sentinel哨兵机制。但Redis单Master实例提供读写服务,仍然有容量和压力问题,因此需要数据分区,构建多个Master实例同时提供读写服务(不仅限于从rep

Nginx + lua +[memcached,redis]

精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用