redis-cluster 迁移过程错误记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 迁移过程错误记录的主要内容,如果未能解决你的问题,请参考以下文章

redis-cluster的安装管理

redis-cluster的安装管理

Redis槽道操作和槽道原理

Red Hat5下源码安装mysql5.6过程记录

从 OS X 迁移到 linux Red-Hat 时出错

MySQL将失败记录插入另一个表