美文网首页
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