开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat - 配置文件详解 - rule.xml 配置详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/755/detail/13256
MyCat - 配置文件详解 - rule.xml 配置详解
内容介绍:
一、rule.xml 配置
二、table 标签
三、founction 标签
一、rule.xml 配置
比较重要的配置文件为 rule.xml,rule 是规则的意思,rule.xml 中定义所有拆分表的规则,在使用过程中可以灵活的使用分片算法,或者对同一个分片算法使用不同的参数,它让分片过程可配置化。rule.xml 定义的是 mycat 当中关于拆分表的规则。
rule.xml 的配置可以分为两个部分,table 部分和 founction 部分。
二、table 标签
<tableRule name="rule1">
<rule>
<columns>id</ columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
tableRule 指的是表的分片规则,name 是分片规则的名称。
这个名称只需要保证在 rule.xml 分片规则中是唯一的就可以,尽可能去做到见名知意,起有一定意义的名称。里面定义的就是具体的规则信息,columns 指的是在进行单片规则的时候,分片的字段是什么,根据哪个字段进行分片。比如说分片字段是 ID,那么就会根据 ID 进行分片。在下面配置的就是具体的分片算法,分片算法关联的是 function 中的内置。Function 的 name 值就是刚才的分片算法。
<function name="rang-longr""
class="io .mycat.route.function. AutoPartitionBvLonc>
<property name="mapFile">autopartition-long.txt</property></ function>
Mycat 当中定义的分片的函数,分片的具体功能类。mapFile 指的是外部的预设配置文件是哪个。
A. name :指定分片算法的名称
B. rule :定义分片算法的具体内容
c. columns :指定对应的表中用于分片的列名
D. algorithm : 对应 function 中指定的算法名称
三、founction 标签
<function name="murmur""
class=""io.mycat.route.function.PartitionByMurmurHash">
<property name="seed">0</property><!--默认是0 -->
<property name=" count">2</property>
<!-- 要分片的数据库节点数量,必须指定,否则没法分片-->
<property name""virtualEucketrimes">160</property>
<!--一个实际的数据库节点被映射为这么多虚拟节点,默认是160</--<property name="weightMapPile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。
<!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property>
用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的 murmur hash 值与物理节点
</ function>
A. name :指定算法名称,该文件中唯一
B. class :指定算法的具体类
c. property :根据算法的要求执行
Mycat 当中的所有分片规则实际上都是在 rule 中里面定义的,rule 里面分为两个部分,分别是 tablerule 和 Founction。tablerule 定义的就是基本的单片规则,founction 里面定义的是分片规则对应的分片的一个处理类,以及关联的外部配置文件。