Mycat2 注釋配置

2021-10-08 15:41 更新

注釋使用SQL注釋方式表達(dá),可以用于動(dòng)態(tài)更新Mycat配置并且把配置持久化,它的設(shè)計(jì)目標(biāo)是為了動(dòng)態(tài)的更新mycat的配置。但是由于配置的屬性復(fù)雜,它不會(huì)自動(dòng)的更改真實(shí)數(shù)據(jù)庫(kù)的schema。

通過(guò)注解配置不會(huì)自動(dòng)創(chuàng)建物理庫(kù)物理表(與直接使用自動(dòng)化建表語(yǔ)句不同,它會(huì)自動(dòng)建物理庫(kù)物理表),所以要保證物理庫(kù)物理表的在真實(shí)數(shù)據(jù)庫(kù)上是與配置對(duì)應(yīng)的。一般來(lái)說(shuō),原型庫(kù)(prototype)上必須存在與邏輯庫(kù)邏輯表完全一致得物理庫(kù)物理表,以便mycat讀取表和字段信息。

如果搞不懂配置,可以嘗試使用自動(dòng)化建表語(yǔ)句創(chuàng)建測(cè)試的物理庫(kù)物理表,它會(huì)自動(dòng)生成配置文件,然后通過(guò)查看本地的配置文件,觀察它的屬性,就可以知道什么回事。因?yàn)樽詣?dòng)化建表語(yǔ)句過(guò)于簡(jiǎn)單,可能不適合公司的業(yè)務(wù),此時(shí)需要更改配置文件的屬性來(lái)調(diào)整。這種自己更改調(diào)整的屬性值不屬于mycat的開(kāi)發(fā)測(cè)試范疇之內(nèi),也不能受mycat為自動(dòng)化建表的測(cè)試保證。

重置配置

  1. /*+ mycat:resetConfig{} */

創(chuàng)建用戶(hù)

  1. /*+ mycat:createUser{
  2. "username":"user",
  3. "password":"",
  4. "ip":"127.0.0.1",
  5. "transactionType":"xa"
  6. } */

刪除用戶(hù)

  1. /*+ mycat:dropUser{
  2. "username":"user"} */

顯示用戶(hù)

  1. /*+ mycat:showUsers */

修改表序列號(hào)為雪花算法

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

創(chuàng)建數(shù)據(jù)源

  1. /*+ mycat:createDataSource{
  2. "dbType":"mysql",
  3. "idleTimeout":60000,
  4. "initSqls":[],
  5. "initSqlsGetConnection":true,
  6. "instanceType":"READ_WRITE",
  7. "maxCon":1000,
  8. "maxConnectTimeout":3000,
  9. "maxRetryCount":5,
  10. "minCon":1,
  11. "name":"dr0",
  12. "password":"123456",
  13. "type":"JDBC",
  14. "url":"jdbc:mysql://127.0.0.1:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",
  15. "user":"root",
  16. "weight":0
  17. } */;

刪除數(shù)據(jù)源

  1. /*+ mycat:dropDataSource{
  2. "dbType":"mysql",
  3. "idleTimeout":60000,
  4. "initSqls":[],
  5. "initSqlsGetConnection":true,
  6. "instanceType":"READ_WRITE",
  7. "maxCon":1000,
  8. "maxConnectTimeout":3000,
  9. "maxRetryCount":5,
  10. "minCon":1,
  11. "name":"newDs",
  12. "type":"JDBC",
  13. "weight":0
  14. } */;

顯示數(shù)據(jù)源

  1. /*+ mycat:showDataSources{} */

創(chuàng)建集群

  1. /*! mycat:createCluster{
  2. "clusterType":"MASTER_SLAVE",
  3. "heartbeat":{
  4. "heartbeatTimeout":1000,
  5. "maxRetry":3,
  6. "minSwitchTimeInterval":300,
  7. "slaveThreshold":0
  8. },
  9. "masters":[
  10. "dw0" //主節(jié)點(diǎn)
  11. ],
  12. "maxCon":2000,
  13. "name":"c0",
  14. "readBalanceType":"BALANCE_ALL",
  15. "replicas":[
  16. "dr0" //從節(jié)點(diǎn)
  17. ],
  18. "switchType":"SWITCH"
  19. } */;

刪除集群

  1. /*! mycat:dropCluster{
  2. "name":"testAddCluster"
  3. } */;

顯示集群

  1. /*+ mycat:showClusters{} */

創(chuàng)建Schema

確保原型庫(kù)上,存在test_add_Schema物理庫(kù),以下注解才能正常運(yùn)行.

  1. /*+ mycat:createSchema{
  2. "customTables":{},
  3. "globalTables":{},
  4. "normalTables":{},
  5. "schemaName":"test_add_Schema",
  6. "shardingTables":{},
  7. "targetName":"prototype"
  8. } */;

建表注釋可以參考庫(kù)(schema)配置 以下注解相當(dāng)于把配置推送到mycat中進(jìn)行更新

創(chuàng)建單表(用于讀寫(xiě)分離,映射物理表)

  1. /*+ mycat:createTable{
  2. "normalTable":{
  3. "createTableSQL":"create table normal(id int)",
  4. "dataNode":{
  5. "schemaName":"testSchema", //物理庫(kù)
  6. "tableName":"normal", //物理表
  7. "targetName":"prototype" //目標(biāo)
  8. }
  9. },
  10. "schemaName":"testSchema",//邏輯庫(kù)
  11. "tableName":"normal" //邏輯表
  12. } */;

