天天看点

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;