美文网首页
mycat分库分表-全局序列号-本地时间戳方式(坑点说明)

mycat分库分表-全局序列号-本地时间戳方式(坑点说明)

作者: 行人墨客 | 来源:发表于2017-10-18 11:19 被阅读0次
    image.png

    因为最近在做mycat 分库分表,然后遇到了一个小小的坑。在这里分享一下!

    全局序列号,官方文档介绍是有以下几种:

    本地文件方式
    数据库方式
    本地时间戳方式

    详情请参考下面这个博客,个人认为讲的还是比较靠谱的s

    http://blog.csdn.net/u010956470/article/details/70837876

    在这里主要讲下本地时间戳的方式

    本地时间戳


    ID= 64 位二进制(42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加)
    换算成十进制为18位的long类型,每毫秒可以并发12为二进制的累加。

    使用方式:

    a. 配置 server.xml

    <property name="sequnceHandlerType">2</property>
    

    b. 在 mycat 下配置:sequence_time_conf.properties

    WORKID=0-31 #任意整数
    DATAACENTERID=0-31  #任意整数
    

    多个 mycat 节点下每个 mycat 配置的WORKID,DATAACENTERID 不同,组成唯一标识,总共支持

    32*32=1024 种组合。
    

    ID 示例:56763083475511

    注意注意

    还需要修改下 mycat/conf/schema.xml
    开启一个配置

    image.png

    图中画框框的地方

     autoIncrement=“true”
    
    autoIncrement

    使用 autoIncrement="true" 指定返个表有使用自增长主键,这样 mycat 才会不抛出分片键找不到的异常。
    使用 autoIncrement="false" 来禁用返个功能,当然你也可以直接删除掉这个属性。默认就是禁用的

    当如果禁用时,插入一条sql语句则必须对如下图所示

    image.png

    必须得给Id加上
    new value for MYCATSEQ_GLOBAL
    否则的话 会直接使用mysql 所配置的自增主键,这样就会导致多个库的主键重复

    相关文章

      网友评论

          本文标题:mycat分库分表-全局序列号-本地时间戳方式(坑点说明)

          本文链接:https://www.haomeiwen.com/subject/inmsuxtx.html