Mycat2 序列號 sequence

2021-09-09 14:42 更新

序列號配置

使用序列號的分片表,對應(yīng)的自增主鍵要在建表SQL中體現(xiàn)

例如

  1. `id` bigint NOT NULL AUTO_INCREMENT

2021-8-17后支持autoIncrement屬性強制關(guān)閉全局序列號

  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本身的自增主鍵的功能,需要在配置中更改對應(yīng)的建表sql,不設(shè)置AUTO_INCREMENT關(guān)鍵字,這樣,mycat就不認為這個表有自增主鍵的功能,就不會使用mycat的全局序列號.

這樣,對應(yīng)的插入sql在mysql處理,由mysql的自增主鍵功能補全自增值.

建表sql可以自動在原型庫對應(yīng)的邏輯表的物理表獲取,如果邏輯表的建表SQL與物理表的建表SQL不對應(yīng),則需要在配置文件中配置建表SQL.

{數(shù)據(jù)庫名字}_{表名字}.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服務(wù)器的db1庫導(dǎo)入dbseq.sql文件 在mycat_sequence表建立db1_travelrecord行,即可,Mycat會從更新此行獲得序列號 注意庫名對應(yīng)這里db1_travelrecord中的db1就是dbseq.sql導(dǎo)入的庫(物理庫,一般是原型庫,不能在mycat里執(zhí)行) 可選參數(shù)targetName更改序列號服務(wù)器

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

?"targetName":"prototype"是執(zhí)行自增序列的節(jié)點,也是dbseq.sql導(dǎo)入的節(jié)點

dbseq.sql導(dǎo)入的當(dāng)前庫的庫名與邏輯表的邏輯庫名一致

導(dǎo)入后檢查庫下有沒有mycat_sequence

其中increment是序列號自增的步伐,為1的時候嚴格按1遞增,當(dāng)1000的時候,mycat會每次批量遞增1000取序列號.此時在多個mycat訪問此序列號表的情況下,不能嚴格自增

NAME列中的值是對應(yīng)的 庫名_表名 該值需要用戶設(shè)置

通過注解設(shè)置為雪花算法

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

通過注解設(shè)置為數(shù)據(jù)庫方式全局序列號

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

參數(shù)與上述的數(shù)據(jù)庫方式相同

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號