server配置
json配置格式
{
"datasourceProvider":"io.mycat.datasource.jdbc.datasourceprovider.DruidDatasourceProvider",
"loadBalance":{
"defaultLoadBalance":"BalanceRandom",
"loadBalances":[]
},
"mode":"local",
"serverVersion" : "5.7.33-mycat-2.0" //1.17提供,用于客户端适配,调整到与原型库的mysql版本一致
"properties":{},
"server":{
"bufferPool":{
},
"idleTimer":{
"initialDelay":3,
"period":15,
"timeUnit":"SECONDS"
},
"ip":"127.0.0.1",//0:0:0:0:0:0:0:1
"mycatId":1,
"port":8066,
"reactorNumber":8,
"tempDirectory":null,
"timeWorkerPool":{
"corePoolSize":0,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":2,
"taskTimeout":1,
"timeUnit":"MINUTES"
},
"workerPool":{
"corePoolSize":8,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":1024,
"taskTimeout":1,
"timeUnit":"MINUTES"
},
"fullTableScanLimit":1024,
"mergeUnionSize": 5,
"ignoreCast": false ,//生成的sql是否忽略类型转换,1.17支持,
"joinClustering": true ,//开启后进行join重排序,关闭后会加快优化速度,1.18支持
"sortMergeJoin":true,
"pushDownSelectDual":"hackRouter",
"useProxyProtocol":false,
"bkaJoin": true,//开启禁用BKAJOIN,部分全局二级索引回表依赖此参数优化
//开启后对于无法下推join的情况,会添加order by后添加sortMergeJoin算子合拼结果 2021-10-26
}
}
默认配置
如果不配置则使用上述的值进行加载
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个连接
warning sql:{},partition count:{},limit:{},it may be a full table scan.
处理无表SQL(2022-2-24)
"pushDownSelectDual":"hackRouter",//路由,发送到mysql上面执行,默认值是hackRouter
或者
"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会话网络写入缓冲区大小