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脚本执行即可;

1ee2784d288708fd69e6cf2923a912d3.png

第二步:修改sequence_db_conf.properties文件

4b233ba8ac4f91fcd07cd129fbf3b901.png

改成 dn2即可;

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

ebf2247c44344f0f2d35aefb32a841aa.png

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

45daaa2223cc524fbb44f305fd203564.png

测试OK;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值