MyCAT 配置解析
server.xml Mycat的配置文件,设置账号、参数等
schema.xml Mycat对应的物理数据库和数据库表的配置
rule.xml Mycat分片(分库分表)规则
一 :wrapper.conf
--配置jdk
wrapper.java.command=D:/Program Files/Java/jdk1.8.0_131/bin/java.exe
二:server.xml
1、user标签
user 用户配置节点
--name 登录的用户名,也就是连接Mycat的用户名
--password 登录的密码,也就是连接Mycat的密码
--schemas 数据库名,这里会和schema.xml中的配置关联,多个用逗号分开,例如需要这个用户需要管理两个数据库db1,db2,则配置db1,dbs
2、privileges标签
对用户的 schema以及表进行精细化的DML权限控制
--check 表示是否开启DML权限检查。默认是关闭。server.dtd文件中 说明可以有多个schema的配置。
--dml 顺序说明:insert,update,select,delete
db1的权限是update,select。
tb01的权限是啥都不能干。
tb02的权限是insert,update,select,delete。
其他表默认是udpate,select。
2. system标签
这个标签内嵌套的所有 property 标签都与系统配置有关。
字符集
处理线程数量,默认是cpu数量。
每次读取留的数量,默认4096。
创建共享buffer需要占用的总空间大小。processorBufferChunk*processors*100。
默认为0。0表示DirectByteBufferPool,1表示ByteBufferArena。
二级共享buffer是processorBufferPool的百分比,这里设置的是百分比。
全局ID生成方式。(0:为本地文件方式,1:为数据库方式;2:为时间戳序列方式;3:为ZK生成ID;4:为ZK递增ID生成。
是否开启mysql压缩协议。1为开启,0为关闭,默认关闭。
指定 Mysql 协议中的报文头长度。默认 4。
指定 Mysql 协议可以携带的数据最大长度。默认 16M。
指定连接的空闲超时时间。某连接在发起空闲检查下,发现距离上次使用超过了空闲时间,那么这个连接会被回收,就是被直接的关闭掉。默认 30 分钟,单位毫秒。
前端连接的初始化事务隔离级别,只在初始化的时候使用,后续会根据客户端传递过来的属性对后端数据库连接进行同步。默认为 REPEATED_READ,设置值为数字默认 3。
READ_UNCOMMITTED = 1;
READ_COMMITTED = 2;
REPEATED_READ = 3;
SERIALIZABLE = 4;
SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒。
清理 NIOProcessor 上前后端空闲、超时和关闭连接的间隔时间。默认是 1 秒,单
位毫秒。
对后端连接进行空闲、超时检查的时间间隔,默认是 300 秒,单位毫秒。
对后端所有读、写库发起心跳的间隔时间,默认是 10 秒,单位毫秒。
mycat 服务监听的 IP 地址,默认值为 0.0.0.0。
定义 mycat 的使用端口,默认值为 8066。
定义 mycat 的管理端口,默认值为 9066。
mycat 模拟的 mysql 版本号,默认值为 5.6 版本,如非特需,不要修改这个值,目前支持设置 5.5,5.6,5.7 版本,其他版本可能会有问题。
是否开启实时统计。1为开启;0为关闭 。
是否开启全局表一致性检测。1为开启;0为关闭 。
分布式事务开关。0为不过滤分布式事务;1为过滤分布式事务;2 为不过滤分布式事务,但是记录分布式事务日志。
默认是65535。 64K 用于sql解析时最大文本长度
以上举例的属性仅仅是一部分,可以配置的变量很多,具体可以查看SystemConfig这个类的属性内容。
System标签下的属性,一般是上线后,需要根据实际运行的情况,分析后调优的时候进行修改。
3. Firewall标签
顾名思义,这个就是关于防火墙的设置,也就是在网络层对请求的地址进行限制,主要是从安全角度来保证Mycat不被匿名IP进行访问
设置很简单,很容易理解,只要设置了白名单,表示开启了防火墙,只有白名单的连接才可以进行连接。
三:schema.xml
--schema 数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应
--dataNode 分片信息,也就是分库相关配置
--dataHost 物理数据库,真正存储数据的数据库
1、schema 标签
schema标签用来定义mycat实例中的逻辑库,mycat可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用schema标签来划分这些不同的逻辑库
如果不配置schema标签,所有表的配置会属于同一个默认的逻辑库。逻辑库的概念和MySql的database的概念一样,我们在查询两个不同逻辑库中的表的时候,需要切换到该逻辑库下进行查询。
--name 逻辑数据库名,与server.xml中的schema对应
--checkSQLschema 数据库前缀相关设置,当该值为true时,例如我们执行语句select * from TESTDB.company 。mycat会把语句修改为 select * from company 去掉TESTDB。
--sqlMaxLimit 当该值设置为某个数值时,每条执行的sql语句,如果没有加上limit语句,Mycat会自动加上对应的值。不写的话,默认返回所有的值。
需要注意的是,如果运行的schema为非拆分库的,那么该属性不会生效。需要自己sql语句加limit。
2、table 标签
1) childTable标签
这个标签定义表规则。
定义的表规则,在 schema.xml:
--name 属性指定唯一的名字,用于标识不同的表规则。 内嵌的 rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。
--columns 内指定要拆分的列名字。
--algorithm 使用 function 标签中的 name 属性。连接表规则和具体路由算法。当然,多个表规则可以连接到 同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。
2. function 标签
--name 指定算法的名字。常用分片算法有
1、简单取模 PartitionByMod
2、哈希取模 PartitionByHashMod
3 、分片枚举PartitionByFileMap
4、字符串范围取模:PartitionByPrefixPattern
--class 制定路由算法具体的类名字。
--property 为具体算法需要用到的一些属性。
本文摘录http://www.cnblogs.com/fxwl/p/7990906.html,