java1234开源博客系统
博客信息

mycat全局自增ID

0
发布时间:『 2020-04-06 23:01』  博客类别:Mycat  阅读(2452) 评论(0)

mycat全局自增ID


水平分表后,会产生一个问题,就是自增ID问题;

我们以前单表的时候,直接 mysql自增很好搞。单是分表后,就不行了,会有冲突;

所以解决方案可以不用自增,在应用层搞唯一id,比如redis单线程incr 生成自增id;

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

我们这里用mycat提供的支持来生成全局自增ID;

 

第一步:我们首先在分片的第一节点 建立表和相关函数;

mycat都给我们提供了,在mysql的conf目录下,dbseq.sql文件;

我们在第一个分片节点dn2 的db_mall_order数据库里导入sql脚本执行即可;

QQ鎴浘20200406224546.jpg


第二步:修改sequence_db_conf.properties文件

QQ鎴浘20200406224750.jpg

改成 dn2即可;


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

QQ鎴浘20200406225509.jpg

 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

QQ鎴浘20200406225714.jpg

测试OK;

关键字:   无
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有