MyCat配置详解MyCat配置
1. l配置
1.1 user标签
1.1.1 property标签
<user name="test"> <!--⽤户名是test-->
<property name="password">password</property><!--密码是password-->
<property name="schemas">TESTDB</property><!-- 使⽤的schema是TESTDB-->⽰例说明
test⽤户密码是test
db1, db2可访问的schema有db1,db2
true是否只读
11111连接上限,降级权值
0是否对密码加密默认 0 否如需要开启配置 1,
1.1.2 privileges标签
对⽤户的 schema以及表进⾏精细化的DML权限控制。
<privileges check="false">
check表⽰是否开启DML权限检查。默认是关闭。
accessdenied歌曲dml顺序说明
iinsert,update,select,delete
<schema name="db1" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
db1的权限是update,select。
tb01的权限是啥都不能⼲。
tb02的权限是insert,update,select,delete。
mysql语句的执行顺序其他表默认是udpate,select。
1.2 system标签
这个标签内嵌套的所有 property 标签都与系统配置有关。
1.3 firewarll标签
防⽕墙配置
<firewall>
<whitehost>
phpmyadmin webshell
<host host="127.0.0.1" user="root"/>
<host host="127.0.0.2" user="root"/>
</whitehost>
<blacklist check="false">
</blacklist>
</firewall>
2. l配置
这个⽂件是MyCat最重要的配置⽂件,负责管理库,表,分⽚规则,DataNode ,DataSource。
主要包含的标签有:
schema,dataNode,dataHost
2.1 schema标签
<schema name="db1" checkSQLschema="false" sqlMaxLimit="100"></schema>
schema 标签⽤于定义 MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有⾃⼰的相关配置。可以使⽤ schema 标签来划分这些不同的逻辑库。
<schema name="TESTDB"  checkSQLschema="false"  sqlMaxLimit="100"></schema>
<schema name="USERDB"  checkSQLschema="false"  sqlMaxLimit="100"></schema>
<!--查询这两个不同的逻辑库中表的时候需要切换到该逻辑库下才可以查询到所需要的表 -->
heckSQLschema:
这个属性默认就是false,官⽅⽂档的意思就是是否去掉表前⾯的数据库的名称,”select * sttable” ,设置为true就会去掉db1。但是如果db1的名称不是schema的名称,那么也不会被去掉,因此官⽅建议不要使⽤这种语法。同时默认设置为false。
sqlMaxLimit:
当该值设置为某个数值时。每条执⾏的 SQL 语句,如果没有加上 limit 语句,MyCat 也会⾃动的加上
所对应的值。例如设置值为 100,执⾏”select * from test_table”,则效果为“selelct * from test_table limit 100;”。如果运⾏的schema为⾮切分库,该属性不会⽣效
2.1.1 table标签
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" ></table>
Table 标签定义了 MyCat 中的逻辑表,所有需要拆分的表都需要在这个标签中定义。
table 标签的相关属性:
属性说明
name该属性定义逻辑表的表名
dataNode该属性定义这个逻辑表所属的 dataNode, 该属性的值需要和 dataNode 标签中 name 属性的值相互对应。
rule该属性⽤于指定逻辑表要使⽤的规则名字,规则名字在 l 中定义,必须与 tableRule 标签中 name 属性属性值⼀⼀对应
ruleRequired该属性⽤于指定表是否绑定分⽚规则,如果配置为 true,但没有配置具体 rule 的话,程序会报错。
primaryKey该逻辑表对应真实表的主键
type该属性定义了逻辑表的类型,⽬前逻辑表只有“全局表”和”普通表”两种类型。全局表定义type=”global”,不定义的就是普通表。
autoIncrement主键是否⾃增长。
subTables分表,分表⽬前不⽀持Join。
needAddLimit是否⾃动添加limit,默认是开启状态。
2.1.2 childTable标签
<table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile">
<childTable name="c_a" primaryKey="ID" joinKey="customer_id" parentKey="id" />
</table>
childTable 标签⽤于定义 E-R 分⽚的⼦表。通过标签上的属性与⽗表进⾏关联。
属性说明:
属性说明
name⼦表的名称
joinKey⼦表中字段的名称
parentKey⽗表中字段名称
primaryKey该逻辑表对应真实表的主键
needAddLimit是否⾃动添加limit,默认是开启状态。
2.2 dataNode标签
dataNode 标签定义了 MyCat 中的数据节点,也就是我们通常说所的数据分⽚。⼀个 dataNode 标签就是⼀个独⽴的数据分⽚。
<dataNode name="dNode1"  dataHost="dHost128"  database="db1" ></dataNode>
⽰例中所表述的意思为:使⽤名字为 dHost128数据库实例上的 db1 物理数据库,这就组成⼀个数据分⽚,最后,我们使⽤名字 dNode1标识这个分⽚。
dataNode 标签的相关属性:
属性说明
name定义数据节点的名字,这个名字需要是唯⼀的
dataHost该属性⽤于定义该分⽚属于哪个数据库实例
database该属性⽤于定义该分⽚属性哪个具体数据库实例上的具体库
2.3 dataHost标签
该标签定义了具体的数据库实例、读写分离配置和⼼跳语句。
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
tcp和udp协议的区别
<writeHost  host="hostM1"  url="localhost:3306"  user="root" password="123456">
</writeHost>
</dataHost>
dataHost 标签的相关属性:
属性说明
name唯⼀标识 dataHost 标签,供上层的标签使⽤
excel快捷键大全maxCon指定每个读写实例连接池的最⼤连接。
minCon指定每个读写实例连接池的最⼩连接,初始化连接池的⼤⼩。
balance 负载均衡类型,⽬前的取值有4 种: “0”, 不开启读写分离机制,所有读操作都发送到当前可⽤的 writeHost 上。“1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1-
>S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
”2”,所有读操作都随机的在 writeHost、readhost 上分发。”3”,所有读请求随机的分发到 wiriterHost 对应的 readhost 执⾏,writerHost 不负担读压writeType 1. writeType=”0”, 所有写操作发送到配置的第⼀个 writeHost,第⼀个挂了切到还⽣存的第⼆个writeHost,重新启动后已切换后的为准,切换记录在配置⽂件中:dnindex.properties .2. writeType=”1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。默认0就好了!
dbType指定后端连接的数据库类型,⽬前⽀持⼆进制的 mysql 协议,还有其他使⽤ JDBC 连接的数据库。例如:mongodb、oracle、spark 等.
dbDriver指定连接后端数据库使⽤的 Driver,⽬前可选的值有 native 和 JDBC。使⽤ native 的话,因为这个值执⾏的是⼆进制的 mysql 协议,所以可以使⽤ mysql 和 maridb。其他类型的数据库则需要使⽤ JDBC 驱动来⽀持。
switchType “-1” 表⽰不⾃动切换; “1” 默认值,⾃动切换; “2” 基于 MySQL 主从同步的状态决定是否切换⼼跳语句为 show slave status; “3” 基于 MySQL galary cluster 的切换机制(适合集)(1.4.1)⼼跳语句为 show status like ‘wsrep%’.
tempReadHostAvailable如果配置了这个属性 writeHost 下⾯的 readHost 仍旧可⽤,默认 0 可配置(0、1)。
2.3.1 heartbeat标签
这个标签内指明⽤于和后端数据库进⾏⼼跳检查的语句。
例如:MYSQL 可以使⽤ select user(),Oracle 可以使⽤ select 1 from dual 等。
2.3.2 writeHost 和readHost 标签
这两个标签都指定后端数据库的相关配置,⽤于实例化后端连接池。唯⼀不同的是,writeHost 指定写实例、readHost 指定读实例。属性说明:
属性说明
host⽤于标识不同实例,⼀般 writeHost 我们使⽤M1,readHost 我们⽤S1。
url后端实例连接地址。Native:地址:端⼝ JDBC:jdbc的url
password后端存储实例需要的密码
user后端存储实例需要的⽤户名字
weight权重配置在 readhost 中作为读节点的权重
usingDecrypt是否对密码加密,默认0
3. l配置
<tableRule name="date">
<rule>
<columns>indate</columns>
<algorithm>sharding-by-date</algorithm>memorystream写入文件
</rule>
</tableRule>
<function name="sharding-by-date" class="ute.function.PartitionByDate">    <property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2019-01-01</property>
<property name="sPartionDay">30</property>
</function>
3.1 tableRule标签
属性 name指定唯⼀的名字,⽤于标识不同的表规则。
内嵌的 rule 标签则指定对物理表中的哪⼀列进⾏拆分和使⽤什么路由算法。
标签说明
columns要拆分的列名称
algorithm使⽤function标签中name属性,连接表规则的路由算法
3.2 function标签
name属性:指定算法名字
class属性:制定路由算法的类名
property标签:具体算法所需要⽤到的⼀些属性

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。