MyCat配置详解
MyCat配置1. server.xml配置Server.xml保存了mycat需要的所有的系统配置信息,代码映射为SystemConfig类。 标签主要有三个:
1.1 user标签1.1.1 property标签<user name="test"> <!--用户名是test--> <property name="password">password</property><!--密码是password--> <property name="schemas">TESTDB</property><!-- 使用的schema是TESTDB-->
1.1.2 privileges标签对用户的 schema以及表进行精细化的DML权限控制。 <privileges check="false"> check表示是否开启DML权限检查。默认是关闭。 dml顺序说明
<schema name="db1" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema>
1.2 system标签这个标签内嵌套的所有 property 标签都与系统配置有关。 1.3 firewarll标签防火墙配置 <firewall> <whitehost> <host host="127.0.0.1" user="root"/> <host host="127.0.0.2" user="root"/> </whitehost> <blacklist check="false"> </blacklist> </firewall> 2. schema.xml配置这个文件是MyCat最重要的配置文件,负责管理库,表,分片规则,DataNode ,DataSource。 主要包含的标签有:
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 * from db1.testtable” ,设置为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 中的逻辑表,所有需要拆分的表都需要在这个标签中定义。
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 分片的子表。通过标签上的属性与父表进行关联。
2.2 dataNode标签dataNode 标签定义了 MyCat 中的数据节点,也就是我们通常说所的数据分片。一个 dataNode 标签就是一个独立的数据分片。 <dataNode name="dNode1" dataHost="dHost128" database="db1" ></dataNode> 示例中所表述的意思为:使用名字为 dHost128数据库实例上的 db1 物理数据库,这就组成一个数据分片,最后,我们使用名字 dNode1标识这个分片。
2.3 dataHost标签该标签定义了具体的数据库实例、读写分离配置和心跳语句。 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"> </writeHost> </dataHost> dataHost 标签的相关属性:
2.3.1 heartbeat标签这个标签内指明用于和后端数据库进行心跳检查的语句。 2.3.2 writeHost 和readHost 标签这两个标签都指定后端数据库的相关配置,用于实例化后端连接池。唯一不同的是,writeHost 指定写实例、readHost 指定读实例。 属性说明:
3. rule.xml配置rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。 <tableRule name="date"> <rule> <columns>indate</columns> <algorithm>sharding-by-date</algorithm> </rule> </tableRule> <function name="sharding-by-date" class="io.mycat.route.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 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。
3.2 function标签name属性:指定算法名字 class属性:制定路由算法的类名 property标签:具体算法所需要用到的一些属性 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |