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

2017-10-18  本文已影响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 所配置的自增主键,这样就会导致多个库的主键重复

上一篇 下一篇

猜你喜欢

热点阅读