开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat - 配置文件详解 - server.xml 之 system 配置详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/755/detail/13251
MyCat - 配置文件详解 - server.xml 之 system 配置详解
内容介绍:
一、课程总述:
二、system 标签
一、课程总述
主要是介绍四份配置文件,第一是 server.xml,第二是 scheme.xml,第三是rule.xml,第四是 sequence 配置文件。本次进行讲解的 server.xml 就是 mycat 中的系统配置信息。在 server.xml 中,主要是三个方面的配置文件。Server 中的配置文件主要分为第一部分 system 的配置,实际上就是系统配置,第二部分是 user的相关配置,第三部分是 firewall 防火墙相关配置。
二、system 标签
在 system 标签当中,配置有很多系统属性
属性 |
取值 |
含义 |
Charset |
Utf8 |
设置 Mycat 的字符集,字符集需要与 MysQL 的字符集保持一致 |
nonePasswordLogin |
0,1 |
登录 mycat 的时候是否需要密码,0 为需要密码登陆、1 为不需要密码登陆,默认为 0,设置为 1 则需要指定默认账户 |
useHandshakev10 |
0,1 |
使用该选项主要的目的是为了能够兼容高版本的 jdbc 驱动,是否采用Handshakev10Packet 来与 client 进行通信,1:是,0:否 |
usesqlstat |
0,1 |
开启 SQL 实时统计,1为开启,当前 mycat执行的 SQL 语句都会进行统计。0 为关闭;后续通过 mycat 的一些管理命令的话,就可以看到执行的 SQL。<br /> 开启之后,Mycat会自动统计SQL语句的执行情况 ; <br /> mysql -h 127.0.0.1 -p 9066 -u root -p<br /> 查看 Mycat 执行的 SQL,执行效率比较低的SQL , SQL 的整体执行情况、读写比例等;<br /> show @@sql ; show @sql.slow ; show @@sql .sum ; |
useGlobleTablecheck |
0,1 |
是否开启全局表的一致性检测。1为开启,0为关闭。 |
sqlExecuteTimeout |
1000 |
SQL 语句执行的超时时间,单位为 s ; |
sequnceHandlerType |
0,1,2 |
用来指定 Mycat 全局序列类型,0 为本地文件,1 为数据库方式,2 为时间戳列方式,默认使用本地文件方式,通过一个文件来进行维护。文件方式主要用于测试 |
sequnceHandlerPattern |
正则表达式 |
序列使用的时候的匹配流程。必须带有MYCATSEQ 或者 mycatseq 进入序列匹配流程注意 MYCATSEQ_有空格 的情况 |
sukqueryRelationshipCheck |
true, false |
子查询中存在关联查询的情况下,检查关联字段中是否有分片字段。默认 false |
useCompression |
0,1 |
开启 mysq1 压缩协议,0 :关闭,1 :开启 |
fakeMySQLVersion |
5.5,5.6 |
设置模拟的 MySQL 版本号 |
defaultsplParser |
|
由于 MyCat 的最初版本使用了 FoundationD 的 SQL 解析器,在 MyCat1. 3后增 加了 Druid 解析器,所以要设置defaultsqlParser 属性来指定默认的解析器;解析器有两个: druidparser 和 fdbparser, 在MyCat1.4 之后,默 认是 druidparser, fdbparser 已经废除了 |
processors |
1,2.... |
指定系统可用的线程数量,默认值为 cPu 核心 x 每个核心运行线程数量; processors 会影响processorBufferPool,processorBufferLocalPercent, processorExecutor 属性, 所有,在性能调优时,可以适当地修改 processors值 |
processorBufferChunk |
|
指的是缓冲值配置的相关信息。指定每次分配 socket Direct Buffer 默认值为 4096 字节,也会影响 BufferPool 长度,如果一次性获取字节过多而导致 buffer 不够用, 则会出现警告,可以调大该值 |
processorExecutor |
默认值为32 |
指定 NIOProcessor_上共享businessExecutor 固定线程池的大小; MyCat 把异步任务交给 businessExecutor 线程池中, 在新版本的 MyCat 中这个连接池使用频次不高,可以适当地把该值调小 |
packetHeaderSize |
二者涉及到关于mysql协议的报文设置 |
指定 MySQL 协议中的报文头长度,默认4个字节(不需要去动) |
maxPacketsize |
指定 MySQL 协议可以携带的数据最大大小,默认值为 16M(不需要动) |
|
idleTimeout |
30分钟 |
指定连接的空闲时间的超时长度;如果超时,将关闭资源并回收,默认 30 分钟 |
txIsolation |
1,2,3,4 |
初始化前端连接的事务隔离级别,默认为REPEATED_ READ,对应数字为 3<br/> READ_ _UNCOMMITED=1;<br /> READ_ COMMITTED=2;<br /> REPEATED_ _READ=3;<br /> SERIALIZABLE=4; |
sqlExecuteTimeout |
300 |
执行 SQL 的超时时间,如果 SQL 语句执行超时 ,将关闭连接;默认 300 秒; |
serverPort |
8066 |
定义 MyCat 的使用端口,默认 8066 |
managerPort |
9066 |
定义 MyCat 的管理端口,默认 9066 正常的 mycat 服务连接的是 8066 |
以上参数都是可以在 sever.xml 的 system 系统配置当中进行配置的。不用去记,主要是去熟悉每个配置项的含义即可。
1、详解 usesqlstat
<property name="useSqlstat">0K/property><!-- 1
为开启实时统计、o 为关闭-->
打开 sevet.xml,里面有 usesqlstat 默认为 0 代表关闭,如果是 0 的情况下重新启动 mycat
重新启动以后,重新连接 mycat,连接以后 show databases,然后 use ITCAST,然后执行 select * from TB_TEST,只想这几个操作之后,就可以通过管理界面,刚才用的是 8066 端口,接下来要去连接另外一个端口,来执行管理方面的操作,此处需要连接的端口号是 9066,连接上来以后,可以通过 show @sqal 来查看,发现里面是空的,是因为现在的 usesqlstat 设置的是 0,代表的是没有开启实时统计,假如把它改为 1,再将 mycat 重启,关闭连接,重新启动这个语句,就可以出现查询结果。连接的 9066 是管理端口,只想到 SQL 语句在 my cat 当中,已经记录下来了,包括每个用户执行 SQL 耗时多长时间等等。
输入select * from TB_TEST where id-1
执行
开启了实时统计,就可以通过 Mycat 当中提供的管理指令,来监控当前 mycat 都执行了哪些 SQL 语句,它默认是关闭的。
2、详解 fakeMySQLVersion
mycat 实际上是伪装自己为 mysql 的服务端,相当于模拟了 mysql 协议,可以把mycat 就看成是 mysql,二者的操作是一样的,既然 mycat 要去模拟 mysql,可以去指定模拟的是哪个版本,包括 5.5 或 5.6 版本,到底通过哪个版本可以通过fakemysqlversion 来指定。那么怎么查看当前 mycat 是模拟的哪个版本呢,通过查看,可以看到模拟的是 5.6.29 的版本,如果想要让他去模拟别的版本,可以通过 <property name=" fakeMysQLversion">5.6.20</property>
<!--设置模拟的 MySQL 版本号-->进行修改,这个语句意思是要模拟的版本为 5.6.20 .接下来重启 mycat,重新连接 mycat 发现版本号已经改变。