mycat2设置自增序列号的流程

前端精度丢失/千万级数据库分库分表自增ID/mycat2 设置自增序列号的流程

由于mysql单表数据量达到千万级 优化了还是查询很慢。尝试使用mycat2 分库分表的时候 发现自增ID过长(默认雪花算法)导致前端精度丢失,可以把ID传值变成string解决。想想试一下修改成从1开始的自增序列,网上找的资料有限 官方的文档也不容易理解 试了半天才明白,于是记录一下。

官方文档地址

https://www.yuque.com/ccazhw/ml3nkf/545074ac9eadab63edbe211a7f770f64

1.执行dbseq.sql

在配置好mycat2 并能正常使用的情况下,注意:在物理库下使用 (端口为3306的称为物理库,8066的称为逻辑库)
执行完dbseq.sql之后 会生成 MYCAT_SEQUENCE的表,以及
mycat_seq_currval
mycat_seq_nextval
mycat_seq_nextvals
mycat_seq_setval
四个函数,这就算完成。
dbseq.sql 在mycat2-install-template-1.21.zip解压完的mycat/conf目录下
ps:执行完自己有重启过mycat 不知道需不需要这个步骤

2.创建文件

1.在mycat/conf/sequences目录下创建

{数据库名字}_{表名字}.sequence.json文件

例如db1_user.sequence.json db1是数据库 user是需要自增序列的表名
在这个.sequence.json文件里输入下面的命令并保存。

{
“clazz”:“io.mycat.plug.sequence.SequenceMySQLGenerator”,
“name”:“db1_user”
}

之前就是在这个name踩坑的 不理解这个name是什么 其实name要跟文件名的{数据库名字}_{表名字}一致。后面用到的name都要跟这个一致。

3.执行设置

在mycat(逻辑库)
通过注释设置为数据库方式全局序列号

/*+ mycat:setSequence{“name”:“db1_user”,“clazz”:“io.mycat.plug.sequence.SequenceMySQLGenerator”} */;

一样要注意这个name 跟.sequence.json文件里的name一致
执行完再去看db1_user.sequence.json文件
内容会变成

{
“clazz”:“io.mycat.plug.sequence.SequenceMySQLGenerator”,
“group”:false,
“name”:“db1_user”,
“noMaxValue”:false,
“noMinValue”:false,
“simple”:false,
“time”:false
}

说明设置成功了

4.MYCAT_SEQUENCE表添加数据

name:就是上面的name(db1_user)
current_value:当前自增序列值
increment:增量(默认1)
在表里添加一条数据在这里插入图片描述
注意:name还是上面的那个name

结尾

1.可以通过注解设置为雪花算法

/*+ mycat:setSequence{“name”:“db1_user”,“time”:true} */;

一样name要写对。
2.需要修改自增序列的表都要从第二步重复设置。
3.如果之前库里有数据 然后又设置了自增序列,可能导致ID重复

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值