• redis5.0的槽点迁移,随意玩(单机迁移集群)


    redis5.0的槽点迁移,随意玩(单机迁移集群)

    2018年12月27日 11:53:19 学无止境王小帅 阅读数 469

            最近在做redis单机版本迁移到集群版,所以当时用的redis3.0版本吧,迁移的过程中遇到一个问题,就是如果redis5.0之前的版本,在移动槽点的时候,假如槽点内有值的话,导致报错:Syntax error ,try client(list|kill|getname|setname|pause|reply)  ,主要就是需要修改redis-trib.rb文件的move_slot这个方法,绕过 clientCommand,直接执行 migrateCommand(去掉.client即可)。如下图

    修改之后,就可以reshard带有数据的slot槽了。假如没有修改trib文件,出现了上面的错误(Syntax error ,try client),此时那个有数据的槽点,也会不可移动。 执行cluster setlot 槽点的值 stable即可。

    以上的只不过是我曾经操作redis3.0数据迁移的时候出现的问题和解决办法。下面主要说说redis5.0后,操作slot的命令,玩转redis5.0不在话下。

    首先我们的redis是集群版本,三主三从,这里就不讲redis的sentinel哨兵模式了(监控,提醒,自动故障转移几个特性)。

    直接上图

    redis5.0版本舍弃了trib文件,改用redis-cli操作集群,这点也算是改进优化不少了。

    可以看到redis的版本。

    redis-cli --cluster check host:port此命令可以查看集群的各个节点的信息。

    现在我们开始把7002和7003的所有槽点都移动到7001上:

    问移动多少个槽点,我们移动7002的全部,5462个

     

    再把7003的所有槽点移动到7001上

     

     此时此刻,7001上已经有了所有的槽点,现在想数据迁移的同学,只需要把单机版的dump.rdb文件拷贝到集群下即可。

    下面开始均分槽点,

    这里使用rebalance的时候,因为7002和7003上面没有槽点,所以是不参与选举的,也无法参与均衡槽点。

     我们可以使用--cluster-use-empty-masters这个参数,即使7002和7003没有槽点也可以参与均分槽点。

    可以看到槽点均分了,而且从节点也均分了。

    我们圈住的这个可以指定当前从节点到哪一个主节点下,可以自由分配,随意玩转redis5.0的槽点。还有forget,是为了删除某个节点后,其他节点有保留信息,仍旧会进行心跳通信,所以需要每一个保留的节点下,都要进行forget。还有一些其他的好玩的命令,这里就不一一介绍了。谢谢你的到来。

  • 相关阅读:
    OpenWRT解决因PPPOE丢包导致频繁掉线问题
    ArcGIS Server 9.3集群部署(多som+多soc)
    ArcGIS Server 9.3集群部署(多som+多soc)
    POJ2823 滑动窗口
    AOJ 0531 坐标离散化
    Office2010安装错误
    Cv运动分析与对象跟踪(转)
    FPS学习记录
    opencv基于HSV的肤色分割
    Haar特征
  • 原文地址:https://www.cnblogs.com/grj001/p/12224998.html
Copyright © 2020-2023  润新知