Redis单实例数据迁移到集群

Stella981
• 阅读 602

迁移步骤:

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

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

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

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

 Redis单实例数据迁移到集群

(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

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

 Redis单实例数据迁移到集群

 Redis单实例数据迁移到集群

同上将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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
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
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
2年前
Redis持久化RDB和AOF实现原理
Redis持久化RDB和AOF为什么Redis需要持久化?因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。Redis中都有哪些持久化机制?Redis早
Stella981 Stella981
2年前
Redis 集群演进探讨和总结
Redis为什么需要集群?首先Redis单实例主要有单点,容量有限,流量压力上限的问题。Redis单点故障,可以通过主从复制replication,和自动故障转移sentinel哨兵机制。但Redis单Master实例提供读写服务,仍然有容量和压力问题,因此需要数据分区,构建多个Master实例同时提供读写服务(不仅限于从rep
Stella981 Stella981
2年前
NoSQL数据库Redis和MongoDB
redis简介一些特点:Redis的读写性能极高,并且有丰富的特性(发布/订阅、事务、通知等)。Redis支持数据的持久化(RDB和AOF两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis支持多种数据类型,包括:string、hash、list、set,zset、bitm
Stella981 Stella981
2年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Stella981 Stella981
2年前
Redis——持久化数据
Redis被称为是内存数据库,那是因为它会将其所有数据存储在内存里,因此Redis具有强劲的速度性能,但是,也正因为数据存储在内存中,当Redis重启后,所有存储在内存的数据就会丢失。为了使得数据持久化,Redis提供了两种方式:RDB方式和AOF方式。一、RDB方式RDB方式的持久化是通过快照(snapshotting)完成的,
Wesley13 Wesley13
2年前
Oracle一张表中实现对一个字段不同值和总值的统计(多个count)
需求:统计WAIT\_ORDER表中的工单总数、未处理工单总数、已完成工单总数、未完成工单总数。表结构:为了举例子方便,WAIT\_ORDER表只有两个字段,分别是ID、STATUS,其中STATUS为工单的状态。1表示未处理,2表示已完成,3表示未完成总数。 SQL:  1.SELECT   2
Stella981 Stella981
2年前
Redis 集群方案
1\.Redis性能对于redis的一些简单测试,仅供参考:测试环境:Redhat6.2,XeonE5520(4核)\2/8G,1000M网卡Redis版本:2.6.9客户端机器使用redisbenchmark简单GET、SET操作:1\.1单实例测试
子非鱼 子非鱼
1年前
Redis高级
第一章Redis的持久化由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。1、RDB持久化方案Redis会定期保存数据快照至一个rbd文件中,并在启动时自动