天天看點

mysql自增 mycat_mycat全局自增ID

mycat全局自增ID

水準分表後,會産生一個問題,就是自增ID問題;

我們以前單表的時候,直接 mysql自增很好搞。單是分表後,就不行了,會有沖突;

是以解決方案可以不用自增,在應用層搞唯一id,比如redis單線程incr 生成自增id;

或者 uuid,基于雪花算法的 UidGenerator等;

我們這裡用mycat提供的支援來生成全局自增ID;

第一步:我們首先在分片的第一節點 建立表和相關函數;

mycat都給我們提供了,在mysql的conf目錄下,dbseq.sql檔案;

我們在第一個分片節點dn2 的db_mall_order資料庫裡導入sql腳本執行即可;

mysql自增 mycat_mycat全局自增ID

第二步:修改sequence_db_conf.properties檔案

mysql自增 mycat_mycat全局自增ID

改成 dn2即可;

第三步:修改server.xml配置檔案的 sequnceHandlerType配置;改成1

mysql自增 mycat_mycat全局自增ID

sequnceHandlerType配置

0 本地方式

1 資料庫方式

2 時間戳方式

第四步:重新開機mycat;

第五步:測試;

DELETE FROM T_ORDER

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,1,'2020-03-16 22:10:25');

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,2,'2020-03-16 22:10:25');

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,2,'2020-03-16 22:10:25');

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,4,'2020-03-16 22:10:25');

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,5,'2020-03-16 22:10:25');

insert  into `T_ORDER`(`id`,`pId`,`num`,`uId`,`orderDate`) values ('next value for MYCATSEQ_GLOBAL',1,1,5,'2020-03-16 22:10:25');

SELECT * FROM T_ORDER

mysql自增 mycat_mycat全局自增ID

測試OK;