Mycat2 序列号 sequence

2021-09-09 14:42 更新

序列号配置

使用序列号的分片表,对应的自增主键要在建表SQL中体现

例如

  1. `id` bigint NOT NULL AUTO_INCREMENT

2021-8-17后支持autoIncrement属性强制关闭全局序列号

  1. "xxx":{
  2. "createTableSQL":"xxx",
  3. "autoIncrement": false,
  4. "function":{
  5. "clazz":"io.mycat.router.mycat1xfunction.PartitionByMod",
  6. "name":"PartitionByMod",
  7. "properties":{
  8. "defaultNode":"0",
  9. "type":"Integer",
  10. "count":4,
  11. "columnName":"id"
  12. },
  13. "ranges":{}
  14. },
  15. "partition":{
  16. "schemaNames":"xxxx",
  17. "tableNames":"xxxx_$0-3",
  18. "targetNames":"prototype"
  19. }
  20. },

如果不需要使用mycat的自增序列,而使用mysql本身的自增主键的功能,需要在配置中更改对应的建表sql,不设置AUTO_INCREMENT关键字,这样,mycat就不认为这个表有自增主键的功能,就不会使用mycat的全局序列号.

这样,对应的插入sql在mysql处理,由mysql的自增主键功能补全自增值.

建表sql可以自动在原型库对应的逻辑表的物理表获取,如果逻辑表的建表SQL与物理表的建表SQL不对应,则需要在配置文件中配置建表SQL.

{数据库名字}_{表名字}.sequence.json放置在sequecnes文件夹下面

  1. {
  2. "clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator",
  3. "name":"db1_travelrecord"
  4. }

如果不配置,分片表使用雪花算法生成全局序列号 io.mycat.plug.sequence.SequenceMySQLGenerator

  1. {
  2. "clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator",
  3. "name":"db1_travelrecord"
  4. }

prototype服务器的db1库导入dbseq.sql文件 在mycat_sequence表建立db1_travelrecord行,即可,Mycat会从更新此行获得序列号 注意库名对应这里db1_travelrecord中的db1就是dbseq.sql导入的库(物理库,一般是原型库,不能在mycat里执行) 可选参数targetName更改序列号服务器

  1. {
  2. "clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator",
  3. "name":"db1_travelrecord",
  4. "targetName": "prototype",
  5. "schemaName":"db1"//指定物理库名
  6. }

 "targetName":"prototype"是执行自增序列的节点,也是dbseq.sql导入的节点

dbseq.sql导入的当前库的库名与逻辑表的逻辑库名一致

导入后检查库下有没有mycat_sequence

其中increment是序列号自增的步伐,为1的时候严格按1递增,当1000的时候,mycat会每次批量递增1000取序列号.此时在多个mycat访问此序列号表的情况下,不能严格自增

NAME列中的值是对应的 库名_表名 该值需要用户设置

通过注解设置为雪花算法

  1. /*+ mycat:setSequence{"name":"db1_travelrecord","time":true} */;

通过注解设置为数据库方式全局序列号

  1. /*+ mycat:setSequence
  2. {"name":"db1_travelrecord","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;

参数与上述的数据库方式相同

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号