image.png
因為最近在做mycat 分庫分表,然后遇到了一個小小的坑。在這里分享一下!
全局序列號,官方文檔介紹是有以下幾種:
本地文件方式
數據庫方式
本地時間戳方式
詳情請參考下面這個博客,個人認為講的還是比較靠譜的s
在這里主要講下本地時間戳的方式
本地時間戳
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 所配置的自增主鍵,這樣就會導致多個庫的主鍵重復