mycat全局自增ID
水平分表后,会产生一个问题,就是自增ID问题;
我们以前单表的时候,直接 mysql自增很好搞。单是分表后,就不行了,会有冲突;
所以解决方案可以不用自增,在应用层搞唯一id,比如redis单线程incr 生成自增id;
或者 uuid,基于雪花算法的 UidGenerator等;
我们这里用mycat提供的支持来生成全局自增ID;
第一步:我们首先在分片的第一节点 建立表和相关函数;
mycat都给我们提供了,在mysql的conf目录下,dbseq.sql文件;
我们在第一个分片节点dn2 的db_mall_order数据库里导入sql脚本执行即可;
第二步:修改sequence_db_conf.properties文件
改成 dn2即可;
第三步:修改server.xml配置文件的 sequnceHandlerType配置;改成1
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
测试OK;
上一篇:mycat水平分表取模分片实现
下一篇:mycat全局表