1.18后

  1. /*+ mycat:createTable{
  2. "normalTable":{
  3. "createTableSQL":"create table normal(id int)",
  4. "locality":{
  5. "schemaName":"testSchema", //物理庫(kù)
  6. "tableName":"normal", //物理表
  7. "targetName":"prototype" //目標(biāo)
  8. }
  9. },
  10. "schemaName":"testSchema",//邏輯庫(kù)
  11. "tableName":"normal" //邏輯表
  12. } */;

當(dāng)目標(biāo)是集群的時(shí)候,自動(dòng)進(jìn)行讀寫(xiě)分離,根據(jù)集群配置把查詢(xún)sql根據(jù)事務(wù)狀態(tài)發(fā)送到從或主數(shù)據(jù)源,如果目標(biāo)是數(shù)據(jù)源,就直接發(fā)送sql到這個(gè)數(shù)據(jù)源.在Mycat2中,是否使用Mycat的集群配置應(yīng)該是整體的架構(gòu)選項(xiàng),只能選其一.當(dāng)全體目標(biāo)都是數(shù)據(jù)源,要么全體目標(biāo)都是集群。前者一般在數(shù)據(jù)庫(kù)集群前再部署一個(gè)SLB服務(wù),Mycat訪問(wèn)這個(gè)SLB服務(wù),這個(gè)SLB服務(wù)實(shí)現(xiàn)讀寫(xiě)分離高可用。后者則是Mycat直接訪問(wèn)數(shù)據(jù)庫(kù),Mycat負(fù)責(zé)讀寫(xiě)分離集群高可用.當(dāng)配置中出現(xiàn)集群和數(shù)據(jù)源的情況,盡量配置成他們的表的存儲(chǔ)節(jié)點(diǎn)在一個(gè)物理庫(kù)的實(shí)例中沒(méi)有交集,這樣可以避免因?yàn)槎嗍褂眠B接導(dǎo)致事務(wù)一致性和隔離級(jí)別破壞產(chǎn)生的問(wèn)題.

創(chuàng)建全局表

  1. /*+ mycat:createTable{
  2. "globalTable":{
  3. "createTableSQL":"create table global(id int)",
  4. "dataNodes":[
  5. {
  6. "targetName":"prototype"
  7. }
  8. ]
  9. },
  10. "schemaName":"testSchema",
  11. "tableName":"global"
  12. } */;

1.18后

  1. /*+ mycat:createTable{
  2. "globalTable":{
  3. "createTableSQL":"create table global(id int)",
  4. "broadcast":[
  5. {
  6. "targetName":"prototype"
  7. }
  8. ]
  9. },
  10. "schemaName":"testSchema",
  11. "tableName":"global"
  12. } */;

創(chuàng)建范圍分表

  1. /*+ mycat:createTable{
  2. "schemaName":"testSchema",
  3. "shadingTable":{
  4. "createTableSQL":"create table sharding(id int)",
  5. "dataNode":{
  6. "schemaNames":"testSchema",
  7. "tableNames":"sharding",
  8. "targetNames":"prototype"
  9. },
  10. "function":{
  11. "clazz":"io.mycat.router.mycat1xfunction.PartitionConstant",
  12. "properties":{
  13. "defaultNode":"0",
  14. "columnName":"id"
  15. }
  16. }
  17. },
  18. "tableName":"sharding"
  19. } */;

1.18后

  1. /*+ mycat:createTable{
  2. "schemaName":"testSchema",
  3. "shadingTable":{
  4. "createTableSQL":"create table sharding(id int)",
  5. "partition":{
  6. "schemaNames":"testSchema",
  7. "tableNames":"sharding",
  8. "targetNames":"prototype"
  9. },
  10. "function":{
  11. "clazz":"io.mycat.router.mycat1xfunction.PartitionConstant",
  12. "properties":{
  13. "defaultNode":"0",
  14. "columnName":"id"
  15. }
  16. }
  17. },
  18. "tableName":"sharding"
  19. } */;

顯示session引用的IO緩沖塊計(jì)數(shù)

  1. /*+ mycat:showBufferUsage{}*/

顯示用戶(hù)

  1. /*+ mycat:showUsers{}*/

顯示schema

  1. /*+ mycat:showSchemas{}*/

顯示調(diào)度器

  1. /*+ mycat:showSchedules{}*/

顯示心跳配置

  1. /*+ mycat:showHeartbeats{}*/

顯示心跳狀態(tài)

  1. /*+ mycat:showHeartbeatStatus{}*/

顯示實(shí)例狀態(tài)

  1. /*+ mycat:showInstances{}*/

顯示Reactor狀態(tài)

  1. /*+ mycat:showReactors{}*/

顯示線(xiàn)程池狀態(tài)

  1. /*+ mycat:showThreadPools{}*/

顯示表

  1. /*+ mycat:showTables{"schemaName":"mysql"}*/

顯示mycat連接

  1. /*+ mycat:showConnections{}*/

顯示存儲(chǔ)節(jié)點(diǎn)

  1. /*+ mycat:showDataNodes{//1.18
  2. "schemaName":"db1",
  3. "tableName":"normal"
  4. } */;
  5. /*+ mycat:showTopology{//1.18
  6. "schemaName":"db1",
  7. "tableName":"normal"
  8. } */;
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)