1.0"?>
<!DOCTYPE mycat:schema SYSTEM
"schema.dtd">
<mycat:schema xmlns:mycat=
"http://org.opencloudb/">
<schema name=
"weixin" checkSQLschema=
"false" sqlMaxLimit=
"100" dataNode=
"weixin" >
<schema name=
"yixin" checkSQLschema=
"false" sqlMaxLimit=
"100" dataNode=
"yixin" />
<dataNode name=
"dn1" dataHost=
"localhost0" database=
"weixin" />
<dataNode name=
"dn2" dataHost=
"localhost0" database=
"yixin" />
<dataHost name=
"localhost0" maxCon=
"450" minCon=
"10" balance=
"1"
writeType=
"0" dbType=
"mysql" dbDriver=
"native">
<heartbeat>
select user()</heartbeat>
<!-- can have multi
write hosts -->
<writeHost host=
"hostM1" url=
"localhost:3306" user=
"root" password=
"123456" />
<readHost host=
"hostS1" url=
"localhost:3307" user=
"test" password=
"123456" />
</dataHost>
</mycat:schema>
首先是schema name = "weixin",这一项配置以后的效果就是,当MySQL客户端连接MyCAT时,通过Show DATABASE命令,能看到的数据库的,名字,
比如在这个配置文件里面,就配置了两个数据库,weixin和yixin,这两个库各自包含一张user表。
注意:MyCAT对外端显示出来的数据库,和数据库里面的表,全部在schema里面配置,没有写在这个里面的表或者库,即使后端的MySQL里面存在,也无法通过MyCAT去访问,不过MyCAT不会去定义具体表的结构。
然后是datanode,这个属性指定了schema的表,具体存放在哪个数据库,比如这个配置里面,指定了dn1的数据节点位于localhost0,这个数据库实例的名为weixin的数据库,dn2同理。
datahost列出了实际的后端MySQL集群的具体信息,writehost是负责写入数据的MySQL实例,writehost是负责读的MySQL实例,如果两个实例的具体信息写成一样,那就意味着后端使用单实例,如果配置成不同的实例,那么就在两个实例之间配置主从同步,然后通过MyCAT实现读写分离
对数据库进行垂直切分,主要由schema.xml来完成,这个以后再详细介绍。
rule.xml如示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="rule">
<rule>
<columns>user_id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="org.opencloudb.route.function.PartitionByLong">
<property name="partitionCount">2</property>
<property name="partitionLength">512</property>
</function>
</mycat:rule>
rule.xml里面的配置主要用于对表的水平切分,MyCAt本身提供了很多种水平切分的策略,这个示例显示的是取模分片,总共分成四片,user_id对1024取模,然后分成两片,每一片512个。
其他的切分策略以后再详细介绍
server.xml如示例
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="sequnceHandlerType">0</property>
</system>
<user name="test">
<property name="password">test</property>
<property name="schemas">weixin,yixin</property>
</user>
</mycat:server>
server.xml里面配置MyCAT的逻辑库参数,如示例,配置的就是逻辑库weixin和yixin的登录用户名和密码
这个XML里面其实还有一些有关于MyCAT性能调整的参数,不过略去了,东西太多,以后再详细介绍
----------------------------------------------------------------------华丽的分割线-------------------------------------------------------------
简单的MyCAT搭建大致上就包括这些内容,现在讲讲使用一段时间以后,对MyCAT的一些总结;
1.MyCAT的性能表现还是不错的,这几天一直对MyCAT的各方面进行测试,发现MyCAT作为一个代理,虽然是在JAVA虚拟机上面运行,但是面对接近9K的QPS的峰值的时候,本身并没有出现无响应或者丢失连接的问题;
2.MyCAT对前端显示的所有的库,表,全部由schema来配置,但是本身不定义表结构,这使得后端的表结构如果出现不一致,MyCAT前端是察觉不到的,不太方便吧;
3.第二点的不方便,也反映了一点,没有配置到schema的表,完全无法通过MyCAT去操作,这也算是安全性良好的一个表现吧;
4.之前说SQL Executor没感觉到,也是因为在一些测试中,发现MyCAT更像一个提供转发和结果合并功能的代理,只是对SQL和结果进行了process,不过这个需要去看源代码才知晓细节了。
这次只打算写这么多,关于MyCAT的一些细节介绍,留给下一章~
转自
MySQL分布式集群之MyCAT(一)简介(修正)-wangwenan6-ITPUB博客
http://blog.itpub.net/29510932/viewspace-1664499/
MySQL分布式集群之MyCAT(一)简介【转】
标签:测试结果 table cat ble 安全性 变量 host name org 离职