Redis迁移数据到redis cluster

准备数据,在想要迁移的实例上的所有节点执行BGREWRITEAOF,等待命令执行完毕。aof文件生成。将文件copy到某个外部目录下。这个时候你可以将原有的实例停服。

创建一个集群包含你aof文件个数的主节点,从节点你可以稍后再添加。确保开启了aof持久化。

停掉所有集群的节点,将aof-1放在第一个集群主节点下,aof-2放在第二个集群节点下依此类推。

重启所有的集群节点以新的aof文件,这个时候会提示因为根据集群的配置来说有些key不属于他们的节点。
利用命令行 redis-cli --cluster fix 命令来修复整个集群,这个命令会将不属于当前节点的key迁移到属于它的节点上。
利用命令redis-cli --cluster check 去确认集群是否是ok的状态。
连接client检查数据是否完整迁移。

上述适合多节点的HA实例。

下面介绍单节点实例数据如何迁移到集群。

在单节点上运行 bgsave(rdb持久化模式),BGREWRITEAOF(aof持久化模式),去生成持久化文件。

创建你想要的节点个数的节点。先不去分配槽位,如果是原有的实例用的是aof则需要开启aof持久化。

停掉所有集群的节点,将rdb文件或者是aof文件放在一个节点下面。

重启节点数据完整恢复到一个节点上,在当前节点上执行命令 cluster meet ip port 想要加入的节点ip 和端口号 依次执行。之后根据你自己的选择去进行主从的设定,在你想要的从节点上去执行 cluster replicate 主节点nodeid,将自己标识成该主节点的从节点。主从分配完毕之后开始进行槽位的重新分配,因为当前所有的数据都只在你最开始的那个主节点上。所以我们要用命令将槽位分配给其他的节点。利用命令 redis-cli --cluster reshard host:port --cluster-from <原主节点id> --cluster-to <想要分配的其他的主节点id> --cluster-slots <分配槽位的个数> --cluster-yes 。 将所有的槽位reshard完毕后。 执行redis-cli --cluster check 查看当前集群状态是否是正常的,如果不正常使用 redis-cli --cluster fix来进行修复。

最后登陆客户端检查数据是否已经迁移成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值