Mycat配置入门
Posted N!CE波
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat配置入门相关的知识,希望对你有一定的参考价值。
配置:
--bin 启动目录
--conf 配置文件存放配置文件:
--server.xml:是Mycat服务器参数调整和用户授权的配置文件。
--schema.xml:是逻辑库定义和表以及分片定义的配置文件。
--rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。
--log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。
--autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件
--lib MyCAT自身的jar包或依赖的jar包的存放目录。
--logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件
下面图片描述了Mycat最重要的3大配置文件:
逻辑库配置:
配置server.xml
添加两个mycat逻辑库:user,pay: system 参数是所有的mycat参数配置,比如添加解析器:defaultSqlParser,其他类推 user 是用户参数。
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">user,pay</property>
</user>
编辑schema.xml
修改dataHost和schema对应的连接信息,user,pay 垂直切分后的配置如下所示:
schema 是实际逻辑库的配置,user,pay分别对应两个逻辑库,多个schema代表多个逻辑库。
dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。
dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。
以下例子配置了两个writeHost为主从。
<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
<schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
<table name="order" dataNode="pay1,pay2" rule="rule1"/>
</schema>
<dataNode name="user" dataHost="host" database="user" />
<dataNode name="pay1" dataHost="host" database="pay1" />
<dataNode name="pay2" dataHost="host" database="pay2" />
<dataHost name="host" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select 1</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
<writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
</dataHost>
编辑MYCAT_HOME/conf/schema.xml文件,增加对物理数据表映射信息:
一、schema节点中各属性说明:
name:制定逻辑库名称;
checkSQLschema:如果为true,执行select * from TESTDB.travelrecord,则会修改为select * from travelrecord;即把表示schema的字段去掉;
sqlMaxLimit:当设置该值时,每条查询SQL语句,如果没有加上limit语句,MyCat也会自动的加上。例如值为100,则加上limit 100;
二、table节点中各属性说明:
name:指定物理表名称;
primaryKey:指定物理表主键名称;例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有的配置的DN上,如果使用该属性配置真实表的主键。那么MyCat会缓存主键与具体DN的信息,那么再次使用非主键进行查询的时候就不会进行广播式查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的DN,来获取数据。
autoIncrement:指定主键是否采用自增长策略,如果不需要自增长可不用配置;
dataNode:指定表所在的逻辑数据节点,如果有多个节点可使用逗号分隔,也可使用表 达式dn$0-99 指定在0-99这100个节点上都使用(如果是一个节点上有多个库可使用db1$0-99);
rule:指定路由规则;
ruleRequired:该属性用于指定表是否绑定分片规则,如果为true,但是没有配置rule的话,程序会报错
type:定义逻辑表的类型,目前只有“全局表”和“普通表”两种类型。
全剧表:global/普通表:不指定该值
needAddLimit:指定表是否需要自动的在每条语句加上limit 100限制,如果语句中有limit则不会在次添加,默认true
三、childTable节点中各属性说明:
name:定义子表的表名
joinKey:插入子表的时候会使用这个列的值查找父表存储的数据节点
parentKey:属性指定的值一般为与父亲建立关系的列名。程序首先会获取joinKey的值,再通过parentKey属性指定的列名产生查询语句,通过执行该语句得到父表存储在哪个分片上,从而确定子表存储的位置。
primaryKey:同table标签一样
needAddLimit:同table标签一样
逻辑数据节点与物理主机配置:
四、dataNode节点中各属性说明:
name:指定逻辑数据节点名称;
dataHost:指定逻辑数据节点物理主机节点名称;
database:指定物理主机数据库。如果一个节点上有多个库,可使用表达式db$0-99,表示指定0-99这100个数据库;
五、dataHost 节点中各属性说明:
定义了具体的数据库实例额、读写分离配置和心跳语句。
name:物理主机节点名称;
maxCon:指定物理主机服务最大支持1000个连接;指定每个读写实例都会使用这个属性来实例化出连接池的最大连接。
minCon:指定物理主机服务最小保持10个连接;指定每个读写实例连接池的最小连接,初始化连接池的大小
writeType:指定写入类型;
l 0,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
l 1,所有写操作都随机的发送到配置的writeHost,1.5后废除不推荐
dbType:指定数据库类型;
dbDriver:指定数据库驱动;目前可选的值有native和JDBC。
balance:指定物理主机服务的负载模式。负载均衡类型,目前取值有3种:
l 0,不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
l 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡;
l 2,所有的readHost与writeHost都参与select语句的负载均衡,也就是说,当系统的写操作压力不大的情况下,所有主机都可以承担负载均衡;
l 3,所有读请求随机的分发到writeHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
switchType:
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换
心跳语句为 show slave status
3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1)
心跳语句为show status like ‘sweep%\'
tempReadHostAvailable:
如果配置了这个属性 writeHost下面的readHost仍旧可用,默认0,可配置(0、1)
一个dataHost元素,表明进行了数据同步的一组数据库,DBA需要保证这一组数据库服务器是进行了数据同步复制的。writeHost相当于Master DB Server,而其下的readHost则是与从数据库同步的Slave DB Server。当dataHost配置了多个writeHost的时候,任何一个writeHost宕机,Mycat 都会自动检测出来,并尝试切换到下一个可用的writeHost;
MyCAT支持高可用性的企业级特性,根据您的应用特性,可以配置如下几种策略:
l 后端数据库配置为一主多从,并开启读写分离机制;
l 后端数据库配置为双主双从(多从),并开启读写分离机制;
l 后端数据库配置为多主多从,并开启读写分离机制;
后面两种配置,具有更高的系统可用性,当其中一个写节点(主节点)失败后,Mycat会侦测出来(心跳机制)并自动切换到下一个写节点,MyCAT在任何时候,只会往一个写节点写数据;
下面是典型的双主双从的Mysql集群配置:
六、heartbeat标签
这个标签指明用于和后端数据库进行心跳检查的语句。
Mysql可以使用 select user()
Oracle select 1 from dual
主从切换必须是:show slave status
七、writeHost标签、readHost标签
如何writeHost指定的后端数据库宕机,那么该下面的所有readHost都不可用。
host:标识不同的实例。一般writeHost用*M1,readjust用*S1
url:实例连接地址
user :用户名
password:密码
weight:权重配置在readhost中作为读节点的权重(1.4以后)
usingDecrypt:是否对密码加密默认0 否,开启 1
以上是关于Mycat配置入门的主要内容,如果未能解决你的问题,请参考以下文章