首页 > 代码库 > redis-cluster 迁移过程错误记录

redis-cluster 迁移过程错误记录

因为集群内的 单点redis消耗 内存达到了14个G,所以需要增加新的节点,并将数据迁移过去,使用 redis-trib reshard ip:port

A : 2105slot       14.5g,     B: 0 slot 0g

   我从A到B 迁移了 1000slot, A的slot数目减少了,但是内存消耗并没有减少,以下是迁移后的状态

A:  1105slot        14.5g      B:1000slot  7.6g

不知道为什么,这个有知道的朋友留言帮我解答下。

我想着 那我再开一个C 把A的 剩余1105slot 迁移出来,迁移完 就把A干掉,就把内存释放了。

A->C的过程中,会频繁报错 ERR Target instance replied with error: CLUSTERDOWN The cluster is down( 可以使用 redis-trib fix ip:port 进行修复.)

     寻找原因时候发现 有博文(点击跳转链接)可能存在较大key ,同步时候超时了。我按照他的查看方式,查了下 报错slot的 key(我用的是Set类型), 我的神,我的Set中44w个值。(之前有发现app里报错 too many redirection,一直没有找到原因,不知道和这个有关系没,有经验的朋友点明一下)。这个key对于我没有意义了,直接del。 fix后,继续reshard 就ok了。

迁移完成后

A: 0slot     58M        C 1105slot 7.5g   

 

经验: 以后使用数据库的时候,单个key还是不宜过大,这个应该在app层有控制。

 

redis-cluster 迁移过程错误记录