官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解

刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件

具体都是干啥用的,大家看官方文档就行,我现在说的是想记录下自己对schema.xml的配置文件的一点理解

这个配置文件是用来配置分库分表用的,无疑显的很重要,那么搞明白它就显得更重要了

官方的给的原始配置,已经是带分库分表了,一开始看不懂配置文件让我们去搞明白的确很难,我也是研究了2天才有点端倪,目前只搞明白了读写分离

以下是我目前的配置

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
<dataNode name="dn1" dataHost="mycluster" database="app_house" />
<dataHost name="mycluster" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="86_M" url="172.17.3.86:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<readHost host="177_S" url="172.17.3.177:3306" user="root" password="123456" />
<readHost host="86_S" url="172.17.3.86:3306" user="root" password="123456" />
</writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
</mycat:schema>

首先需要定义总标签也就是schema标签,这个里面定义了虚拟库,以及连接属性,还有虚拟节点

name属性定义了虚拟库的名字,这个名字需要和server.xml定义一致

dataNode定义了虚拟节点名字,这个需要和下一级的dataNode标签里的name属性一致

然后我们来定义次级标签dataNode,这个里面定义了dataNode的名字也就是name属性,虚拟host属性,以及要使用后端物理机那个数据库

name属性定义dataNode的名字,该属性提供给schema里的dataNode使用,须一致

dataHost 可以自定义,下一级标签需要使用该信息

database 指定使用后端物理机的那个数据库,就是把上级标签定义的虚拟数据库映射到后端物理机上的那个真实的数据库,该数据库在后端物理机上的Mysql是真实存在的

最后我们定义第三级标签dataHost属性,这个里面定义了后端物理机的属性,地址,端口,以及用户名密码等等,还有该物理机是负责写还是读,等等

name 属性使用了上级标签也就是dataNode里的 dataHost的名字,这个必须保持一致

blance和writetype等请参阅官方文档,

<writeHost 标签定义后端物理机属性,定义了该物理机是可读还是可写,可以有多个。

heartbeat 定义了如何探测后端物理机是否存活,使用select user语句去探测

目前就总结了这么多,如果以后有还会再补充。

04-14 07:36