server配置

json配置格式

  1. {
  2. "datasourceProvider":"io.mycat.datasource.jdbc.datasourceprovider.DruidDatasourceProvider",
  3. "loadBalance":{
  4. "defaultLoadBalance":"BalanceRandom",
  5. "loadBalances":[]
  6. },
  7. "mode":"local",
  8. "serverVersion" : "5.7.33-mycat-2.0" //1.17提供,用于客户端适配,调整到与原型库的mysql版本一致
  9. "properties":{},
  10. "server":{
  11. "bufferPool":{
  12. },
  13. "idleTimer":{
  14. "initialDelay":3,
  15. "period":15,
  16. "timeUnit":"SECONDS"
  17. },
  18. "ip":"127.0.0.1",//0:0:0:0:0:0:0:1
  19. "mycatId":1,
  20. "port":8066,
  21. "reactorNumber":8,
  22. "tempDirectory":null,
  23. "timeWorkerPool":{
  24. "corePoolSize":0,
  25. "keepAliveTime":1,
  26. "maxPendingLimit":65535,
  27. "maxPoolSize":2,
  28. "taskTimeout":1,
  29. "timeUnit":"MINUTES"
  30. },
  31. "workerPool":{
  32. "corePoolSize":8,
  33. "keepAliveTime":1,
  34. "maxPendingLimit":65535,
  35. "maxPoolSize":1024,
  36. "taskTimeout":1,
  37. "timeUnit":"MINUTES"
  38. },
  39. "fullTableScanLimit":1024,
  40. "mergeUnionSize": 5,
  41. "ignoreCast": false ,//生成的sql是否忽略类型转换,1.17支持,
  42. "joinClustering": true ,//开启后进行join重排序,关闭后会加快优化速度,1.18支持
  43. "sortMergeJoin":true,
  44. "pushDownSelectDual":"hackRouter",
  45. "useProxyProtocol":false,
  46. "bkaJoin": true,//开启禁用BKAJOIN,部分全局二级索引回表依赖此参数优化
  47. //开启后对于无法下推join的情况,会添加order by后添加sortMergeJoin算子合拼结果 2021-10-26
  48. }
  49. }

默认配置
如果不配置则使用上述的值进行加载

mycatId

Mycat的标志符,用于区分多个部署的mycat

ip

ip4:
127.0.0.1
0.0.0.0

ip6:
0:0:0:0:0:0:0:1
同IPV4中127.0.0.1地址的含义一样,表示节点自已

0:0:0:0:0:0:0:0
未指定地址

mergeUnionSize为使用一次union all合拼同一个存储节点上多个dataNode的sql数量
该参数在1.15版本以后才存在

mycatId是保证多个mycat公用存储节点的时候必须配置这个值,并且唯一,他用于生成序列号,Xid等.
serverVersion用于客户端与服务端适配
比如SELECT @@session.transaction_isolation

fullTableScanLimit

“fullTableScanLimit”:1024,//判断全表扫描的分区数量限制,超过这个限制会有类似的提示在日志中,默认值是1024
2022-2-24后1.21提供
2022-3-11后此参数用于现在每个MycatView使用的连接数量,比如MycatView获得2048个连接,在默认参数1024下只能获取1024个连接

  1. warning sql:{},partition count:{},limit:{},it may be a full table scan.

处理无表SQL(2022-2-24)

  1. "pushDownSelectDual":"hackRouter",//路由,发送到mysql上面执行,默认值是hackRouter
  2. 或者
  3. "pushDownSelectDual":"mycat",//mycat内置的查询引擎

在处理类似SELECT CAST(‘test collated returns’ AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_bin AS anon_1的时候,直接发送到mysql上面处理

hackRouter
规则1,如果select中没有函数和session变量,比如select 1,使用mycat查询引擎执行
规则2,如果select中存在信息函数,锁函数或session变量,则都使用mycat查询引擎执行
规则3,如果select中有函数,没有信息函数,锁函数,没有session变量,则根据pushDownSelectDual进行判断,如果是hackRouter则发送到原型库上执行,否则,使用mycat查询引擎执行

mycat
都使用mycat查询引擎执行

useProxyProtocol:true|false

2022-3-3以后支持
支持HAProxy ProxyProtocol协议

fullTableScanException:true|false

2022-3-3以后支持
检查到全表扫描就抛异常

rewriteInsertBatchedStatementBatch

默认值:1000
每1000个插入行,合拼成一个插入SQL

stickySession

默认值:true
可选值:true,false
是否开启会话粘滞


stickySessionTime

默认值:-1
可选值:整数范围,单位毫秒
当-1的时候,每次指定主数据源的时候,下一次选择数据源一定会选择主数据源
当大于等于0的是,每次指定主数据源的时候,下一次选择数据源,在时间内,会选择主数据源,时间外负载均衡

sendBufferSize(2022-6-13)

默认值:-1
Mycat会话网络接收缓冲区大小

receiveBufferSize(2022-6-13)

默认值:-1
Mycat会话网络写入缓冲区大小