• 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。还有一些其他的好玩的命令,这里就不一一介绍了。谢谢你的到来。

  • 相关阅读:
    ODAC(V9.5.15) 学习笔记(六)TOraSQL、TOraTable和TOraStoredProc
    ODAC(V9.5.15) 学习笔记(五)TSmartQuery
    ODAC(V9.5.15) 学习笔记(四)TOraDataSet
    ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(5)
    ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(4)
    Cesium原理篇:7最长的一帧之Entity(下)
    Cesium原理篇:7最长的一帧之Entity(上)
    Cesium原理篇:6 Render模块(6: Instance实例化)
    Cesium原理篇:6 Render模块(5: VAO&RenderState&Command)
    Cesium原理篇:6 Render模块(4: FBO)
  • 原文地址:https://www.cnblogs.com/grj001/p/12224999.html
Copyright © 2020-2023  润新知